2.5.5 Cortex-M3 异常处理机制
1.末尾连锁
末尾连锁能够在两个中断之间没有多余的状态保存和恢复指令的情况下实现异常背对背处理。如图 2.11 所示。在退出 ISR 并进入另一个中断时,处理器省略了 8 个寄存器的出栈和入栈操作。如果当前 挂起中断的优先级比所有被压栈的异常的优先级都高。则处理器执行末尾连锁机制。如果挂起中断的优 先级比被压栈的异常的最高优先级都高,则省略压栈和出栈操作,处理器立即取出挂起的中断向量。在 退出前一个 ISR 之后,开始执行被末尾连锁的 ISR。
图 2.11 末尾连锁示意图
2.异常迟来
在 Cortex-M3 中迟来中断的意思是如果前一个 ISR 还没有进入执行阶段,并且迟来中断的优先级比 前一个中断的优先级要高,则迟来中断能够抢占前一个中断。如图 2.12 所示。
图 2.12 迟来异常示意图
响应迟来中断时需执行新的取向量地址和 ISR 预取操作。迟来中断不保存状,因为状态保存已经被
最初的中断执行过了,因此不需要重复执行。