新唐开发平台:进阶使用者的七大诀窍(2)进入除错模式找出Hard Fault原因

电子说

1.3w人已加入

描述

适用情境

在除错模式下发现微控制器进入Hard Fault,或是在运作时发现微控制器的UART输出Hard Fault信息。

除错技巧

在除错模式下找到进入Hard Fault前运行的最后一个指令。

取得 SP (Stack Pointer) 值。

使用SP 在Memory窗口中找到Stack。

Stack的第七个值就是最后一笔运行的指令的地址。

在Disassembly 窗口查询该地址对应的指令。

Cortex-M

解说

当Cortex-M核要执行一个无效的指令,例如读取一个不存在的内存位置,核心会进入hard fault来保护自己。硬件先将一些CPU寄存器放到Stack中在进入Hard Fault handler。使用者可透过Stack Pointer找到存放最后一笔被执行的指令的内存地址,进而找到触发Hard Fault的程序流程。

Cortex-M

  审核编辑:汤梓红

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分