S32K1XX调试--快速定位HardFault

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

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"
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值