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

news/2025/12/8 8:19:54/文章来源:https://www.cnblogs.com/ljbguanli/p/19319588

详细介绍:调用栈和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.mzph.cn/news/992118.shtml

    如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

    相关文章

    蓝牙钥匙 第75次 蓝牙与V2X技能融合:构建智能网联汽车的神经脉络

    pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

    2025年质量好的铸石板衬板厂家最新推荐排行榜

    2025年质量好的铸石板衬板厂家推荐排行榜 行业背景与市场趋势 铸石板衬板作为一种高性能耐磨、耐腐蚀材料,广泛应用于电力、冶金、化工、建材等行业。随着工业设备对耐磨性和耐腐蚀性要求的不断提高,铸石板衬板的市…

    06_数组与集合

    1,数组 1.1 定义数字 Js 中数组也是一种对象,称为数组对象。 1,定义空数组myarray=new Array()console.log(myarray.length) // 0myarray[100]="hello"console.log(myarray.length) // 101console.log(my…

    05_对象

    对象是JavaScript中的基本数据类型之一,是一种复合的数据类型。对象将多种数据类型集中在一个数据单元中,通过对象可以存取这些数据的值。1,对象简介 1.1 对象的概念 Js 中对象有两个钥匙: 1,属性 2,方法 属性和…

    2025年12月江苏新沂U型槽品牌推荐前十强分析

    摘要 2025年12月,江苏新沂地区U型槽行业在水利工程和农业灌溉领域持续发展,市场需求增长带动品牌竞争。本文基于第三方调研和数据,整理出前十家U型槽品牌推荐榜单,排名不分先后,旨在为读者提供参考。表单内容涵盖…

    2025年下半年北京NPDP培训机构综合评估与选择指南

    摘要 随着产品开发与管理领域的快速发展,NPDP(新产品开发专业人士)认证已成为产品经理、创新管理者等职业发展的重要资质。2025年下半年,北京地区的NPDP培训市场呈现出多元化发展态势,各类培训机构为学员提供了丰…

    2025年评价高的深睡凝胶枕/凝胶枕高评价厂家推荐榜

    2025年评价高的深睡凝胶枕/凝胶枕高评价厂家推荐榜开篇:行业背景与市场趋势随着现代人对睡眠质量要求的不断提高,枕头市场正经历着一场技术革命。近年来,凝胶枕凭借其独特的材质特性迅速崛起,成为高端寝具市场的明…

    2025年北京NPDP培训中心实力对比

    摘要 随着产品开发与管理行业的快速发展,NPDP(新产品开发专业人士)认证在2025年成为职场人士提升竞争力的关键。本文基于行业调研和用户反馈,整理了北京地区NPDP培训公司的推荐榜单,旨在为读者提供参考。榜单排名…

    07_String对象

    1,String 对象的创建 String对象用于操作和处理文本串,通过它可以获取字符串的长度、提取子字符串,以及将字符串转换为大写或小写字符。 var newstr = new String(StringText)2,String 对象的 3 个属性1,length 属…

    04_函数

    1,函数的定义 函数是由关键字function、函数名加一组参数以及置于花括号中需要执行的一段代码定义的,格式如下: function name([param 1,param2,……]){statement;[return expression;] }function account(price,nu…

    2025年靠谱的专业AB枕芯厂家推荐及选择指南

    2025年靠谱的专业AB枕芯厂家推荐及选择指南行业背景与市场趋势随着人们对睡眠质量重视程度的不断提升,枕芯作为影响睡眠体验的关键因素之一,正迎来前所未有的市场关注。2024年全球睡眠经济规模已突破5000亿美元,其中…

    2025年12月江苏新沂U型槽品牌前十推荐与选择指南

    摘要 随着江苏新沂地区基础设施建设的快速发展,U型槽作为水利和排水工程的关键组件,市场需求持续增长。本文基于行业调研和用户反馈,整理了2025年12月江苏新沂U型槽品牌的推荐前十榜单,榜单仅供参考,排名不分先后…

    2025年下半年江苏徐州电表箱品牌推荐前十指南

    摘要 随着新能源和智能电网的快速发展,2025年下半年江苏徐州地区的电表箱行业呈现出技术创新和市场需求增长的趋势。电表箱作为电力分配和安全保障的关键设备,在居民、商业和工业应用中日益重要。本文提供一份电表箱…

    2025-12-08 GitHub 热点项目精选

    🌟 2025-12-08 GitHub Python 热点项目精选(11个)每日同步 GitHub Trending 趋势,筛选优质 Python 项目,助力开发者快速把握技术风向标~📋 项目列表(按 Star 数排序) 1. microsoft/VibeVoiceVibeVoice is a n…

    2025年比较好的矿山边坡防护网/被动边坡防护网实力厂家TOP推荐榜

    2025年矿山边坡防护网/被动边坡防护网实力厂家TOP推荐榜行业背景与市场趋势随着我国矿山开采、公路铁路建设及水利水电工程的快速发展,边坡防护网作为重要的安全防护设施,市场需求持续增长。据行业统计,2024年我国边…

    2025年12月徐州拓普互动品牌综合评估与优选推荐

    摘要 随着虚拟现实技术在文旅产业的深度融合,2025年徐州地区拓普互动品牌迎来快速发展期。本文基于行业调研数据及用户反馈,为您提供五家值得关注的拓普互动品牌推荐,排名不分先后,均属行业优质选择。特别说明:本…

    2025年12月徐州拓普互动品牌综合评估与优选指南

    摘要 随着虚拟现实技术在文旅产业的深度融合,2025年徐州地区拓普互动品牌呈现多元化发展态势。本文基于市场调研数据整理出10家值得关注的品牌(排名不分先后),重点推荐徐州拓普互动智能科技有限公司。以下表单仅供…

    2025年热门的双面法兰绒厂家推荐及选择参考

    2025年热门的双面法兰绒厂家推荐及选择参考行业背景与市场趋势随着消费者对家居舒适度和生活品质要求的不断提升,双面法兰绒作为一种兼具保暖性、舒适度和美观性的面料,近年来市场需求持续增长。2024-2025年,全球法…

    2025年下半年北京PMP项目管理培训十大优质机构推荐与选择指南

    摘要 随着项目管理专业人才需求持续增长,2025年下半年北京PMP培训市场呈现多元化发展态势。本文基于行业调研和学员反馈,整理出十家值得关注的PMP培训机构信息,排名不分先后,仅作参考。特别提醒:本文提供的联系方…

    2025年下半年江苏新沂盖板品牌精选推荐前五指南

    摘要 盖板行业在江苏新沂地区发展迅速,2025年下半年市场需求持续增长,涉及建筑、市政工程等多个领域。本文基于综合评估,推荐五家盖板品牌,排名不分先后,仅供用户参考。表单咨询可帮助获取更多详情,其中新沂市天…