码迷,mamicode.com
首页 > 其他好文 > 详细

嵌套中断处理

时间:2018-05-12 16:17:18      阅读:208      评论:0      收藏:0      [点我收藏+]

标签:嵌入式系统   系统开发   寄存器   详细   开发   com   处理过程   构建   png   

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模式的堆栈基础上入栈

嵌套中断处理

标签:嵌入式系统   系统开发   寄存器   详细   开发   com   处理过程   构建   png   

原文地址:https://www.cnblogs.com/smartjourneys/p/9028799.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!