[技术问答] HardFault异常分析

[复制链接]
264|6
 楼主 | 2019-8-30 11:11 | 显示全部楼层 |阅读模式
本帖最后由 AutochipsMCU 于 2019-9-2 21:21 编辑

有客户经常咨询程序跑飞怎么分析。下面整理一下方法,抛砖引玉,大家一起分享讨论

在系统开发的时候,有可能会遇到出现HardFault_Handler硬件异常(死机)。对于功能稍微复杂一些的系统(或带OS),逐一检查程序跑飞原因会很麻烦,如果是低概率则更麻烦。好在掌握一些技巧后,能让如此棘手的问题变得容易一些。
出现HardFalut主要有两方面的原因:
1、内存溢出或者访问越界。
2、堆栈溢出。


关于HardFalut的分析,segger官方和keil官方都有提供hardFault相关的文档和代码
AN00016_AnalyzingHardFaultsOnCortexM.pdf (103.64 KB, 下载次数: 2)

使用特权

评论回复
| 2019-8-30 11:20 | 显示全部楼层
怎么不回答我问题了,无刷无感启动波形

使用特权

评论回复
 楼主 | 2019-8-30 13:01 | 显示全部楼层
a20084666 发表于 2019-8-30 11:20
怎么不回答我问题了,无刷无感启动波形

不好意思,没有留意到您有回复

使用特权

评论回复
| 2019-8-30 13:40 | 显示全部楼层
AutochipsMCU 发表于 2019-8-30 13:01
不好意思,没有留意到您有回复

没事的,怎么称呼

使用特权

评论回复
| 2019-9-2 15:57 | 显示全部楼层


你这个只能定位到发生HardFault的点,,但如果这个函数被多个函数调用,,你不知道它是被哪个函数调用时触发的HardFault,,

给你推荐个工具,,不需要在单片机上添加代码,,发生HardFault后用此工具读取芯片寄存器和RAM内容,,自动分析HardFault点和到达这一点的调用路径:

源码和exe:https://github.com/XIVN1987/JHFView

截图1.jpg

使用特权

评论回复
| 2019-9-2 17:09 | 显示全部楼层
XIVN1987 发表于 2019-9-2 15:57
你这个只能定位到发生HardFault的点,,但如果这个函数被多个函数调用,,你不知道它是被哪个函数调用时 ...

好东西吖

使用特权

评论回复
 楼主 | 2019-9-2 17:48 | 显示全部楼层
XIVN1987 发表于 2019-9-2 15:57
你这个只能定位到发生HardFault的点,,但如果这个函数被多个函数调用,,你不知道它是被哪个函数调用时 ...

谢谢分享

使用特权

评论回复
扫描二维码,随时随地手机跟帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

我要发帖 投诉建议 创建版块 申请版主

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式

论坛热帖

在线客服 快速回复 返回顶部 返回列表