3 Dump内存恢复死机现场¶
3.1 Dump内存方法¶
参照章节5.8 Dump内存方法dump死机内存现场
3.2 Trace32自动恢复死机现场方法¶
3.3 Trace32手动恢复死机现场方法¶
在自动恢复现场不成功时,可以根据死机现场手动填入寄存器值,恢复死机现场
中断发生时(hardfault也是中断)中断函数:
HardFault_Handler->rt_hw_hard_fault_exception->handle_exception
函数内会把寄存器R0-R4,R12,R14(LR),PC压栈到saved_stack_frame
和saved_stack_pointer
变量中,
压栈的寄存器可以看下图二,如下图一的死机现场,地址0x20054998上是R0,地址0x200549AC是LR,地址0x200549B0是PC:0x10CD6602,
寄存器PC:存放死机前的程序PC指针
寄存器LR:存放程序执行完要返回的程序指针
可以拿这些寄存器可以恢复死机现场,
全局变量saved_stack_pointer存的就是压栈的基地址
全局变量saved_stack_frame存的就是压栈的数据