STM32F10xxx20xxx21xxxL1xxxx Cortex-M3程序设计手册 阅读笔记二(4):Cortex-M3处理器错误处理

       错误是异常的一个子集。总线错误:一个指令获取或向量表读取,数据访问;一个内部检测到的错误:未定义的指令,尝试改变BX指令的状态;尝试从一个标记被XN内存区域执行指令。

STM32F10xxx20xxx21xxxL1xxxx Cortex-M3程序设计手册 阅读笔记二(4):Cortex-M3处理器错误处理

       除了硬件错误外的所有错误异常均有可配置的异常优先级。软件可以失能那些错误处理的执行。

       通常,异常的优先级连同异常屏蔽寄存器的值共同决定处理器是否进入错误处理和是否可以抢占另一个错误处理。

       在某些条件下,一个可配置优先级的错误被对待为硬件错误,这被称为优先级升级,错误被描述为升级至硬件错误。这种情况出现在:一个错误处理引起了和正在服务的同样的错误,这个升级至硬件错误因为错误处理和目前的错误有相同的优先级不能抢占它自己;一个错误处理引起了一个相等或低优先级的错误;一个异常处理引起一个相等或低优先级的错误;一个错误出现而这个错误处理未使能。

       如果在进入总线错误压栈时出现一个总线错误,这个总线错误不能升级为硬件错误。这意味着破坏的栈引起的错误,尽管压栈出错这个错误处理执行。这个错误处理操作但栈目录破坏。

       只有复位和不可屏蔽中断可以抢占固定优先级的硬件中断,硬件中断可以抢占除复位、不可屏蔽中断、另一个硬件错误外的任何中断。

错误状态寄存器指明错误的原因。对于总线错误和内存管理错误,错误地址寄存器指明引起错误的操作访问地址。

STM32F10xxx20xxx21xxxL1xxxx Cortex-M3程序设计手册 阅读笔记二(4):Cortex-M3处理器错误处理

当执行NMI或硬件错误处理时,如果一个硬件错误出现,处理器进入锁定状态。当处理器进入锁定状态,不执行任何指令。处理器保持锁定状态直到:复位或NMI出现。如果锁定状态出现引起于NMI处理,一个随后的NMI不能导致处理器离开锁定状态(那不就只能复位咯)。