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

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表德赢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

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

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

    程序在运行一段时间后报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

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

    使用指针调用函数产生HardFault

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

    如何排查程序的Hardfault错误

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

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

    开发 平台进阶 使用者七大 诀窍(7)使用PinV
    的头像 发表于08-09 11:35 392次阅读
    新<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 495次阅读
    新<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 496次阅读
    新<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 428次阅读
    新<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 671次阅读
    新<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 381次阅读
    新<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>时不重启芯片