3 Dump Memory to Recover Crash Scene

3.1 Dump Memory Method

Refer to section 5.8 Dump Memory Method to dump the crash memory scene

3.2 Automatic Crash Scene Recovery Using Trace32

Refer to section 6.2 Recover Hcpu Crash Scene Using Trace32

3.3 Manual Crash Scene Recovery Using Trace32

When automatic recovery fails, you can manually fill in the register values based on the crash scene to recover the crash scene
When an interrupt occurs (hardfault is also an interrupt), the interrupt function is:

HardFault_Handler->rt_hw_hard_fault_exception->handle_exception

Within the function, registers R0-R4, R12, R14(LR), and PC are pushed onto the stack into the saved_stack_frame and saved_stack_pointer variables,
alt text

The pushed registers can be seen in the second figure. In the crash scene shown in the first figure, R0 is at address 0x20054998, LR is at address 0x200549AC, and PC is at address 0x200549B0:0x10CD6602,
Register PC: stores the program counter pointer before the crash
Register LR: stores the program counter pointer to return to after execution
These registers can be used to recover the crash scene,
The global variable saved_stack_pointer stores the base address of the stack push
The global variable saved_stack_frame stores the data pushed onto the stack

alt text

alt text