armink / CmBacktrace

Advanced fault backtrace library for ARM Cortex-M series MCU | ARM Cortex-M 系列 MCU 错误追踪库
MIT License
1.58k stars 640 forks source link

if ((depth == 2) && regs_saved_lr_is_valid && (pc == buffer[1])) 何时触发? #59

Open YangJun233 opened 2 years ago

YangJun233 commented 2 years ago

硬件错误中断中,调用print_call_stack前,sp已经减去了R0~R3, R12, LR,PC,xPSR这些寄存器地址,不明白if ((depth == 2) && regs_saved_lr_is_valid && (pc == buffer[1])) 何时才会被触发? 感谢解惑!😃

YangJun233 commented 2 years ago

想明白了,进入函数lr自动入栈一次,进入硬件错误中断lr再次入栈一次,所以有可能是两次lr入栈