您的位置 首页 新能源

ARM 中止处理的安全性与高效性研讨

引言在嵌入式系统中常用的RISC处理器是ARM核,它具有体积小、功耗低、成本低、性价比高的特点。然而,不管是哪种型号的ARM处理器,也无论该

导言

在嵌入式体系中常用的RISC处理器是ARM核,它具有体积小、功耗低、成本低、性价比高的特色。但是,不管是哪种类型的ARM处理器,也不管该嵌入式体系中是否有操作体系,中止处理,特别是IRQ中止,始终是有必要的,而中止处理的中心问题是上下文的保存。能否安全而又高效地保存上下文,将影响一个嵌入式体系的功能与安稳。笔者对ARM处理器的一般中止处理、使命切换中止处理、可重人中止处理和依据优先级的可重人道中止处理的上下文保存技能进行剖析与总结。为确保理论的正确性,中心的程序代码都经过了试验的检测。

1 体系中止处理简介

ARM处理器的中止主要有两种:IRQ一般中止和FIQ快速中止。快速中止本质上与一般中止没有太大的不同,它们在处理机制上有许多相同的当地。IRQ中止是最频频的也是最为影响体系功能的,所以对它的研讨与处理也就最有价值。

下面简要地介绍一下IRQ反常产生时ARM处理器的作业进程。在IRQ中止产生时,ARM处理器的硬件会主动履行以下作业:

①将被中止使命形式的CPSR值保存到IRQ形式中的SPSR寄存器中;
②将被中止使命形式的PC值保存到IRQ形式中的LR寄存器中;
③将形式主动切换到IRQ形式,并将CPSR中的bit7方位1制止后继IRQ中止的产生;
④PC被赋予0xl8的地址值,程序将从0xl8片开端履行。结合图1,能够更好地了解ARM中止处理机制的作业进程。

2 一般中止处理

有些ARM嵌入式体系或许对中止的要求比较低,即产生中止后首要查询相应的中止源,然后进行中止服务,最终从中止服务程序中回来到被中止处持续运转程序。怎么在这种简略使用中确保安全又高效地处理中止呢?“安全”就意味着中止产生时上下文被无缺保存不被损坏,“高效”就是说保存尽或许少的寄存器(当然是建立在安全的基础上的)。由图1可知,在一般中止处理中,中止服务就能够在IRQ形式中运转。依据ATPCS的调用规矩,在子程序调用中ARM编译器保存了 R4~R11寄存器,因而就没有必要再次保存。那么剩余的寄存器就有必要予以保存,避免从中止服务程序回来后被损坏。能够用汇编言语和C言语书写处理代码。

首要假定初始化代码中已正确建立了IRQ仓库。

<一切已使能中止的查询与服务>
;将一起产生的中止悉数服务,以进步功率
LDMFD SP!,{R0-R3,R12,R14} ;康复上下文

在上述保存上下文中没有必要保存SPSR。因在非嵌套的中止处理程序中,它不会被任何次序的中止所损坏。

①保存.ATPCS规则的被损坏的寄存器;
②保存其他中止处理程序中用到的寄存器;
③一起将(LR-4)赋予程序计数器PC,完成中止程序的回来而且康复CPSR寄存器的内容。

一般中止处理的C言语程序能够按如下格局编写:

可见,不管是用C言语仍是汇编言语来编写,它们的作业原理都是相同的。图2给出了一般中止处理进程中,ARM寄存器的保存示意图(虚线是压栈保存,实线是弹栈康复)。图中与程序处理的进程相对应,能够协助了解处理器上下文的保存进程。

3 使命切换

有操作体系的嵌入式体系中,中止的产生要求保存悉数寄存器的内容到使命的栈中,它不是依据安全的考虑是由于或许中止会导致使命的切换。使命切换产生时一切使命的寄存器的值都要保存到该使命的栈中。下个使命的上下文将从该使命栈中得以康复到处理器的寄存器中。下面就本问题作出剖析并给出完成的程序代码。从图 1中止处理寄存器的保存可知,中止产生后使命的CPSR和PC两寄存器的值在IRQ形式的SPSR和LR中,所以不能简略地切换到使命运转的形式中,不然被中止使命回来时的CPSR和PC将不可见(由于它们保存在IRQ形式的专用寄存器中,在其他形式中无法操作)。此刻,能够考虑设置一些变量区作为前言,将其予以转存到使命运转形式的栈中去。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/qiche/xinnengyuan/254480.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部