HardFault Err,无法调试,错误定位

news2024/10/6 1:34:23

一、简介

        在平时开发的时候,经常会遇到程序报错的情况。对于裸机来说,可以通过在线调试的方式进行定位问题。但是对于RTOS系统来时,很多MCU/SOC是不支持在线调试的,此时,如果系统报错,我们就需要根据系统的报错信息来定位到出问题的问题点。

        可在线调试,可参考如下文章进行追溯:

MCU HardFault问题查找和破解方法-腾讯云开发者社区-腾讯云

        不可在线调试,参考本文章。

二、报错原理

        当处理器接收到一个异常后,芯片硬件会自动把8个通用寄存器组压入当前栈空间(xPSR、PC、LR、R12、R3、R2、R1、R0)、如果异常发生时,当前代码正在使用PSP,则上面8个寄存器将被压入PSP中,否则,压入MSP。压入哪里可以通过LR寄存器的bit2位来判定。

         然后根据SP指针,来确定PC指针的值。PC的值,在SP指针地址的24字节后

        找到PC指针的内容后,就知道了异常时,程序运行到了哪里。此时可以通过系统生成的.disasm反汇编文件来进行定位。

三、实例

        在函数中,插入如下异常代码

    char *p = 1;
    for(uint8_t i = 0; i < 100; i++)
    {
        *p = i;
    }

         因为指针p的地址被赋为1,此时再操作,一定会报错。运行代码后,产生如下报错信息。

Dump Log Buffer
HardFault Err

R0=0x0 R1=0x1 R2=0x40024000 R3=0x30

R4=0x6 R5=0x2086D0 R6=0xA5A5A5A5 R7=0xA5A5A5A5

R8=0xA5A5A5A5 R9=0xA5A5A5A5 R10=0xA5A5A5A5 R11=0xA5A5A5A5

R12=0x80000000 LR=0x7973 PC=0x81893A PSR=0x41000000 SP=0x215140

MSP=0x2036F8 PRIMASK=0x0 BASEPRI=0x0 EXC_RETURN=0xFFFFFFFD

CFSR=0x82 HFSR=0x40000000 DFSR=0x0 AFSR=0x0

MMFAR=0x1

Current Task Number 3, pxCurrentTCB 00287238, pxTopOfStack 0021505c
Mem Dump SRAM addr 0x200000

        因为芯片不同,打印的内容不同,我使用的芯片,会直接打印出PC指针的内容。显示PC=0x81893A。表示程序运行到0x81893A的位置时出错了

        根据该地址,在.disasm反汇编文件中查找

        可以看到,上线行代码,已经定位到了我们的异常代码处。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1831688.html

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

相关文章

节假日零售数据分析:节假日销售的得力助手

在奥威BI零售数据分析方案预设了一张BI节假日分析报表&#xff08;BI数据可视化报表&#xff09;&#xff0c;它能够帮助零售企业深入理解节假日期间的销售动态&#xff0c;从而做出更精准的市场策略调整。以下是利用该报表进行数据分析的具体步骤和要点&#xff1a; 一、数据…

burp靶场xss漏洞(中级篇)上

靶场地址 http://portswigger.net/web-security/all-labs#cross-site-scripting 第一关&#xff1a;DOM型&#xff08;使用document.write函数&#xff09; 1.点击随机商品后找到搜索框&#xff0c;后在URL中添加storeId查询参数&#xff0c;并输入一个随机字母数字字符串作为…

从入门到精通:一步步打造稳定可靠的API服务

引言 在当今的软件开发周期中&#xff0c;API服务已经成为重要的组成部分&#xff0c;它们允许不同的应用程序和服务之间进行通信和数据交换。打造一个稳定可靠的API服务对于任何商业应用来说都是至关重要的。本文将作为指南&#xff0c;从基础知识到高级技术&#xff0c;一步…

知乎号开始运营了,宣传一波

知乎号开始发布一些小说、散文还有诗歌了&#xff0c;欢迎大家多来关注 知乎链接&#xff1a;姜亚轲 每篇小说都改编成网易云音乐&#xff0c;文章中也有链接&#xff0c;我做的词&#xff0c;Suno编曲和演唱&#xff0c;欢迎大家来听听

访问jlesage/firefox镜像创建的容器中文乱码问题

目录 介绍总结 介绍 最近在使用jlesage/firefox镜像创建容器的时候&#xff0c;发现远程管理家里网络的时候中文会出现乱码&#xff0c;导致整个体验非常的不好&#xff0c;网上查找资料说只要设置环境变量ENABLE_CJK_FONT1 就可以解决问题&#xff0c;抱着试一试的态度还真的成…

如何完美解决 Xshell 使用 SSH 连接 Linux 服务器报错:找不到匹配的 host key 算法

&#x1f6e0;️ 如何完美解决 Xshell 使用 SSH 连接 Linux 服务器报错&#xff1a;找不到匹配的 host key 算法 摘要&#xff1a; 本文将带领大家深入学习如何解决 Xshell 使用 SSH 连接 Linux 服务器时报错“找不到匹配的 host key 算法”的问题。通过详细的操作步骤和代码案…

deepin学习-设置自己窗口为最高层级

deepin-设置自己窗口为最高层级 一、概述1. kwin 中的窗口层级定义2. dde-session-ui 中的消息弹窗3. k-win的调试器 一、概述 窗口协议&#xff1a;wayland 在wayland的窗口下&#xff0c;有时候使用qt开发接口并不能满足我们的要求&#xff0c;就需要看窗管的写法。 setWi…

详解|访问学者申请被拒原因有哪些?

访问学者项目为全球科研人员提供了一个难得的机会&#xff0c;让他们能够跨越国界&#xff0c;深入不同的学术环境&#xff0c;进行学术交流和合作。然而&#xff0c;并非所有申请者都能如愿以偿地获得这一机会。本文将对访问学者申请中常见的被拒原因进行详细解析&#xff0c;…

计算机游戏因为d3dcompiler_47.dll丢失无法启动怎么办?解决只要d3dcompiler_47.dll丢失无法启动游戏软件的方法

d3dcompiler_47.dll 是一个动态链接库文件&#xff0c;属于 Microsoft DirectX 的一部分&#xff0c;主要负责编译和运行 3D 图形程序。它是支持 Direct3D 功能的核心组件&#xff0c;Direct3D 是一种用于编程 3D 图形的 API&#xff0c;广泛应用于游戏和图形密集型应用程序中。…

如何设置天锐绿盾的数据防泄密系统

设置天锐绿盾的数据防泄密系统&#xff0c;可以按照以下步骤进行&#xff1a; 一、系统安装与初始化 在线或离线安装天锐绿盾数据防泄密系统&#xff0c;确保以管理员身份运行安装包&#xff0c;并按照安装向导的提示完成安装。输入序列号进行注册&#xff0c;激活系统。 二…

Vuex遇到浏览器刷新,store里存的数据还在吗?

我们在做Vue前端项目的时候&#xff0c;很可能会使用Vuex来做一些状态或者数据管理&#xff0c;希望在一定程度上&#xff0c;不发送网络请求&#xff0c;不经过密集的组件数据传输&#xff0c;也可以达到数据共享的目的。但如果浏览器页面刷新了&#xff0c;Vuex中store里存的…

摩根大通研究论文:大型语言模型+自动规划器用来作有保障的旅行规划

【摘要】旅行规划是一项复杂的任务,涉及生成一系列与访问地点相关的动作序列,需要满足约束条件并最大化某些用户满意度标准。传统方法依赖于以给定形式语言表示问题,从网络来源中提取相关的旅行信息,并使用适当的问题求解器生成有效解决方案。作为替代方案,最近基于大型语言模型…

Guitar Pro 8软件安装包下载

简介&#xff1a; Guitar Pro吉他软件为帮助所有吉他爱好者学习、绘谱、创作而设计——包含吉他的现有指法及音色&#xff0c; Guitar Pro能了解各类线谱&#xff0c;看谱练吉他&#xff0c;对谱听示范&#xff0c;记录初创声音。 在做弹拨乐器的滑音、倚音、推弦、揉弦、泛…

准备好迎接3D世界的AI革新了吗:Direct3D,让3D创作触手可及

DreamTech 推出原生 3D-DiT 大模型 Direct3D 前言 3D-DiT大模型Direct3D 就目前的AI市场而言&#xff0c;将文本和图像转化为高质量的3D资产一直很难实现&#xff0c;主要目前缺乏一种能够捕捉复杂几何结构而且还能够扩展的3D的方法。但 DreamTech 发布了一种名为Direct3D的新型…

麻了,5年Java竟然不知道幂等......

在分布式系统中&#xff0c;接口幂等性是确保操作一致性的关键特性。 啥是幂等性 幂等性 指的是在给定的条件下&#xff0c;无论操作执行多少次&#xff0c;其结果都保持不变。在接口设计中&#xff0c;幂等性意味着使用相同的参数多次调用接口&#xff0c;应产生与单次调用相…

reverse-android-淘最热点so

资源 1. com.maihan.tredian 2021版 淘最热点 2. 该 app 没有加壳 ,也没混淆。 登录抓包 POST: https://api.taozuiredian.com/api/v1/auth/login/sms POST /api/v1/auth/login/sms HTTP/1.1 Content-Type: application/json Connection: close Charset: UTF-8 User-Agen…

充电学习—5、healthed 电池服务

1、healthed服务监听接收内核kernel的电池事件&#xff0c;然后上传数据给framware层的batterysevice&#xff0c;BatteryService计算电池的电量&#xff0c;显示&#xff0c;绘制动画等 android电池系统框架&#xff1a; 2、healthd服务入口&#xff1a;android/system/cor…

普通人如何入门AI人工智能?最短学习路线分享

学AI能干什么&#xff1f; 首先说一下我个人的观点&#xff0c;我认为未来一定会有很多很多人工的重复工作会被AI替代&#xff0c;并且这个趋势无法逆转&#xff0c;不管是你想象得到的行业还是想象不到的行业&#xff0c;从实体到互联网&#xff0c;从工业到家用&#xff0c;…

【Linux】进程_7

文章目录 五、进程8. 进程地址空间9. 进程终止10. 进程等待 未完待续 五、进程 8. 进程地址空间 我们上节知道了进程地址空间是根据页表来使虚拟地址转换成内存中的物理地址&#xff0c;那这种 地址空间 页表 的机制有什么好处呢&#xff1f;①这种机制可以将物理内存从无序…

基于TCAD与紧凑模型结合方法探究陷阱对AlGaN/GaN HEMTs功率附加效率及线性度的影响

来源&#xff1a;Investigation of Traps Impact on PAE and Linearity of AlGaN/GaN HEMTs Relying on a Combined TCAD–Compact Model Approach&#xff08;TED 24年&#xff09; 摘要 本文提出了一种新型建模方法&#xff0c;用于分析GaN HEMTs的微波功率性能。通过结合工…