当前位置:网站首页>STM32 如何定位导致发生 hard fault 的代码段
STM32 如何定位导致发生 hard fault 的代码段
2022-07-06 09:16:00 【薇远镖局】
产生 hard fault 方法:
对不可访问的内存地址进行写操作
uint32_t *addr = (uint32_t *)0x20100000;
*addr = 0x12;STM32 定位导致发生 hard fault 的代码段 ~ 流程:
1、获得进入中断服务函数 HardFault_Handler 前的 PC 值(PC 值表示的是汇编指令所在的 flash 地址)
2、生成反汇编文件(内含 flash 地址及对应的汇编指令,以及汇编对应的 C 程序)或者 MAP 文件
3、在反汇编文件中,通过 PC 值找到对应的 C 程序语句;或者在 MAP 文件通过 PC 值找到对应的调用函数
获得进入中断服务函数 HardFault_Handler 前的 PC 值
方法1:
使用 RT-Thread 系统,如果出现 hard fault,会在中断服务函数 HardFault_Handler 中打印如下消息:

从 log 可得知 线程 “ connect t “ 内的程序导致 hard fault,程序执行到 PC: 0x08055F22 处跳转到中断服务函数 HardFault_Handler
方法2:
在中断服务函数 HardFault_Handler 的开始位置打一个断点

程序运行到这里后,先查看寄存器LR的值:
如果LR为0xXXXXXXX9,则进入中断前SP的值为MSP;
如果LR为0xXXXXXXXD,则进入中断前SP的值为PSP;
下图的LR为0xXXXXXXXD(截图未显示出来),所以查看寄存器 PSP 的值,为 0x2000FA30

通过 PSP 的值,根据寄存器入栈顺序,就可以得到 PC 值(由于是小端编码,所以为 0x08055F6A)

生成反汇编文件
方法1:
ELF 文件反汇编,生成汇编文件:
.arm-none-eabi-objdump.exe -l -S . tthread.elf > .aaa.c
方法2:
启动 RT-Thread Studio 或者其他 IDE 调试,打开 “反汇编” 视图

方法3:
查看 map 文件,有类似于反汇编文件的一些信息,对于 RT-Thread 功能,则是 rtthread.map
查看 rtthread.map 文件可知 0x08055F22 位于函数 load_data_to_toServerBuf 内

边栏推荐
猜你喜欢

Vs2019 desktop app quick start

Principle and implementation of MySQL master-slave replication

人脸识别 face_recognition

小L的试卷

4. Install and deploy spark (spark on Yan mode)

Apprentissage automatique - - régression linéaire (sklearn)

{one week summary} take you into the ocean of JS knowledge

电商数据分析--用户行为分析

【CDH】CDH5.16 配置 yarn 任务集中分配设置不生效问题

Small L's test paper
随机推荐
Variable star user module
Using LinkedHashMap to realize the caching of an LRU algorithm
Small L's test paper
mysql实现读写分离
Internet protocol details
vs2019 使用向导生成一个MFC应用程序
double转int精度丢失问题
常用正则表达式整理
【CDH】CDH5.16 配置 yarn 任务集中分配设置不生效问题
Common regular expression collation
yarn安装与使用
XML file explanation: what is XML, XML configuration file, XML data file, XML file parsing tutorial
Case analysis of data inconsistency caused by Pt OSC table change
L2-006 tree traversal (25 points)
Nodejs connect mysql
MATLAB学习和实战 随手记
Kept VRRP script, preemptive delay, VIP unicast details
Mall project -- day09 -- order module
Wangeditor rich text component - copy available
搞笑漫画:程序员的逻辑