0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

jf_pJlTbmA9 来源:jf_pJlTbmA9 作者:jf_pJlTbmA9 2023-08-09 11:41 次阅读

适用情境

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

除错技巧

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

取得 SP (Stack Pointer) 值。

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

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

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

wKgaomTSGViAEfzWAAGduHy9-G0106.jpg

解说

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

wKgZomTSGVqAKdNbAADOoTg-JZE380.png

审核编辑:汤梓红

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

    关注

    48

    文章

    7487

    浏览量

    151042
  • uart
    +关注

    关注

    22

    文章

    1227

    浏览量

    101170
  • Cortex-M
    +关注

    关注

    2

    文章

    227

    浏览量

    29726
收藏 人收藏

    评论

    相关推荐

    如何分析Hard Fault错误的原因

    可能很多工程师在使用Cortex-M处理器做开发的时候最怕遇到的一类错误就是调试时遇到Hard Fault。引发Fault异常的情况有很多,除了程序本身的因素以为,设备外部环境的
    发表于 10-25 14:40

    Hard fault产生原因硬件方面常见原因

    一、 Hard fault 产生原因硬件方面常见原因:1. 电源设计有错误,造成器件供电不稳;2. 电源质量不好,文波,噪声过大;3. 器件
    发表于 02-14 07:40

    程序进入硬件错误中断hard_fault如何寻找原因

    程序运行后,会卡死,进入硬件错误中断,但我不知道问题出在哪?该如何解决?在MDK环境下,进入调试模式,运行后进入rt_hw_hard_fault
    发表于 02-13 13:45

    M0516LDE老是进入Hard_Fault_Handler的原因?怎么解决?

    M0516 LDE,老是进入Hard_Fault_Handler
    发表于 06-27 08:57

    程序在运行一段时间后报In Hard Fault Handler错误的原因?怎么解决?

    = 0x8 r12 = 0x3 lr= 0xbcf pc= 0x168c psr = 0x21000000 想根诸位请教,进入In Hard Fault Handler的原因有哪些?
    发表于 06-28 06:02

    程序在运行一段时间后报In Hard Fault Handler错误的原因

    = 0x8 r12 = 0x3 lr= 0xbcf pc= 0x168c psr = 0x21000000 想根诸位请教,进入In Hard Fault Handler的原因有哪些?
    发表于 08-28 07:45

    鬼魅一样的 Hard Fault

    STM32 鬼魅一样的 Hard Fault
    发表于 12-07 17:53 0次下载

    使用指针调用函数产生 Hard Fault

    使用指针调用函数产生 Hard Fault
    发表于 12-07 17:52 0次下载

    如何排查程序的Hard fault错误

    Hard fault产生原因,硬件方面常见原因: 1. 电源设计有错误,造成器件供电不稳; 2. 电源质量不好,文波,噪声过大; 3.器件接
    发表于 11-22 14:13 7次下载

    开发平台进阶使用者七大诀窍(7)使用PinView来检查寄存器状态

    开发平台进阶使用者七大诀窍(7)使用PinV
    的头像 发表于 08-09 11:35 459次阅读
    新<b class='flag-5'>唐</b><b class='flag-5'>开发</b><b class='flag-5'>平台</b>:<b class='flag-5'>进阶</b><b class='flag-5'>使用者</b>的<b class='flag-5'>七大</b><b class='flag-5'>诀窍</b>(7)使用PinView来检查寄存器状态

    开发平台进阶使用者七大诀窍(6)使用PinView进行功耗的除错

    开发平台进阶使用者七大诀窍(6)使用PinV
    的头像 发表于 08-09 11:36 593次阅读
    新<b class='flag-5'>唐</b><b class='flag-5'>开发</b><b class='flag-5'>平台</b>:<b class='flag-5'>进阶</b><b class='flag-5'>使用者</b>的<b class='flag-5'>七大</b><b class='flag-5'>诀窍</b>(6)使用PinView进行功耗的<b class='flag-5'>除错</b>

    开发平台进阶使用者七大诀窍(5)使用Watchpoint来除错

    开发平台进阶使用者七大诀窍(5)使用Watc
    的头像 发表于 08-09 11:37 586次阅读
    新<b class='flag-5'>唐</b><b class='flag-5'>开发</b><b class='flag-5'>平台</b>:<b class='flag-5'>进阶</b><b class='flag-5'>使用者</b>的<b class='flag-5'>七大</b><b class='flag-5'>诀窍</b>(5)使用Watchpoint来<b class='flag-5'>除错</b>

    开发平台进阶使用者七大诀窍(4)检查Reset旗标

    开发平台进阶使用者七大诀窍(4)检查Rese
    的头像 发表于 08-09 11:38 538次阅读
    新<b class='flag-5'>唐</b><b class='flag-5'>开发</b><b class='flag-5'>平台</b>:<b class='flag-5'>进阶</b><b class='flag-5'>使用者</b>的<b class='flag-5'>七大</b><b class='flag-5'>诀窍</b>(4)检查Reset旗标

    开发平台进阶使用者七大诀窍(3)使用System Viewer检查寄存器状态

    开发平台进阶使用者七大诀窍(3)使用Syst
    的头像 发表于 08-09 11:39 819次阅读
    新<b class='flag-5'>唐</b><b class='flag-5'>开发</b><b class='flag-5'>平台</b>:<b class='flag-5'>进阶</b><b class='flag-5'>使用者</b>的<b class='flag-5'>七大</b><b class='flag-5'>诀窍</b>(3)使用System Viewer检查寄存器状态

    开发平台进阶使用者七大诀窍(1)进入除错模式时不重启芯片

    开发平台进阶使用者七大诀窍(1)
    的头像 发表于 08-09 11:42 465次阅读
    新<b class='flag-5'>唐</b><b class='flag-5'>开发</b><b class='flag-5'>平台</b>:<b class='flag-5'>进阶</b><b class='flag-5'>使用者</b>的<b class='flag-5'>七大</b><b class='flag-5'>诀窍</b>(1)<b class='flag-5'>进入</b><b class='flag-5'>除错</b><b class='flag-5'>模式</b>时不重启芯片