十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Cortex-M处理器进入异常时如何确认有问题程序位置

Cortex-M处理器进入异常时如何确认有问题程序位置 目的简要介绍Cortex-M0/3/4处理器进入异常时如何确认有问题程序位置。依据从上可知进入异常时处理器会自动保存多个寄存器和返回地址到当前使用的栈此时LR中存放的是EXC_RETURN特殊值其中会标识使用的哪个栈保存的异常信息。从上可知 EXC_RETURN 为 0xFFFFFFED 或 0xFFFFFFFD 时表示使用线程栈(PSP)保存异常信息否则都是用主栈(MSP)保存异常信息。从上可知进入异常时被压入栈空间的内容是固定的不论是栈的双字对齐还是包含浮点单元前8个字32bit内容是固定的其中 SP24byte开始的4个字节就是导致异常产生的程序位置PC。实际操作程序出现异常在异常处理函数中根据LR的bit2来判断用哪个SP然后获取对应SP24byte位置连续4byte通过代码反汇编确定问题代码位置参考《ARM Cortex-M3与Cortex-M4权威指南.pdf》
返回列表