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

图2.10 末尾连锁示意图