stm32的RAM自检,在读写RAM中的数据时,程序总是进入HardFault,检查没有溢出。

2019-07-21 01:28发布

最近项目增加单片机的RAM ROM自检功能。在坐第一个RAM自检的功能时就遇到问题。stm32的RAM起始地址,和空间大小如下图所示
截图未命名.jpg 因此在编写Test_RAM时,按照先将RAM空间中的写满0x00,在读回空间中的数据和0x00做对比,判断读回的数据是否都是0x00。如果都是0X00在向空间中写入0XFF,同样再读回RAM空间中的数据,和0XFF做对比,判断读回的数据是否都是0XFF,如果两次对比都没有问题,则认为RAM是OK的。现在编写如下伪代码: 截图未命名.jpg ,程序在读写数据时,特别容易进入HardFault,硬件错误中断函数,不知道为什么?是溢出了?不应该溢出,求大神指点。


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
13条回答
zhangxiaolin
1楼-- · 2019-07-22 01:27
zc123 发表于 2019-5-14 15:54
单纯看代码,没有问题,不过这样情况就复杂了
(1)编译器生成的汇编结果不正确(这个只能结合汇编一起调试 ...

写入0XFF,debug模式下,部分地址的数据并不是0XFF,奇怪。
zhangxiaolin
2楼-- · 2019-07-22 07:00
warship 发表于 2019-5-14 14:48
没有汇编基础,
这种工作还是放弃吧。
RAM区是堆栈空间,也是你的各种变量的生存之地,

额,现在是向地址中写入0X00,读取也没问题。然后写入0XFF,debug模式下部分地址下的数据不是0XFF,分析不出来为什么。
edmund1234
3楼-- · 2019-07-22 09:27
 精彩回答 2  元偷偷看……
zhangxiaolin
4楼-- · 2019-07-22 12:28
 精彩回答 2  元偷偷看……
zhangxiaolin
5楼-- · 2019-07-22 13:07
zc123 发表于 2019-5-14 15:54
单纯看代码,没有问题,不过这样情况就复杂了
(1)编译器生成的汇编结果不正确(这个只能结合汇编一起调试 ...

在这个代码的基础上进行的测试,在向待测试的RAM空间中写入0XFF,查看Memory,发现一小段连续地址的内容不是写入的0XFF,(在6楼已经截图),怀疑是板子RAM有问题,换战舰的板子试了一下,同样代码调试运行,测试通过,前述的问题不再出现。因此判断是板子的RAM有问题。后和公司硬件工程师沟通,大概内容是,他们认为RAM出现问题的概率非常小,一般都是ROM容易会有问题,怀疑是我程序的问题。
warship
6楼-- · 2019-07-22 18:23
 精彩回答 2  元偷偷看……

一周热门 更多>