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.

[参考译文] TMS320F280039:OnTargetConnect 挂起:等待 MEMCFG_O_DXINITDONE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1351081/tms320f280039-ontargetconnect-hangs-waiting-for-memcfg_o_dxinitdone

器件型号:TMS320F280039
主题中讨论的其他器件: UNIFLASH

您好!

我遇到了不便、希望我可以获得一些帮助。

我将 TMS320F280039 MCU 与 XDS200 USB 调试器一起使用。

当我在 CCS 12.7.0.00007中启动调试会话时,系统将在 OnTargetConnect () GEL 步骤挂起。  如果我单击"取消"、连接会话将继续、然后我可以开始调试。  我已 将打印内容添加到 GEL 脚本中、似乎下面这行的 值永远不会计算为 true。

    while(!(*(int *) (MEMCFG_BASE + MEMCFG_O_DXINITDONE) == 0x3));   /* Wait for InitDone Status       */

有人能解释一下为什么 M0/M1 RAM 初始化不能成功发生吗?  如果我启用了 JTAGLock 并配置了 SecureFlash、也不值得这么做。

我已经从 f280039.GEL 文件附加了整个 OnTargetConnect 函数。

谢谢。

科林

OnTargetConnect()
{

    *(int *)(MEMCFG_BASE + MEMCFG_O_DXINIT)  = 0x0003;               /* RAM INIT FOR M0/M1 Memory      */
    while(!(*(int *) (MEMCFG_BASE + MEMCFG_O_DXINITDONE) == 0x3));   /* Wait for InitDone Status       */

    *(int *)(MEMCFG_BASE + MEMCFG_O_LSXINIT) = 0x00FF;               /* RAM INIT FOR LS1..LS7  Memory  */
    while(!(*(int *) (MEMCFG_BASE + MEMCFG_O_LSXINITDONE) == 0xFF)); /* Wait for InitDone Status       */

    *(int *)(MEMCFG_BASE + MEMCFG_O_GSXINIT) = 0x000F;               /* RAM INIT FOR GS0.GS3 Memory    */
    while(!(*(int *) (MEMCFG_BASE + MEMCFG_O_GSXINITDONE) == 0xF));  /* Wait for InitDone Status       */

    GEL_TextOut("\n\nRAM initialization done\n\n");

    if (GEL_IsInRealtimeMode())     /* If in real-time-mode */
    {
    }
    else                            /* Put device into C28x Mode */
    {
        C28x_Mode();
    }

    f280039_Memory_Map();        /* Initialize the CCS memory map */

    /* Check to see if CCS has been started-up with the DSP already */
    /* running in real-time mode.  The user can add whatever        */
    /* custom initialization stuff they want to each case.          */

    if (GEL_IsInRealtimeMode())     /* Do real-time mode target initialization */
    {

    }
    else                            /* Do stop-mode target initialization */
    {
        GEL_Reset();                /* Reset DSP */
    }
}

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

    您好!

    [quote userid="54433" url="~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1351081/tms320f280039-ontargetconnect-hangs-waiting-for-memcfg_o_dxinitdone 能否有人解释为什么 M0/M1 RAM 初始化不能成功进行?  如果我启用了 JTAGLock 并配置了 SecureFlash、那么也不值得。

    我看不出 M0/M1无法进行初始化的任何明显原因。  如果您启用了 JTAGLOCK、如何连接到 CCS? 是否解锁 JTAG 并尝试连接?

    维维克·辛格

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

    作者:Vivek、

    JTAG 密码作为(我想您?)放置在目标配置(.ccxml)文件中。 进行了描述  。

    使用 uniflash 命令行独立工具时、我也会看到此问题。 (具有相同的目标配置文件)。 这实际上是我将注释放在.gel 文件中、可以验证其是否滞留在 while 1中。

    科林

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

    您是否在多个电路板上看到此问题?

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

    可以。  控制卡上

    您能帮助我了解 JTAG 解锁过程吗?  密码是何时传输到器件的?  复位后是否需要重新初始化。  (任何形式? nTRST、GEL_RESET、?)

    沿着同样的行、如果我们能够读取`MEMCFG_O_DXINITDONE`寄存器值、我想这意味着 JTAG 密码根本不是我们的问题吗?

    科林

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

    沿着同样的行、如果我们能够读取`MEMCFG_O_DXINITDONE`寄存器值、我想这意味着 JTAG 密码根本不是我们的问题吗?

    科林

    [/报价]

    这是正确的理解。 是否仅在使用 JTAGLOCK 功能对器件进行编程后才会出现此问题?

    维维克·辛格

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

    在我启用 JtagLock 和 Secure Boot 后、问题开始出现。  (同时发生)

    因此、我不确定是哪种功能导致了这个问题。  我今天晚些时候可以尝试用全新的电路板来运行一些实验。

    有什么想法、说明为什么安全启动流程会导致此行为?

    谢谢!

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

    您能否在采用相同 CCS 设置的全新器件上试用此方法、并告知我结果。

    关于安全启动流程为何会导致此行为的任何想法?

    我认为安全启动与此问题之间没有任何联系。 如果您在 GEL 文件中注释掉这一行、然后连接到 CCS、并在 CCS 内存监视窗口中检查 INIT done for M0/M1的值。 您看到了什么价值?

    维维克·辛格

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

    好的、我弄清楚了导致问题的原因。

    我们的代码将配置 RAM 段的访问限制、以便 C28x 或 CLA 只能访问特定的代码段。   

    在我们设置配置后、我们使用`MemCfg_lockConfig`锁定扇区。

    如果 LOCK 位被置位、那么调试器之后运行时、初始化请求失败、系统阻断、等待初始化完成。

    似乎在尝试在这些器件上写入 RAM 之前、GEL 文件中应该有一个设置用于解锁 RAM。

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

    很高兴知道您能够对其进行调试。 我将就检查 RAM 初始化的 LOCK 和提交部分向我们的软件团队提供反馈。

    感谢您的反馈。

    此致、

    维维克·辛格

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

    谢谢!