1、背景
- 程序运行,发现程序跑飞到HardFault,但不清楚为什么会跑到HardFault中断处理函数去。
2、分析
-
要想知道为什么会跑到HardFault_Handler中去,就很有必要了解一下,程序上一条执行的是那条命令。
-
根据汇编指令可以定位上条指令,但如果对汇编指令不是很了解的话,那就很头疼了
-
根据单步运行也能实现定位,但如果程序量很大,又很杂,可能花费的时间就比较久些。
3、问题查找
- 提供一种不需要懂汇编指令的查找方法,方法如下:
- 在中断处理函数中插入以下代码,以及另外定义一个函数getStackFrame来存之前函数的寄存器值。
void HardFault_Handler(void)
{
// LR provides information of the return stack PSP/MSP
asm("MOVS R0, #4"

本文介绍了一种在遇到HardFault时快速定位上一条指令的方法,通过在HardFault_Handler中断处理函数中插入特定代码,获取调用堆栈信息,并利用这些信息定位到导致硬件故障的具体函数。
最低0.47元/天 解锁文章
3902

被折叠的 条评论
为什么被折叠?



