arm中断处理的研究

arm中断处理的研究

ID:31726910

大小:284.52 KB

页数:7页

时间:2019-01-17

arm中断处理的研究_第1页
arm中断处理的研究_第2页
arm中断处理的研究_第3页
arm中断处理的研究_第4页
arm中断处理的研究_第5页
资源描述:

《arm中断处理的研究》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、ARM中断处理的研究在嵌入式系统中常用的RISC处理器是ARM核,它具有体积小、功耗低、成本低、性价比高的特点。然而,不管是哪种型号的ann处理器,也无论该嵌入式系统中是否有操作系统,中断处理,特别是IRQ中断,始终是必须的,而中断处理的核心问题是上下文的保存。能否安全而又高效地保存上下文,将影响一个嵌入式系统的性能与稳定。笔者对am处理器的普通中断处理、任务切换中断处理、可重人中断处理和基于优先级的可重人性中断处理的上下文保存技术进行分析与总结。为保证理论的正确性,核心的程序代码都经过了实验的检测。1系统中断处理简介arm处理器的中断主要有两种:

2、IRQ普通中断和FIQ快速中断。快速中断本质上与普通中断没有太大的差别,它们在处理机制上有许多相同的地方。IRQ中断是最频繁的也是最为影响系统性能的,所以对它的研究与处理也就最有价值。下面简要地介绍一下IRQ异常发生时ARM处理器的工作过程。在IRQ中断发生时,arm处理器的硕件会自动执行以下工作:①将被中断任务模式的CPSR值保存到IRQ模式中的SPSR寄存器中;②将被中断任务模式的PC值保存到IRQ模式中的LR寄存器中;③将模式自动切换到IRQ模式,并将CPSR中的bit7位置1禁止后继IRQ中断的发生;④PC被赋予0x18的地址值,程序将从0

3、x18片开始执行。结合图1,可以更好地理解ann中断处理机制的工作过程。模式栈寄存器寄存器IRQ中断处理寄存器保存示意图2普通中断处理有些arm嵌入式系统可能对中断的耍求比较低,即发生中断后首先查询相应的中断源,然后进行中断服务,最后从中断服务程序中返回到被中断处继续运行程序。如何在这种简单应用中保证安全又高效地处理中断呢?"安全”就意味着中断发生时上下文被完好保存不被破坏,“高效”就是说保存尽可能少的寄存器(当然是建立在安全的基础上的)。由图1可知,在普通中断处理中,中断服务就可以在IRQ模式中运行。根据ATPCS的调用规则,在子程序调用中emn

4、编译器保存了R4〜R11寄存器,因此就没有必要再次保存。那么剩下的寄存器就必须了以保存,防止从中断服务程序返回后被破坏。可以用汇编语言和C语言书写处理代码。首先假设初始化代码中已正确建立了IRQ堆栈。InterruptHandlerSUBR14eterfgtK4com电&发烧左;调整LR寄存器伊r**FSTMFDSP!,{R0-R3,R12,R14};保护上下文〈所有已使能中断的查询与服务〉;将同时发生的中断全部服务,以提高效率LDMFDSP!,{R0-R3,R12,R14};恢复上下文在上述保存上下文中没有必要保存SPSR。因在非嵌套的中断处理程

5、序中,它不会被任何顺序的中断所破坏。如果用C语言来书写该处理程序,可以使用关键字一IRQ来说明,以告诉编译器实现如下的操作:①保存.ATPCS规是的被破坏的寄存器;②保存其他中断处理程序中用到的寄存器;③同时将(LR-4)赋予程序汁数器PC,实现中断程序的返回并且恢复CPSR寄存器的内容。普通中断处理的C语言程序可以按如下格式编写:irqvoidIRQHandlerCvoid){V所有已使能中断的查询与服务〉其实,与C语言相对应的汇编程序是如下的:IRQHanE嘖蕊gcom电沐X①STMFDSP!,(R0-R3,R12,LR}<査询中断源并进入相应

6、的服务程序〉②LDMFDSP!,{R0-R3,R12,LR}③SUBSPC,LR,#4END可见,无论是用C语言还是汇编语言来编写,它们的工作原理都是一样的。图2给出了普通中断处理过程中,am寄存器的保存示意图(虚线是压栈保存,实线是弹栈恢复)。图中与程序处理的步骤相对应,可以帮助理解处理器上下文的保存过程。3任务切换有操作系统的嵌入式系统屮,屮断的发生要求保存全部寄存器的内容到任务的栈中,它不是基于安全的考虑是因为可能屮断会导致任务的切换。任务切换发生时所有任务的寄存器的值都要保存到该任务的栈中。下个任务的上下文将从该任务栈中得以恢复到处理器的寄

7、存器屮。下面就本问题作出分析并给出实现的程序代码。从图1屮断处理寄存器的保存可知,屮断发生后任务的CPSR和PC两寄存器的值在IRQ模式的SPSR和LR屮,所以不能简单地切换到任务运行的模式屮,否则被屮断任务返回时的CPSR和PC将不可见(因为它们保存在IRQ模式的专用寄存器屮,在其他模式屮无法操作)。此时,可以考虑设置一些变量区作为媒介,将其予以转存到任务运行模式的栈屮去。下面假设任务切换是在SVC模式屮运行的。结合上面的分析,可以有图3所示的保存任务切换的示意图(虚线是压栈保存,实线是弹栈恢复;LR_Frame和SPSR_Frame是变量区)。

8、ROROtoCPSR厂SPSRSVC模式栈!;模丄篡器R12SPSRJrqLR_svcLRJrq⑥LRJranw⑦SPSR

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。