2407105_zh-CN

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

2407105_zh-CN

2407105_zh-CN

S32K312 - SRAM 数据保持 - 冷启动时偶尔出现硬故障

你好

我正在尝试让 S32K312 中的 SRAM 存储器末尾(256 字节)在功能 RESET 后保留数据。

我通过修改链接器脚本来实现这一点,将ram_rsvd2(以及 __INT_SRAM_END)拉回 256 字节,这样启动汇编脚本就不会再清除最后 256 字节。

Hareesh_S_0-1787256254412.pngHareesh_S_0-1787256254412.pngHareesh_S_0-1787256254412.pngHareesh_S_0-1787256254412.pngHareesh_S_0-1787256254412.pngHareesh_S_0-1787256254412.png

为了测试此功能,我切换了 2 个 GPIO/LED——一个用于指示 SRAM 内容已保留,另一个用于指示 SRAM 内容未保留/无效。

Hareesh_S_1-1787256280872.pngHareesh_S_1-1787256280872.pngHareesh_S_1-1787256280872.pngHareesh_S_1-1787256280872.pngHareesh_S_1-1787256280872.pngHareesh_S_1-1787256280872.png

项目首次烧录时,似乎按预期工作——LED_01 在第一个周期内为高电平,随后 LED_02 在 RESET 周期后保持高电平。


不过,在冷启动时,两个 LED 灯都不亮——我可以确认这是因为 MCU 在尝试访问保留的 SRAM 区域中的地址时发生了硬故障。

我还注意到,当 MCU 运行时(发生硬故障)连接调试器时,我无法通过内存监视器单独读取/写入特定 SRAM 区域中的数据(它显示 ???? 而不是数据)。S32 Design Studio 和 Segger Ozone 都存在这个问题。

这种硬故障行为也不稳定,因为有时在冷启动时,项目可以按预期工作,LED_01 为高电平,但这种情况很少发生。

我附上了一个可以重现我问题的最小示例项目。如果能得到一些关于调试/更好地理解这种行为的帮助,那就太好了!

此致,
哈里什·S

Re: S32K312 - SRAM retention - occasional hardfaults on cold boot

你好,

我还注意到,当 MCU 运行时(发生硬故障)连接调试器时,我无法通过内存监视器单独读取/写入特定 SRAM 区域中的数据(它显示 ???? 而不是数据)。S32 Design Studio 和 Segger Ozone 都存在这个问题。

这意味着 RAM 内容丢失,并且 RAM 中包含 ECC 错误——RAM 未初始化。如果复位导致 RAM 内容被破坏,则取决于执行的是哪种复位操作。

检查 RMG [DES/ FES] 寄存器,查看发生了哪种 RESET。

petervlna_0-1787295026947.pngpetervlna_0-1787295026947.pngpetervlna_0-1787295026947.pngpetervlna_0-1787295026947.pngpetervlna_0-1787295026947.pngpetervlna_0-1787295026947.png

petervlna_1-1787295110517.pngpetervlna_1-1787295110517.pngpetervlna_1-1787295110517.pngpetervlna_1-1787295110517.pngpetervlna_1-1787295110517.pngpetervlna_1-1787295110517.png


当从 RAM 读取 ECC 错误时,会触发硬故障。

顺祝商祺!

Peter

Re: S32K312 - SRAM retention - occasional hardfaults on cold boot

你好@petervlna

谢谢你的解释。我知道 SRAM 中的内容会无效,但没想到这会导致硬故障。

我还有一个问题——当我的应用程序进入待机模式并通过唤醒事件退出时,MC_RGM DES/FES 标志均未设置。这是预期行为吗?如果答案是肯定的,我该如何确定MCU是否已退出待机状态?这条后续内容是否更适合另开一篇社区帖子?通过唤醒信号退出待机状态是否会在 RDSS 寄存器中反映出来?

Re: S32K312 - SRAM retention - occasional hardfaults on cold boot

你好 ,

查阅了其他社区帖子和参考手册后,我的理解是,我应该结合 RDSS 检查 MC_ME[PREV_MODE](实际上是 MC_ME.MODE_STAT)来判断 MCU 是否已从待机状态唤醒。

除非我理解有误,否则我认为这已经解答了我的疑问。

非常感谢大家的支持!

此致,
哈里什·S

Re: S32K312 - SRAM retention - occasional hardfaults on cold boot

你好,

是的,这是意料之中的。由 WKPU 事件引起的从 STANDBY 唤醒不一定会设置任何 MC_RGM DES 或 FES 标志。如果 MC_RGM 中未报告 RESET 状态,则确定设备是否从待机状态恢复的推荐方法是检查 MC_ME PREV_MODE 字段。

顺祝商祺!

Peter

Tags (1)
No ratings
Version history
Last update:
39m ago
Updated by: