This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TMS320F28030:闪存编程配置

Guru**** 2389930 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/743191/tms320f28030-flash-programing-config

器件型号:TMS320F28030

使用 XDS100 、是否需要将引脚 GPIO 12和17短接至 GND、以便将 TRST 拉至高电平

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    GPIO12和 GPIO17与 TRSTn 引脚无关。 因此、我不理解为什么您需要将 TRSTn 的这些引脚短接至接地。

    这一问题可能更好地以适当的背景加以回答。 请提供有关您的电路板的详细信息? 是定制板(还是) TI 板?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    借助定制 PCB 和 XDS100、是否需要对器件进行配置以对闪存进行编程、如果需要、如何进行配置?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    如果您尝试使用 JTAG/CCS 对闪存进行编程、则无需进行任何配置。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    对器件进行下电上电、器件的行为就好像未对其进行编程一样、这就是为什么会发生这种情况
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    编程闪存不需要任何配置。 但是、如果您希望在独立模式下运行器件、则需要将器件配置为引导至闪存。

    processors.wiki.ti.com/.../FAQs
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    在下载到闪存或从闪存运行时、是否需要定义 GPIO12和 GPIO17 (独立)?
    谢谢
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    要独立运行此器件、您需要将 GPIO34和 GPIO37拉至高电平。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    如果该引脚已分配为输出、则能否通过电阻器将其拉高、然后用作 GPIO
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是的、您可以有上拉电阻器。 但是、请确保具有弱上拉电阻。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    使用的内部上拉电阻、而不是外部上拉电阻
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    复位时、针对引导模式选择引脚的内部上拉电阻器被启用。 仍然建议在外部进行引导模式配置、以避免任何噪声对这些引脚的影响。

    此致、
    曼诺伊
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    大家好、Manoj、两个引脚都增加了4.7K 上拉电阻。 在7个定制板中、有一个是我无法闪存的。 我应该检查什么?
    控制板使用开关来启用上拉。

    我还应该检查哪些其他项目?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    JW、

    很高兴知道您能够对闪存进行编程(7个器件中的6个)并独立运行您的应用代码。

    在具有闪存编程问题的电路板上、报告了什么错误消息?

    正如我在这篇文章中提到的、要在 CCS 中对闪存进行编程、您无需任何 GPIO 配置。 但是、如果您尝试独立运行、则需要在 GPIO34/37上拉电阻。

    此致、
    曼诺伊
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!将报告的错误标记为 flash.out 加载失败。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您是否已尝试另一个.out 文件? 您是否能够将另一个.out 文件编程到闪存中?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    大家好、Manoj、上电后、GPIO37和 GPIO 34为高电平(20K 电阻器)、TRST 为高电平。 如果 TRST 短接、则器件会正确引导、固件会按预期运行。

    加电时、如果 GPIO37和 GPIO 34被拉至高电平并且 TRST 为低电平、则器件会加载初始化值并发生错误行为。

    我的理解是、当 TRST 为低电平(上电时)时、器件将读取 GPIO 并从闪存引导、以及
    RAM 将被初始化。

    我错过了什么?

    谢谢
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    JW、

    当 JTAG 被连接(TRSTn = 1)时、它遵循仿真启动、GPIO34/GPIO37的状态无关紧要。 但是、当 JTAG 被断开时(TRSTn = 0)、GPIO34/GPIO37的状态会影响引导模式选择。

    如果 GPIO34 = GPIO37 = 1且 TRSTn = 0、加电时、代码在执行 BootROM 代码后开始从闪存执行。

    此致、
    曼诺伊
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    大家好、Manoj、这对我来说没有太大意义。

    加电时、JTAG 未连接 GPIO34 = GPIO37 = 1且 TRSTn = 1。
    在 JTAG 未连接上电后、GPIO34 = GPIO37 = 1且 TRSTn = 0、其中 TRST 短接至地、其表现如预期的那样。
    你怎么看?

    BTW 这是定制板、
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    很抱歉、我不理解您的论点。 请以不同的方式重新安排问题。

    您能否说明您是否能够成功对闪存进行编程? 我认为问题只在于在连接 JTAG 时从闪存执行代码。

    此致、
    曼诺伊
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我可以对闪存进行编程。 要从闪存引导、请将 TRSET 短接。
    步骤顺序:

    1.打开系统电源
    GPIO34 = GPIO37 = 1且 TRSTn = 1
    3.等待~5秒
    4、 TRST 到接地短路 GPIO34 = GPIO37 = 1且 TRSTn = 0。
    5.从闪存引导,不包括源代码。

    6.发送测试脚本通过

    测试2.

    1 TRST 短接至接地 GPIO34 = GPIO37 = 1且 TRSTn = 0

    2. 打开系统电源  
    3.等待~5秒  
    5. 发送测试脚本 失败


     在 第1种情况下    、在加电5秒后将 TRST 短接至接地、 通过。

     在 第2种情况下     、在接通电源之前将 TRST 短接至接地 、失败

    谢谢
    这是正常行为吗?

    谢谢

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    JW、

    在独立模式下运行时、为什么要连接仿真器(TRSTn)? 您只需要在编程/开发/调试会话期间连接仿真器。

    要在独立模式下运行、只需执行以下操作:-

    1) 1)设置 GPIO34 = GPIO37上的弱上拉和 TRSTn = 0上的弱下拉
    2) 2)打开系统电源。 这将自动在闪存中运行应用程序代码。

    此致、
    曼诺伊
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、仿真器未连接、 我需要解决 这个问题  、我可以直接与您联系

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    JW、

    否、这不是正常行为。

    案例2应能够以独立模式运行您的应用程序代码。 案例1对我来说真的毫无意义。 此外、我不明白为什么您必须等待5秒。 5秒是我们调用测试失败之前的超时条件吗?

    此致、

    曼诺伊

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    时间是任意的、我可以等待5秒或10分钟、结果是相同的。

     以 独立模式启动
    "设置 GPIO34 = GPIO37上的弱上拉和 TRSTn = 0上的弱下拉"、代码无法正确运行

    启动仿真模式 、然后转换至独立模式
    "设置 GPIO34 = GPIO37上的弱上拉和 TRSTn = 1"上的弱下拉、等待、代码正确运行。

    在所有情况下  、仿真器都会断开连接
     
    建议查看位置

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我看不到"启动仿真模式然后转换到独立模式"是如何工作的。 这毫无意义。 我只能想到这些引脚上的噪声。

    此致、
    曼诺伊
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、TRST 在启动后被读取、问题是否在 CMD 文件中?


    存储器

    第0页:/*程序内存*/
    /*内存(RAM/FLASH/OTP)块可移动到第1页进行数据分配*/

    RAML0:origin = 0x008000、length = 0x000800 //片上 RAM 块 L0 */
    RAML1:origin = 0x008800,length = 0x000400 //片上 RAM 块 L1 */
    OTP:origin = 0x3D7800,length = 0x000400 //片上 OTP 一次性可编程内存*/

    闪存:origin = 0x3E8000,length = 0x00FF80 //闪存,所有扇区组合*/
    csm_RSVD:origin = 0x3F7F80,length = 0x000076 // FLASHA 的一部分。 使用所有0x0000 E 进行编程。*/
    BEGIN_FLASH:origin = 0x3F7FF6,length = 0x000002 /* FLASHA 的一部分。 用于"引导至闪存*/
    CSM_PWL_P0:origin = 0x3F7FF8,length = 0x000008 // FLASHA 的一部分。 CSM 密码位置在*/中

    IQTABLES:origin = 0x3FE000,length = 0x000B50 //引导 ROM 中的 IQMath 表*/
    IQTABLES2:origin = 0x3FEB50,length = 0x00008C //引导 ROM 中的 IQMath 表*
    IQTABLES3:origin = 0x3FEBDC,length = 0x0000AA /*引导 ROM 中的 IQMath 表*/

    ROM:origin = 0x3FF27C,length = 0x000D44 //引导 ROM */
    复位:origin = 0x3FFFC0,length = 0x000002 //引导 ROM 的部分*/
    向量:origin = 0x3FFFC2,length = 0x00003E //引导 ROM 的部分*/


     *
    RAMM2:origin = 0x008C00,length = 0x000400 //片上 RAM 块 L2 */
    RAML3:origin = 0x009000,length = 0x001000 //片上 RAM 块 L3 */
    FLASHB:origin = 0x3F4000,length = 0x002000 //片上闪存*/



     

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    嗯、我不确定。

    您能否尝试以下操作:-

    1) 1)连接到设备
    2) 2)将 PC 设置为0x3F7FF6
    3) 3)点击"run"、查看您的代码是否按预期执行。

    此致、
    曼诺伊
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

     输入0x3F7FF6 、结果:0x3F7FF6  

     跳转到 InitSysCtrl()

    跳至 Intro0clDel()

    跳转至 Initperipheral 时钟

    跳转至 GPIO initPie 矢量表

    跳转至 initCpu 计时器

    使用调试器、它会按预期执行

     是否  需要在脚本中选择 EMU 模式的"EMU 模式"剂量?

    我是否需要关注 GEL、请参阅以下内容:

     if (GEL_IsInRealtimeMode())  /* If in Real-time mode */
       {
       }
       else   /*将器件置于 C28x 模式*/
       {
            C28x_Mode();
       }
       unlock_csm();
       DEVICE_Cal ();
       CLA_Clock_Enable();            //启用 CLA 时钟-允许调试器在复位后设置 CLA 断点*/
    // 在复位时取消注释所需的引导模式:    
    //   EMU_BOOT_SARAM ();          //设置 EMU 引导变量-引导至 SARAM *
     // EMU_BOOT_FLASH ();          //设置 EMU 引导变量-引导至闪存*

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    JW、

    如果我之前的建议有效(意味着您的应用程序代码按预期工作)、则案例2条件应按原样工作。

    GEL 脚本仅在器件连接到 CCS 时影响引导 ROM 代码的执行、而不影响独立运行时的执行。

    请使用以下参考材料获取更多调试提示。

    www.ti.com/.../spra958l.pdf

    processors.wiki.ti.com/.../FAQs

    此致、
    曼诺伊
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    JW、

    您是否有机会对 OTP_KEY / OTP_BMODE 进行了编程?

    此致、
    曼诺伊
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我尚未对 OTP_KEY/OTP_MODE 进行编程。

    在情况1中:通过 SPI 接收的数据被一个位关闭、导致故障。

    ISR 代码:
    iSpiRxData = SpiaRegs.SPIRXBUF; //读取数据
    iSpiRxDataFlag = true;

    SpiaRegs.SPIFFRX.bit.RXFFOVFCLR=1;//清除溢出标志
    SpiaRegs.SPIFFRX.bit.RXFFINTCLR=1;//清除中断标志
    PieCtrlRegs.PIEACK.All|=0x20; //发出 PIE ACK
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    JW、

    案例2是在独立模式下运行应用程序所需的条件。 因此、我建议您调试 case2、而不是 case1。

    此致、
    曼诺伊
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    JW、

    此问题是否已解决? 我可以关闭此主题吗?

    此致、
    曼诺伊