Cortex-M3和Cortex-M4内核的Fault异常都支持捕获非法内存使用方法和非法编程行为.Fault异常能否检测到的情况例如: -总线Fault: 在取址、数据读/写、取中断向量、进入/退出中断时寄存器堆栈操作(入栈/出栈)时检测到内存访问错误; -存储器管理Fault: 检测到内存访问违反了MPU定义的区域; -用法Fault: 检测到未定义的指令异常,未对齐的多重加载/存储内存访问。如果使能相应控制位,还可以检测出除数为零以及其他未对齐的内存访问; -硬件Fault:(也就是我们常说的硬件错误 HardFault) 如果上面的总线Fault、存储器管理Fault、用法Fault的处理程序不能被执行(例如禁能了总线Fault、存储器管理Fault、用法Fault异常或者在这些异常处理程序执行过程中又出现了Fault)则触发硬Fault. 附件笔记主要用于纪录从Cortex内核角度分析Fault错误原因.有兴趣大家可认真阅读附件笔记。
|