请选择 进入手机版 | 继续访问电脑版

 找回密码
 立即注册
搜索
查看: 208|回复: 0

Cortex-M3 HardFault_Handler 调试心得

[复制链接]

264

主题

0

回帖

1049

积分

管理员

积分
1049
发表于 2024-1-21 13:41:12 | 显示全部楼层 |阅读模式

这几天在 MDK 下调试 STM32 在进入 HardFault_Handler 异常中端原因的问题上花费了不少周折

简单来说应该采取下面的查找思路:

1、进入 HardFault_Handler 后根据 LR 确定异常发生处所使用的栈指针是 MSP 还是 PSP

2、查看 PSP(假设是 PSP)的值,在 RAM 中找到 PSP 所指的区域

3、地址按从低到高的顺序分别存放了 R0,R1,R2,R3,R12,LR,PC,XPSR 的顺序找出 PC 的值

4、根据 PC 的值找到异常程序的位置

5、分析异常程序位置的 FLASH 及 RAM 访问相关方面是否有异常值,一般是 RAM 被异常修改导致从此处取到了错误的访问地址引起的。

在 HardFault_Handler 打断点,在 Call Stack + Locals 窗口查看调用顺序,在某个入口点右键执行 Show Caller Code 跳到响应程序的位置再仔细查看出错原因。


您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|深圳市棱讯科技有限公司 ( 粤ICP备2024228160号-2|粤公网安备44030002003510号 )

GMT+8, 2024-5-29 05:05 , Processed in 0.016562 second(s), 19 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表