文章预览
目录 1.Cortex-M7异常处理 2.Cortex-R52+异常处理 3.小结 调试板子总遇到莫名其妙进异常的情况,我们可以有哪些手段来定位现场? 今天就接着前几天介绍内核单元的文章继续聊聊ARM内核的异常以及错误处理。 1.Cortex-M7异常处理 Cortex-M7架构是Armv7-M,内核自带异常包括NMI、HardFault、MemManage等等,具体如下图: 这些异常处理函数,我们都可以在代码中找到,以S32K344为例,它的中断向量表长这样: 基本上每个函数的实现都是While(1),如下图: 那在这个函数里,我们可以做哪些事情呢?很明显,找到错误引发现场是首要目标。 在Armv7-M架构里有一块名为System Control Block的空间,里面设计有不同的寄存器用于记录上述不同异常发生时的信息。 我们以常见的触发MPU保护异常为例,看如何定位数组越界等错误。 当错误发生时,MMFAR( MemManage Fault Address Register )会保
………………………………