适用情境
在除错模式下发现微控制器进入Hard Fault,或是在运作时发现微控制器的UART输出Hard Fault信息。
除错技巧
在除错模式下找到进入Hard Fault前运行的最后一个指令。
取得 SP (Stack Pointer) 值。
使用SP 在Memory窗口中找到Stack。
Stack的第七个值就是最后一笔运行的指令的地址。
在Disassembly 窗口查询该地址对应的指令。
解说
当Cortex-M核要执行一个无效的指令,例如读取一个不存在的内存位置,核心会进入hard fault来保护自己。硬件先将一些CPU寄存器放到Stack中在进入Hard Fault handler。使用者可透过Stack Pointer找到存放最后一笔被执行的指令的内存地址,进而找到触发Hard Fault的程序流程。
审核编辑:汤梓红
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表德赢Vwin官网 网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
- 微控制器
+关注
关注
48文章
7278浏览量
149600 - uart
+关注
关注
22文章
1185浏览量
100718 - Cortex-M
+关注
关注
2文章
227浏览量
29641
发布评论请先登录
相关推荐
如何分析HardFault错误的原因?
可能很多工程师在使用Cortex-M处理器做
开发的时候最怕遇到的一类错误就是调试时遇到
Hard
Fault。引发
Fault异常的情况有很多,除了程序本身的因素以为,设备外部环境的
发表于10-25 14:40
Hardfault产生原因硬件方面常见原因
一、
Hard
fault产生
原因硬件方面常见
原因:1. 电源设计有错误,造成器件供电不稳;
2. 电源质量不好,文波,噪声过大;3. 器件
发表于02-14 07:40
程序进入硬件错误中断hard_fault如何寻找原因?
程序运行后,会卡死,
进入硬件错误中断,但我不知道问题出在哪?该如何解决?在MDK环境下,
进入调试
模式,运行后
进入rt_hw_
hard_fault
发表于02-13 13:45
程序在运行一段时间后报InHardFaultHandler错误的原因?怎么解决?
= 0x8 r12 = 0x3 lr= 0xbcf pc= 0x168c psr = 0x21000000 想根诸位请教,
进入In
Hard
FaultHandler的
原因有哪些?
发表于06-28 06:02
程序在运行一段时间后报InHardFaultHandler错误的原因?
= 0x8 r12 = 0x3 lr= 0xbcf pc= 0x168c psr = 0x21000000 想根诸位请教,
进入In
Hard
FaultHandler的
原因有哪些?
发表于08-28 07:45
如何排查程序的Hardfault错误
Hard
fault产生
原因,硬件方面常见
原因: 1. 电源设计有错误,造成器件供电不稳;
2. 电源质量不好,文波,噪声过大; 3.器件接
发表于11-22 14:13
•
7次下载
评论