当前位置:网站首页>STM32 how to locate the code segment that causes hard fault
STM32 how to locate the code segment that causes hard fault
2022-07-06 11:59:00 【Weiyuan escort agency】
produce hard fault Method :
Write to inaccessible memory address
uint32_t *addr = (uint32_t *)0x20100000; *addr = 0x12;
STM32 Positioning causes occurrence hard fault Code segment ~ technological process :
1、 Get into interrupt service function HardFault_Handler Before PC value (PC Value indicates where the assembly instruction is located flash Address )
2、 Generate disassembly file ( contains flash Address and corresponding assembly instructions , And compile the corresponding C Program ) perhaps MAP file
3、 In the disassembly file , adopt PC It's worth finding the corresponding C Program statement ; Or in MAP File by PC Value to find the corresponding calling function
Get into interrupt service function HardFault_Handler Before PC value
Method 1:
Use RT-Thread System , If appear hard fault, Will interrupt the service function HardFault_Handler Print the following message in :
from log Can be learned that Threads “ connect t “ The procedure in leads to hard fault, The program runs to PC: 0x08055F22 Jump to the interrupt service function HardFault_Handler
Method 2:
In interrupt service function HardFault_Handler Make a breakpoint at the beginning of
After the program runs here , Check the register first LR Value :
If LR by 0xXXXXXXX9, Before entering the interrupt SP The value of is MSP;
If LR by 0xXXXXXXXD, Before entering the interrupt SP The value of is PSP;
Below LR by 0xXXXXXXXD( The screenshot is not shown ), So look at the register PSP Value , by 0x2000FA30
adopt PSP Value , According to the register stack order , You can get PC value ( Because it is small end coding , So for 0x08055F6A)
Generate disassembly file
Method 1:
ELF File disassembly , Generate assembly file :
.arm-none-eabi-objdump.exe -l -S . tthread.elf > .aaa.c
Method 2:
start-up RT-Thread Studio Or other IDE debugging , open “ Disassembly ” View
Method 3:
see map file , There is some information similar to disassembly file , about RT-Thread function , It is rtthread.map
see rtthread.map It can be seen from the documents 0x08055F22 In function load_data_to_toServerBuf Inside
边栏推荐
- TypeScript
- [CDH] modify the default port 7180 of cloudera manager in cdh/cdp environment
- Word排版(小計)
- 电商数据分析--用户行为分析
- 数据分析之缺失值填充(重点讲解多重插值法Miceforest)
- 选择法排序与冒泡法排序【C语言】
- Composition des mots (sous - total)
- 【CDH】CDH5.16 配置 yarn 任务集中分配设置不生效问题
- [template] KMP string matching
- [Flink] cdh/cdp Flink on Yan log configuration
猜你喜欢
随机推荐
ToggleButton实现一个开关灯的效果
Detailed explanation of express framework
Basic use of pytest
Funny cartoon: Programmer's logic
TypeScript
【Flink】CDH/CDP Flink on Yarn 日志配置
uCOS-III 的特点、任务状态、启动
Stage 4 MySQL database
R & D thinking 01 ----- classic of embedded intelligent product development process
【CDH】CDH/CDP 环境修改 cloudera manager默认端口7180
Redis面试题
[CDH] modify the default port 7180 of cloudera manager in cdh/cdp environment
[yarn] yarn container log cleaning
arduino JSON数据信息解析
使用LinkedHashMap实现一个LRU算法的缓存
2019 Tencent summer intern formal written examination
[Flink] Flink learning
Contiki源码+原理+功能+编程+移植+驱动+网络(转)
MySQL数据库面试题
电商数据分析--薪资预测(线性回归)