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:如果引导加载程序从特定地址跳转到固件、则 Frimware 会在一段时间后复位

Guru**** 2460850 points
Other Parts Discussed in Thread: TMS570LC4357

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1202836/tms570lc4357-frimware-resets-after-some-time-if-bootloader-jumped-from-certain-addresses-into-the-firmware

器件型号:TMS570LC4357

我在我的 TMS570LC4357上遇到非常奇怪的行为。

如果我的引导加载程序的分支("BX")汇编器指令跳转到固件地址(0x18020)位于地址0xe804和0xe814之间、则我的固件在初始化后的某个时间点复位。

我可以重现此行为与不同的固件,所有测试的固件工作无瑕疵,只要分支指令小于0xe804大于0x3814的地址。

如果此地址位于这些地址之间、则相同的固件二进制文件将重置其他地址。 添加"NOP"指令将地址移动到0x3814以上足以解决此问题

有人以前曾见过这种行为吗? 这种情况发生的原因有什么想法吗?

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

    您好、Georg:

    复位后、您可以 在_c_int00 ()处检查 SYSECR 的值吗? 重置后,代码将运行到 while ()循环,然后暂停代码执行,并读取 rstSrc 值。

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

    SYSECR = 0x4000

    rstSrc = NO_RESET

    对我来说、似乎不应该进行重置、我感到困惑  

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

    您好、Georg:

    您是否有可能共享完整项目? 如果是机密信息、那么您可以尝试使用新的最低版本项目来引发问题吗?

    --

    谢谢。此致、
    Jagadish。