跑进HardFault_Handler怎么处理?

lijinqiao2010 |浏览3240次
收藏|2015/03/26 01:43

满意回答

2022/09/06 16:57

若试图从一个不存在的物理地址取指或取数,就会发生 HardFault 中断。发生这种情况常常是指针没赋值、或由计算结果赋了一个超出地址范围的值,一执行就跳到 HardFault去了。所以重点检测指针取数、或函数指针的调用。比如:

⚫ 数组越界操作;
⚫ 内存、堆栈溢出;
⚫ 使能并产生中断,而没写对应的中断处理函数;
⚫ 程序切换,而没有做中断向量表重映射,一产生中断就会进hardfault;
⚫ M0非对齐访问

可以设几个断点先查出跑去HardFault中的大体位置,再单步执行,看哪一句产生了HardFault中断,就知道位置了。

另外一个方法是在HardFaut里,栈指针加6,就是发生HardFault中断的地址。具体操作可参考https://mp.weixin.qq.com/s/yRIgUamkl7gTSEeP9bGBUA

Angus

其他回答(0)
0人关注该问题
+1
 加载中...