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

MCU HardFault_Handler调试方法

一.获取内核寄存器的值

1.在MDK的DEBUG模式下,当程序出现跑飞后,确定卡死在HardFault_Handler中断处
在这里插入图片描述
2. 通过Register窗口读取LR寄存器的值来确定当前系统使用堆栈是MSP还是PSP

LR寄存器值堆栈寄存器
0xFFFFFFF9MSP寄存器
0xFFFFFFFDPSP寄存器

如下图所示,当前程序使用的是PSP堆栈寄存器

在这里插入图片描述

二、查看堆栈寄存器保存的值

  1. 通过Register窗口确定MSP或PSP的地址
    如下图所示,当前程序卡死时使用的堆栈寄存器为:PSP寄存器,地址为:0x20010318
    在这里插入图片描述
  2. MSP、PSP堆栈寄存器介绍
    由于异常发生时,内核将r0、r1、r2、r3、r12、r14(lr)、pc、xprs寄存器依次入栈
    r14(lr):保存的是产生异常中断前内核执行的指令地址
    r15(pc):保存的内核正在执行的指令地址
    在这里插入图片描述
    3 查看堆栈寄存器的保存值
    将上面PSP寄存器的地址(0x20010318)输入到MDK的Memory窗口中得到的数据如下,第六个数为lr寄存器的保存值
    在这里插入图片描述

三、定位lr寄存器地址的函数名

  1. 在工程编译后的map文件中,根据lr的地址确定运行函数,如下图所示在产生异常中断前,最后执行的地址为0x0801D727在函 prvAddCurrentTaskToDelayedList中,
    在这里插入图片描述
  2. 分析产生异常中断的原因

四、获取lr寄存器保持地址的方法

  1. 通过MDK在线调试如上面介绍的流程
  2. 通过jlink工具使用命令行也可以完成上述过程的定位
    JLink Commander调试方法

相关文章:

  • Flask后端开发(二) - 功能实现和项目总结
  • 学习英语1
  • 基于Tensorflow卷积神经网络玉米病害识别系统(UI界面)
  • 大神总结:做数据可视化,谨记三要、两不要
  • 高德地图撒点组件
  • React使用富文本CKEditor 5,上传图片并可设置大小
  • 【机器学习】四、计算学习理论
  • 年终总结一定用得上!这8款AI制作PPT软件不容错过。
  • JS ??和?.
  • springboot 操作sql改变状态的时候,怎么防止并发操作带来的问题
  • python加上ffmpeg实现音频分割
  • nginx项目部署教程
  • [云原生1. ] 使用Docker-compose一键部署Wordpress平台
  • CAD vba 字典
  • 阿里云双11服务器返现活动来了
  • [PHP内核探索]PHP中的哈希表
  • python3.6+scrapy+mysql 爬虫实战
  • 「译」Node.js Streams 基础
  • 【挥舞JS】JS实现继承,封装一个extends方法
  • gulp 教程
  • Java知识点总结(JavaIO-打印流)
  • learning koa2.x
  • Linux CTF 逆向入门
  • uni-app项目数字滚动
  • vuex 笔记整理
  • XML已死 ?
  • 搭建gitbook 和 访问权限认证
  • 基于Vue2全家桶的移动端AppDEMO实现
  • 力扣(LeetCode)21
  • 猫头鹰的深夜翻译:Java 2D Graphics, 简单的仿射变换
  • 巧用 TypeScript (一)
  • ​ 全球云科技基础设施:亚马逊云科技的海外服务器网络如何演进
  • #使用清华镜像源 安装/更新 指定版本tensorflow
  • (C++17) std算法之执行策略 execution
  • (cos^2 X)的定积分,求积分 ∫sin^2(x) dx
  • (MATLAB)第五章-矩阵运算
  • (Redis使用系列) Springboot 使用redis实现接口幂等性拦截 十一
  • (编译到47%失败)to be deleted
  • (翻译)Quartz官方教程——第一课:Quartz入门
  • (附源码)基于SpringBoot和Vue的厨到家服务平台的设计与实现 毕业设计 063133
  • ***通过什么方式***网吧
  • ***详解账号泄露:全球约1亿用户已泄露
  • **Java有哪些悲观锁的实现_乐观锁、悲观锁、Redis分布式锁和Zookeeper分布式锁的实现以及流程原理...
  • .net 8 发布了,试下微软最近强推的MAUI
  • .NET CLR基本术语
  • .NET Remoting学习笔记(三)信道
  • .net 后台导出excel ,word
  • .net 微服务 服务保护 自动重试 Polly
  • .NET/C# 中你可以在代码中写多个 Main 函数,然后按需要随时切换
  • .NET构架之我见
  • .net开发时的诡异问题,button的onclick事件无效
  • .project文件
  • .set 数据导入matlab,设置变量导入选项 - MATLAB setvaropts - MathWorks 中国
  • @transaction 提交事务_【读源码】剖析TCCTransaction事务提交实现细节
  • [ C++ ] STL priority_queue(优先级队列)使用及其底层模拟实现,容器适配器,deque(双端队列)原理了解