当前位置: 首页 > news >正文

详细介绍:调用栈和fault analyzers(快速找到bug)

详细介绍:调用栈和fault analyzers(快速找到bug)

1.错误类型

一般来说 错误类型就是以下四种 而最常见的是:Hardfault

在 ARM Cortex-M 系列处理器(如 STM32 芯片)中,Hardfault是一种严重的系统故障异常,当处理器检测到无法被其他异常(如总线故障、用法故障)处理的错误时,会触发该异常。以下是关于 Hardfault 的关键信息:

一、触发原因

Hardfault 的触发场景非常广泛,典型原因包括:

  1. 内存访问错误
  1. 指令异常
  1. 硬件故障
  1. 中断配置错误

2. ARM Cortex-M 系列处理器寄存器

1.sp寄存器

  • SP_main(主堆栈指针,MSP):是默认的堆栈指针,用于异常服务例程(如中断、系统调用)、OS 内核以及应该特权访问的代码。系统复位后默认使用该堆栈。
  • SP_process(进程堆栈指针,PSP):用于线程模式下的普通应用程序代码(非异常场景)。在嵌入式操作系统中,不同任务可通过它维护独立堆栈,搭建任务隔离。(在freertos下会用到)

2.LR与PC寄存器

  1. R14(连接寄存器,LR)
  1. R15(程序计数器,PC)

3.异常发生后的处理

这张图展示的是 ARM Cortex-M 系列处理器中 ** 异常返回机制(EXC_RETURN)** 的关键参数,用于定义异常处理达成后处理器的返回行为,核心含义如下:

  1. 什么是EXC_RETURN

当处理器进入异常处理(如中断、HardFault 等)时,链接寄存器(LR)会被自动加载一个特殊值,这个值就是EXC_RETURN。它的作用是指示处理器在异常处理达成后,以何种模式、使用哪个堆栈返回原执行流程

  1. 各数值的效果解析
  2. 补充说明的逻辑

  • 当 “主程序在线程模式下用 MSP” 被中断时,异常服务例程的LR会被自动设为0xFFFF_FFF9(原 LR 已被压栈),确保返回后回到 “线程模式 + MSP” 的原流程。
  • 当 “主程序在线程模式下用 PSP” 被中断时,异常服务例程的LR会被自动设为0xFFFF_FFFD,确保返回后回到 “线程模式 + PSP” 的原流程。
  • MSP(主堆栈指针)在错误发生前指向的是当前活跃的主堆栈区域;当错误(如异常、Hardfault)发生时,处理器会自动将上下文寄存器(R0-R3、R12、LR、PC、xPSR 等)压入 MSP 指向的栈中,因此错误发生后,MSP 指向的是 “错误发生前的栈 + 刚压入的上下文数据” 的栈区域

简言之,EXC_RETURN是 Cortex-M 处理器异常返回的 “控制码”,通过不同数值编码,精准控制返回后的执行模式(线程 /handler)和堆栈选择(MSP/PSP),保障系统在异常处理后能正确恢复执行流程。

4.案例分析

在有错误的时候,我们看寄存器

看lr寄存器的值与上面的错误分析,去寻找msp(主栈堆)

  1. 找到msp对应的地址(此时已经压栈)

从左往右依次对应寄存器 找到LR对应的值

    可以通过 MSP(主堆栈指针)定位到发生错误的函数,核心依据是异常发生时处理器会自动将关键寄存器(包括错误发生时的指令地址)压入 MSP 指向的堆栈

    原理:异常时的堆栈自动压入机制

    当错误(如 HardFault、中断等异常)发生时,Cortex-M 处理器会触发 “硬件自动压栈”:将当前执行上下文的关键寄存器按固定顺序压入当前活跃的堆栈(如果此时使用 MSP,则压入 MSP 指向的主堆栈),压栈顺序为:R0 → R1 → R2 → R3 → R12 → LR(返回地址) → PC(错误发生时的指令地址) → xPSR(脚本状态寄存器)

    其中,错误发生时正在执行的指令地址就是PC(程序计数器)的值就,借助这个地址可能直接定位到对应的函数。

    .在本次案例中 大家不查看pc寄存器而是查看lr寄存器

    指示 “被中断函数的返回目标”,追溯函数调用链

    当程序正常运行时,LR的作用是保存 “当前函数执行完毕后要返回的下一条指令地址”(即调用者的地址)。例如:

    通过这个LR值,许可反向追溯:错误发生在哪个函数(B)中,而这个函数是被哪个函数(A)调用的,从而还原错误发生时的函数调用链(如 A→B→错误点)。

    补充

    再上面这里 20000008是pc最后的指向 而08000f6c是发生错误前正在指向的代码翻译成机器码后的储存位置

    具体详情看

    06 调用栈和fault analyzers

    http://www.rkmt.cn/news/76497.html

    相关文章:

  1. 蓝牙钥匙 第75次 蓝牙与V2X技能融合:构建智能网联汽车的神经脉络
  2. 05_对象
  3. 2025年北京NPDP培训中心实力对比
  4. 07_String对象
  5. 2025年12月徐州拓普互动品牌综合评估与优选指南
  6. 2025年下半年北京PMP项目管理培训十大优质机构推荐与选择指南
  7. 2025年12月山东临沂钻铣磨一体机品牌综合推荐与选购指南
  8. Cisco Secure Firewall 1200 Series FTD Software 10.0.0 发布 - 思科下一代防火墙系统软件
  9. 2025年热门的水处理环保设备/专业环保设备高评价厂家推荐榜
  10. 2025年高压电缆品牌推荐榜及厂家联系方式
  11. 高压电缆公司排行2025年12月最新榜单
  12. 2025年评价高的医疗污水处理设备/地埋式污水处理设备厂家推荐及选购指南
  13. 2025年口碑好的风力选煤设备/新型多级风力选煤设备厂家最新热销排行
  14. 2025年热门的GEO推广优质服务榜
  15. 2025年知名的包罩脚轮/转运床脚轮厂家推荐及选择参考
  16. 2025年比较好的设计师喜爱轻时尚家居美学品牌行业推荐榜
  17. 2025年质量好的门式堆垛机/环形轨道堆垛机热门厂家推荐榜单
  18. 2025年评价高的GEO服务商榜单优选
  19. 2025年热门的聚脲地坪/喷涂聚脲污水池厂家推荐及选择指南
  20. 2025年评价高的全自动压滤机行业内知名厂家排行榜
  21. 2025年口碑好的低烟无卤控制电缆用户口碑最好的厂家榜
  22. 2025年热门的财务公司温州代理记账/电商温州代理记账品质口碑榜
  23. 2025年口碑好的设计/办公室设计品质优选榜
  24. 2025年靠谱的棉被子/高档被子厂家最新推荐排行榜
  25. 从“混为一谈”到“各有专攻”:规则式AI、自动控制与人工智能的历史纠葛
  26. 符号主义AI:规则驱动的“专家系统”如何给汽车“诊病”?
  27. 2025年12月津达线缆联系方式全面解析与优质厂商推荐指南
  28. 2025年下半年徐州喷灌机管厂商Top 5口碑推荐榜单
  29. 2025年下半年上海地区纳米砂磨机优质厂家综合推荐与选择指南
  30. 2025年12月电线电缆行业十大优质供应商推荐指南