当前位置:网站首页>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

原网站

版权声明
本文为[Weiyuan escort agency]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/187/202207060913225384.html