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.

[参考译文] TMS570LS3137:RAM 的内容在热复位后保持不变

Guru**** 2614265 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/769979/tms570ls3137-the-content-of-the-ram-is-maintained-after-a-warm-reset

器件型号:TMS570LS3137

你(们)好。

关于在热复位(CPU 自复位或 nRST 引脚动作)之后将信息从上一个会话传递到下一个上电的目标中的链接答案、蔡先生回答说:" RAM 的内容在热复位后保持"。

我想知道、如果 RAM 在加电时未自动初始化、TMS570 RAM ECC 功能会发生什么情况。

SPNU499C 第313页。 声明如下:

6.4 TCRAM 自动初始化

RAM 存储器可使用专用的自动初始化硬件进行初始化。 TCRAM
当通过 init_domain 寄存器启用自动初始化时、模块初始化整个存储器
接收到来自系统模块的 MMI_INIT 脉冲时。 所有启用的 RAM 数据存储器位置为
初始化为0、ECC 存储器初始化为正确的0 ECC 值、即0Ch。

如果 RAM 被自动初始化以供 ECC 使用、这是否意味着之前保存的任何密钥都将丢失?

感谢您的任何指导。

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

    如果 RAM 是自动初始化的、SRAM 中的内容将丢失。 当一个复位(CPU 复位、热复位、看门狗复位、nRST 等)发生在一个到 RAM 的写入操作的中间时、它会导致 RAM 内容损坏。 因此、我们不保证在复位周期后可以保留 RAM 的内容。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢 QJ、

    我后来的理解是,HW RAM 自动初始化仅在 nPORRST 期间以及 INIT_DOMAIN 寄存器设置为0xFF 时在冷复位时发生,因此 SRAM 应在热复位时保留,以便 Chares 的语句正确。 不是吗?

    谢谢。

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

    RAM 将仅在开始看门狗或 nERROR 引脚测试之前被写入、因此 nRST 将在很晚的时间内被触发、所以我们不会担心热复位期间 RAM 损坏。

    我们要做的是将一些信息从热复位之前传递到热复位之后、以确定刚刚执行了哪些测试、然后转到涉及另一个复位的下一个测试。

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

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

    您好 QJ、

    我在 main()函数中创建局部变量,但在热复位(使用调试器)之后,这些局部变量(非静态变量,非全局变量)始终复位为所有0000。

    我可能完全遗漏了一些东西。 您能否在热复位后、通过正确的技术来传递先前上电过程中的信息、从而点亮一些灯?

    谢谢。

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

    局部变量放置在.stack 中、并在复位后初始化。 请尝试使用全局变量、不要在复位时初始化它。

    /* C 代码*/
    #pragma DATA_SECTION (var、"mysect:var")
    int var;

    /*链接器命令文件- inside SECTIONS 指令*/
    mysect:var > memory_range_name、type = NOINIT