嵌套中断处理
Posted HZero
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了嵌套中断处理相关的知识,希望对你有一定的参考价值。
1.前言
本文主要是对 <<ARM嵌入式系统开发:软件设计与优化>> 第9.3.2节的读书总结,如下只是简单的做一记录,详细的后续补充
2.嵌套中断处理过程
3. 详细处理流程
结合源码可以得出如下:
1.首先进出中断处理函数后,禁用中断,并保存被打断任务的上下文,此时为IRQ处理器模式,相应的堆栈如下
2. 之后将切换回SVC模式,相应的堆栈如下:
第一步:将R4-R11入栈,这样可以有空闲的寄存器用来保存IRQ模式下的寄存器
第二步:用R4-R9来保存IRQ模式下入栈的寄存器
r0 -> r4
r1-> r5
r2 -> r6
r3-> r7
r12->r8
r14->r9
第三步:此时由于所有的寄存器都得以保存,因此可以开中断
第四步:构建SVC完整的栈帧结构
其中红色为返回任务时使用,黑色为返回被打断的中断使用
注:如果在开启中断的时候,有新的中断进来则会继续在SVC模式的堆栈基础上入栈
以上是关于嵌套中断处理的主要内容,如果未能解决你的问题,请参考以下文章