如何调查微控制器中的 RAM 损坏?

问题描述 投票:0回答:1

我在一台基于 STM32 的设备中检测到 RAM 中存在数据损坏。

这个问题非常罕见 不可重现。在一台设备中,我仅看到一位损坏。但它会造成很大的损害。从其他损坏设备的行为来看,我了解到在同一区域发生了类似但不相同的数据损坏。

损坏的值属于静态全局数组,在运行时不会被修改。从Map文件中,我可以看到数组放置在RAM基地址中。

我想找出这种腐败的根本原因。最有效的方法是什么?

项目是使用 IAR EW for ARM 开发的,我使用的是 ST-Link V2 调试器。

embedded stm32 microcontroller ram data-corruption
1个回答
0
投票

复制您的数据并在您的代码上散布验证代码,如

assert(0==memcmp(&Data, &Copy, sizeof(Data)));
。这是一种低级方法,需要花费大量时间,但可能有助于缩小内存损坏发生的范围。说真的,我通过使用像
assert(*(int*)0x123==456);
这样的丑陋代码来定位内存损坏。

© www.soinside.com 2019 - 2024. All rights reserved.