硬汉嵌入式论坛

 找回密码
 立即注册
查看: 1777|回复: 10
收起左侧

[MDK] 请教HardFault问题如何快速解决?

[复制链接]

3

主题

106

回帖

115

积分

初级会员

积分
115
发表于 2024-10-17 09:35:58 | 显示全部楼层 |阅读模式
最近调试老软件,频繁进入HardFault错误,历经两天的折磨终于搞定。但在调试阶段每遇到错误都有点小迷茫,除了查看错误寄存器外,快速准备的定位到问题点感觉还是有些吃力。请教各位坛友遇到这种错误都是如何快速解决?有什么推荐的方法或技巧?
回复

使用道具 举报

5

主题

86

回帖

101

积分

初级会员

积分
101
发表于 2024-10-17 10:58:25 | 显示全部楼层
《Cortex-Mxxx权威指南》的错误处理章节,里面有Hardfault异常类型和分析方法论的概括性描述。网上有一些像cmbacktrace的方法,可以通过捕捉寄存器和反汇编方式,定位到进入Hardfault前的代码位置。如果是硬件导致的话,那么就需要其他手段做相应排查了。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
116230
QQ
发表于 2024-10-17 11:18:36 | 显示全部楼层
不忙的时候,这期视频可以看看,整理的还不错,里面也有一些特别的技巧。

视频教程第6期:MDK专题进阶,Cortex-M内核芯片Hardfault硬件异常调试分析定位(2022-02-17)
https://www.armbbs.cn/forum.php?mod=viewthread&tid=110982
回复

使用道具 举报

3

主题

106

回帖

115

积分

初级会员

积分
115
 楼主| 发表于 2024-10-17 12:40:41 | 显示全部楼层
eric2013 发表于 2024-10-17 11:18
不忙的时候,这期视频可以看看,整理的还不错,里面也有一些特别的技巧。

视频教程第6期:MDK专题进阶, ...

这期视频学习好几遍了
回复

使用道具 举报

3

主题

106

回帖

115

积分

初级会员

积分
115
 楼主| 发表于 2024-10-17 12:41:12 | 显示全部楼层
流型 发表于 2024-10-17 10:58
《Cortex-Mxxx权威指南》的错误处理章节,里面有Hardfault异常类型和分析方法论的概括性描述。网上有一些像 ...

非常感谢分享,我也去瞅瞅
回复

使用道具 举报

97

主题

537

回帖

843

积分

金牌会员

积分
843
发表于 2024-10-17 13:27:08 | 显示全部楼层
使用栈回溯技术。
cortex-m内核有开源的cmbacktrace库,移植适配一下。

Snipaste_2024-09-29_11-56-20.png

用add2line查看地址对应的函数,就可以知道出问题时候函数的调用顺序。
Snipaste_2024-09-29_13-22-50.png

然后根据出错位置的代码,自己去阅读判断。


我当时使用tlsf时偶尔进入Hardfault,就是 用这个判断的。


有群友用过tlsf吗?我遇到一个问题,向大家请教。
https://www.armbbs.cn/forum.php? ... 2&fromuid=32469
(出处: 硬汉嵌入式论坛)


共产主义一定胜利!
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
116230
QQ
发表于 2024-10-17 13:29:44 | 显示全部楼层
WangYI741 发表于 2024-10-17 12:40
这期视频学习好几遍了

直接上我们TOOL的黑盒子锁定,简单省事,无需内嵌代码

基于H7-TOOL的硬件异常黑盒子功能V1.0版本操作说明,持续更新(2022-08-17)
https://www.armbbs.cn/forum.php?mod=viewthread&tid=114792



回复

使用道具 举报

3

主题

106

回帖

115

积分

初级会员

积分
115
 楼主| 发表于 2024-10-17 14:19:23 | 显示全部楼层
会飞的猪_2020 发表于 2024-10-17 13:27
使用栈回溯技术。
cortex-m内核有开源的cmbacktrace库,移植适配一下。

好的,感觉这个很有用,谢谢分享
回复

使用道具 举报

3

主题

106

回帖

115

积分

初级会员

积分
115
 楼主| 发表于 2024-10-17 14:19:57 | 显示全部楼层
eric2013 发表于 2024-10-17 13:29
直接上我们TOOL的黑盒子锁定,简单省事,无需内嵌代码

基于H7-TOOL的硬件异常黑盒子功能V1.0版本操作 ...

是时候入手一台了,双11有活动嘛?
回复

使用道具 举报

24

主题

196

回帖

268

积分

高级会员

积分
268
QQ
发表于 2024-10-17 15:17:50 | 显示全部楼层
可以使用 SEGGER 提供的 HardFaults 。
https://www.segger.com/downloads/application-notes/
非常简单,就是把硬件错误中断函数引到他提供的 HardFaultHandler() 函数就可以了,主要作用是把含有有效信息的寄存器数据都提出来。
结合调试的堆栈回溯,可以比较方便地排查错误。
回复

使用道具 举报

3

主题

106

回帖

115

积分

初级会员

积分
115
 楼主| 发表于 2024-10-17 16:27:04 | 显示全部楼层
yono 发表于 2024-10-17 15:17
可以使用 SEGGER 提供的 HardFaults 。
https://www.segger.com/downloads/application-notes/
非常简单 ...

好的,感谢分享经验
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-6-11 05:55 , Processed in 0.311289 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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