2 Dump内存恢复死机现场

2.1 Trace32手动恢复死机现场方法

中断发生时(hardfault也是中断)中断函数:

HardFault_Handler->rt_hw_hard_fault_exception->handle_exception

函数内会把寄存器R0-R4,R12,R14(LR),PC压栈到saved_stack_framesaved_stack_pointer变量中,
alt text

压栈的寄存器可以看下图二,如下图一的死机现场,地址0x20054998上是R0,地址0x200549AC是LR,地址0x200549B0是PC:0x10CD6602,
寄存器PC:存放死机前的程序PC指针
寄存器LR:存放程序执行完要返回的程序指针
可以拿这些寄存器可以恢复死机现场,
全局变量saved_stack_pointer存的就是压栈的基地址
全局变量saved_stack_frame存的就是压栈的数据

alt text

alt text