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.

[参考译文] RM57L843:看门狗或软件复位后数据中止

Guru**** 2514285 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1540728/rm57l843-data-abort-after-watchdog-or-software-reset

部件号:RM57L843


工具/软件:

在解释我遇到的问题之前:

  • MCU 上运行引导加载程序和应用程序
  • 我们之前使用该费用在 bootlaoder 和应用程序之间传递信息。 最近、我已在复位过程中切换到持久 RAM、以便在引导加载程序和应用程序(共享 RAM 存储器)之间传递信息
  • 共享存储器还用于存储应用数据、以便在发生看门狗或软件复位时可以恢复该数据。 此功能似乎导致问题(至少在问题开始时)
  • 系统仅在应用中使用 SAFERTOS
  • 我修改了启动序列、以确保不会对 wattchdog 和软件复位执行_memInit_。
  • 在引导加载程序和应用程序中均启用看门狗。 为了防止看门狗在初始化应用程序时复位 MCU、我们在跳转到应用程序之前执行软件。 这意味着应用中的看门狗复位很快就会发生第二次复位 (SW)、然后再跳转到应用程序。
  • 我修改了引导加载程序中的异常矢量、以便我们可以在应用程序中执行 SVC 处理程序(引导加载程序除了复位处理程序外不使用异常矢量)

发生的情况是、系统在启动 SAFERTOS 调度程序时会生成数据故障。 由于看门狗此时启动、因此看门狗将复位系统并保持无限循环。

这是我在调查中发现的

  • 重启电源似乎可以暂时解决问题。 它适用于几次重新引导、但随后会再次启动、并在每次引导后继续发生。 我们仍在开发中、因此将 J-Link 探针连接到电路板(如果问题发生时我们连接到目标,我并未注意)。 此问题发生在多个连接/断开连接/重新编程后。
  • 调用_memInit_ 可修复问题(直到下一次软件/看门狗复位)。 这不是合适的解决方案、因为我们需要保留数据。
  • 如果在启动调度程序之前禁用访问应用程序数据的代码、则不再获得数据中止。  访问共享内存时出现问题。

我找到了这个主题、似乎遇到了相同的问题、但我找不到任何可以解决我的问题的内容。
https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/693755/tms570lc4357-data-abort-after-software--or-watchdog-triggered-reset

我附上了一些可能有帮助的文件。 如果您需要更多信息来解决此问题、请告诉我。

提前感谢您的帮助。

Michal