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.

[参考译文] RM46L852:CPU STC 运行时:CPU 寄存器备份和恢复

Guru**** 2394295 points
Other Parts Discussed in Thread: LAUNCHXL2-RM46, RM46L852

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/621652/rm46l852-cpu-stc-runtime-cpu-register-backups-and-restore

器件型号:RM46L852
主题中讨论的其他器件:LAUNCHXL2-RM46

您好!

是否有人能在启动 STC 并在完成后恢复 CPU 寄存器之前提供一个代码来备份 CPU 寄存器。

我知道哪些寄存器需要备份、但不确定如何备份。 我已经看到了一个如何备份 stackpointer 的示例、但我还是有点困惑。

提前感谢。

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

    请参阅这两篇有关上下文保存和恢复的文章、甚至是用于周期性跳过执行 STC 而不是仅在启动时运行的一般参数。 仅在启动时执行的主要问题是 CPU 可能会出现潜在故障、但即使存在这种潜在故障、CCM 和锁步架构也将继续保护系统的安全运行、即使发生单点故障也是如此。

    以下链接提供了其他有用的主题:
    e2e.ti.com/.../391775
    e2e.ti.com/.../1374842

    此链接还显示了一些用于备份堆栈指针的代码示例: e2e.ti.com/.../122665

    通常、在 STC 执行 LBIST 之前、然后在测试完成后、将 CPU 寄存器复制到 RAM 位置即可将其读回 CPU 寄存器。 如果要定期执行、一种方法是定义映射到 CPU 寄存器的结构类型、并在 STC 执行之前复制到该结构。 RAM 中的数据大部分时间将受到 ECC 保护、但 ECC 将在 CPU 复位后默认禁用。 这意味着您应该提供一些额外的安全机制、例如针对寄存器数据的 CRC、此 CRC 可在使用存储的数据之前进行验证。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你好、Chuck、

    我能够备份和恢复 CPU 内核寄存器(r0-r14和 CPSR)。 我有几个问题:
    A.是否需要备份和恢复 CP15寄存器? 如果是、您能否提供相同的示例代码?
    b. c13? WVRTM WSR? BVR? 等、当我将 CCS 置于调试状态并从 View->Registers 中打开 Registers 窗口时、我无法找到这些寄存器。 您能帮助解决这些问题吗?

    我使用的是 Hercules Launchpad R46x 开发套件- LaunchXL2-RM46。 (RM46L852)