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.

[参考译文] MSPM0L1117:BOOTRST 复位 don't reset SRAM 存储器

Guru**** 2959440 points

Other Parts Discussed in Thread: MSPM0L1117, MSPM0G3507, MSPM0L1306

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1654963/mspm0l1117-bootrst-reset-don-t-reset-sram-memory

器件型号: MSPM0L1117
Thread 中讨论的其他器件: MSPM0G3507、 MSPM0L1306

您好:

我们使用的是 MSPM0L1117。 我们将执行看门狗复位、并期望如处理器数据表中所述将 SRAM 复位。 WWDTLP0RSTDIS 寄存器设置为 0。 但是、行为如下:控制器复位、但 SRAM 保留其变量以及 no-init 变量。

此致、

Kostadin

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

    嘿、Kostadin、

    我不明白这里的期待。  您是否希望 BOOTRST 将所有 SRAM 设置为特定的值?  据我所知、SRAM 没有复位值、下电上电后会出现随机未知状态。  应用代码(或者实际上是编译器/链接器)在使用之前、必须将 SRAM 中的变量初始化为已知值。   

    如果数据位于 SRAM 中、SRAM 保持通电状态、但 CPU 复位、我预计 SRAM 的内容仍然存在。  存储器未重新通电。   我不希望应用程序代码知道或信任这些值、也不希望根据需要重新初始化存储器。   

    希望这对您有所帮助、

    JD

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

    您好、JD、

    我来提供更多详细信息。我们使用的是 IAR Embedded Workbench 版本 9.6、并与 MSPM0L 和 MSPM0G 微控制器系列配合使用。这两个项目都在官方 TI LaunchPad 上运行。

    我们在两个系列中都使用未初始化的 RAM(不初始化存储器)。 根据数据表中的“复位原因编码“表(随附 MSPM0L 数据表的屏幕截图)、看门狗 (WDG) 复位应触发 BOOTRST、从而清除所有 RAM。 然而、我们观察到两种不同的行为:

    • MSPM0G 系列: WDG 复位后、no-init 存储器将按预期清除。

    • MSPM0L 系列: 在 WDG 复位后、不会清除 no-init 存储器。

    在这两个项目中、该 WWDTLP0RSTDIS 位都设置为 0、这将确保执行 BOOTRST。

    这是 MSPM0L 系列的已知勘误表/限制、还是 IAR 9.6 中需要更改特定的启动文件/链接器配置、以防止/确保此特定 MCU 在 WDG 复位时清除 RAM?

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

    您好、Kostadin、

    我已经为你做了更多的事情。 如前所述、通常不会初始化 SRAM、因为当它进行 “复位“或下电上电时、无法保证启动状态。  TRM 的这一手册中也提到了这一点。  编译代码时、SRAM 中的任何初始化变量都将由一些运行时启动代码配置、这些启动代码在到达 main() 之前运行。   

    在本例中、MSPM0L1306 以预期的方式运行、MSPM0G3507 很惊讶 SRAM 已“清除“。 我会像写入所有 0x00 一样中断这些命令。  

    我与团队进行了交谈、并了解到这是没有 SRAM 奇偶校验/ECC (MSPM0L1306) 的 MSPM0 与具有奇偶校验/ECC 的器件 (G3507) 之间的预期差异。  在具有奇偶校验或 ECC 的器件上、我们实际上向 SRAM 添加了硬件初始化、因此如果您按照上述 TRM 说明中所述访问了奇偶校验/ECC 错误、就不会立即得到奇偶校验/ECC 错误。  在没有 ECC 的器件上、不会添加此硬件初始化、这些器件继续具有随机 SRAM 值。  

    希望这澄清了您所观察到的这种行为。  如果您有任何其他后续问题、请告诉我。  

    谢谢、

    JD   

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

    您好、JD、

    MCU 行为是明确的、但我希望补充一些指导原则并做出澄清。

    我们希望执行看门狗测试并存储一些“神奇“数字。 根据我的理解、唯一的方法是使用关断寄存器、是这样吗?

    此“神奇“数字通常存储在未初始化的内存中、但在这种特定情况下、硬件会清除所有可用的内存。 话虽如此、有哪些替代方案可以跳过某些 SRAM 区域并将其用于未初始化的存储器?

    感谢您对流程的解释和指导。

    谢谢您、

    Kostadin

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

    您好、Kostadin、

    因此、它似乎取决于使用的 WDT。  TRM 规定关断电阻器在 POR 中复位、但不在 BOR 或更低的复位中复位。   

    WWDT0 和 WWDT1 触发 Bootrst 或 Sysrst、但 IWDT(如果它在特定器件上)会触发 POR 复位、从而复位关断寄存器。

    如果你需要它持续通过一个 POR ,那么我们必须将幻数存储在闪存中,但在这种情况下似乎并不需要。   

     

    谢谢、

    JD