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.

[参考译文] TMS570LC4357:处理器卡在暂停的&quot 中;安全状态"?

Guru**** 2477065 points
Other Parts Discussed in Thread: TMS570LC4357, HALCOGEN

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1006744/tms570lc4357-processor-getting-stuck-in-halted-safe-state

器件型号:TMS570LC4357
主题中讨论的其他器件: HALCOGEN

我的 Launchpad XL2 (TMS570LC4357)有问题。  当处理器关闭看门狗并配置为复位时、系统似乎卡在"安全状态"中、系统暂停但不会再次启动(请注意、这不是中止)。  如果我在调试器处于该状态时连接调试器、我会看到 PC 设置为0、并且可以访问其他寄存器(例如确认由于看门狗而使系统复位)。  但是、在我按下"Reset"或 "PORRST"按钮或对器件进行下电上电之前、系统不会启动。  此外、当我猜测发生总线故障时、这似乎也会发生、即系统进入此停止状态。 我无法确认这确实是一个总线故障、因为当我尝试使以太网正常工作并且无法进行充分调试时、它会随机发生。

我有两个与此相关的问题。  首先、如何将系统配置为自动重新引导、而不是陷入此"安全状态"?  对于总线故障的情况、我更愿意触发中断、以便我可以检查导致问题的原因、是否有办法为此配置系统?  我一直在调查 ESM、但没有任何文档或界面会向我指出有用的方向。

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

    您好、Micah、

    在器件复位看门狗后、通过 HALCOGen 生成的 sys_startup.c 无法正常工作。  

    系统、VIM、ESM 等未被初始化。 请在用户代码区域15之间插入初始化代码。

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

    您好 QJ、

    感谢您的回答。  但是、在建议的部分中输入代码对卡在该停止/"安全状态"没有影响。

    我想知道这种"安全状态"是什么、以及如何防止卡在其中;正如在中所述、我希望系统重新启动而不卡在其中。  当程序计数器(PC)处于该状态时、程序计数器(PC)为0、LR 为0xC 的一些附加信息。  此外、从闪存读取、即从0x0和更高版本读取存储器是不可靠的、有时我可以读取值、有时调试器会将其读取为全零。

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

    这里有两个问题。  首先是 QJ 指出的问题。  其次、是在 hL_sys_intvecs.asm 中定义的默认中断处理程序、我强烈建议将其更改为:

    以前、除了 resetEntry 之外的所有中断处理程序都没有得到充分定义、因此、如果它们被激活、它们将进入无限复位循环。  然后、无限复位循环首先会丢失有关导致中断的原因的所有信息。  通过让它们指向 phpomInterrupt、用户可以连接调试器或自定义 phpomInterrupt 以报告错误。

    此外、关于第一个问题、我还强烈建议更改 hl_sys_startup.c、以便针对所有复位条件进行正确的引导、然后将复位源/原因报告给代码的应用层。  一种方法是将 switch 语句全部删除、或将主启动条件更改为使用"default:"并删除其他情况。