嵌入式体系要求对反常及间断处理器能快速呼应。文中剖析了ARM体系结构下反常处理特色,提出一种依据ARM处理器的高效反常处理解决计划,以LPC3250硬件渠道为根底,对该计划进行了规划与完结。测验结果标明,该计划的反常处理更为高效。
在航空航天、工业操控及医疗等领域中,嵌入式体系的安全性、可靠性以及高效性效果显着,而反常是体系在运转进程中的突发事情,反常处理是否高效将直接影响整个体系的工作效率。为了保证嵌入式体系高效安全的运转,对处理器非正常形式下高效的反常处理机制的研讨具有重要意义。
1 反常概述
嵌入式体系中反常/间断是指由处理器内部或外部源产生并引起体系处理的一个事情。依据事情源的不同将反常分为“反常”和“间断”两种,反常指由处理器内部源所引起的事情,如不合法指令履行反常,地址拜访反常等;间断指由处理器外部间断源引起的事情。嵌入式处理器对外部间断源一般由间断操控器进行统一办理并上报处理器。关于嵌入式体系,反常/间断均会导致处理器打断正常的程序履行流程,进入特定形式进行相应的反常处理。因而,对“反常”和“间断”一般不作严厉区别。
作为嵌入式处理器,为了保证体系的实时性和程序履行的稳定性,ARM处理器支撑完好的反常处理机制。ARM处理器共有7种反常类型,每种反常都有自己固定的反常向量地址,且在反常产生后,处理器会切换至相应的反常间断形式,详细描绘如表1所示。
ARM支撑多间断嵌套,因而各反常有固定的优先级,依次为:复位、数据间断、FIQ、IRQ、预取指间断、未定义指令和SWI。各反常向量之间只要4 bit的空间,因而向量表中只能放置跳转指令。一般反常处理结构如图1所示。
2 反常的呼应和回来进程
2.1 反常的呼应
当7种反常中的任何一个在答应呼应的前提下产生时,处理器会进行必要的预处理,其动作如下:
(1)前程序状况字(Thc Current Program Status Register,CPSR)到各反常对应的备份程序状况字(The Saved Program Status Regis ter,SPSR)中。
(2)PSR中的操控位,使处理器进入相应的反常间断形式,一起切换程序状况为ARM状况,制止IRQ间断,若反常呼应为复位反常或FIQ反常,则还要制止FIQ间断。
(3)回地址,并保存到相应的LR寄存器中。
(4)量地址入PC,跳转并履行间断服务程序。
2.2 反常的回来
反常回来在反常服务程序完结后履行,内核需求用户自行完结以下回来动作:(1)PSR寄存器的内容返还给CPSR寄存器。(2)R寄存器的值赋给PC。(3)入间断服务程序时保存了部分通用寄存器的值,此刻需康复这些被保存的通用寄存器的值,且在铲除间断制止位。
3 反常服务程序的规划
LPC3250硬件渠道,板上集成两级间断操控,共支撑74路间断源。其间一级间断操控器可接纳32路外部间断请求,一切间断经过FIQ或IRQ间断信号告诉ARM核,因而需间断操控器办理一切外部间断源。
间断操控器中,ATR(AcTIvaTIon Type Register)寄存器用于设置间断的触发方法,外部间断支撑沿触发和电平触发;APR(AcTIvaTIon Polarity Register)寄存器用于确认间断类型,支撑高电位有用和低电位有用;ITR(Interrupt Type Register)寄存器用于设置间断方法,包含FIQ和IRQ两种,其间FIQ的呼应速度和优先级高于IRQ,支撑数据传输或信道处理,经过独有的寄存器来削减占用其他寄存器,一般嵌入式体系将一切外部间断选用IRQ反常间断形式办理;IER(InterruptEnable Register)寄存器用于对外部间断进行屏蔽或使能;RSR(Raw Stat us Register)寄存器用于描绘当时一切间断源状况。
间断源产生间断时,处理器从IRQ或FIQ反常进口开端履行处理例程。一般嵌入式体系依据间断源的差异存在不同的间断服务程序,为了正确判别出详细的间断源,规划在反常向量表之外,体系维护相关间断操控器的间断向量表,结构如表2所示。
间断向量表,用于寄存详细间断源对应的间断服务程序的进口地址。当呼应外设间断请求时,进入间断服务程序经过间断操控器辨认间断源,并依据间断向量表履行处理例程。
LPC3250渠道规划,不经过间断操控器进行间断源的优先级操控,经过RSR寄存器获取间断源状况后,由体系软件进行间断源优先级装备。间断处理中由体系挑选当时最高优先级间断,并进入对应间断源的间断处理例程,间断处理进程如图2所示。
4 反常服务程序的完结
嵌入式实时操作体系中,无论是实时呼应并处理来自各个被控方针的实时信息,仍是对使命履行时刻的办理、资源的限时等候等,均需求时钟的参加。因而,准确且具有满足精度的时钟关于实时体系必不可少。
每次时钟间断产生,时钟间断服务程序都会被履行。因而时钟间断服务程序履行的频率很高,每个体系周期都会被履行,这要求程序的处理高效、简练。
因为ARM处理器中FIQ的呼应速度和优先级均高于IRQ,因而选用FIQ方法完结对处理器时钟间断的处理,其他外部间断由IRQ反常统一办理,反常处理结构图如图3所示。
嵌入式时钟常用于向操作体系经过调度单位,因而间断状况会继续直至完结调度处理,处理完结后由时钟源进行间断铲除,以开端下一周期计时。依据使用需求,时钟间断应设置为电平触发方法,经过APR和ATR寄存器,设置该时钟为高电平触发形式。经过ITR寄存器,设置该时钟为FIQ间断方法。
LPC3250处理器可装备多路时钟源,以μs级时钟(Millisecond Timer)为例,依据使用需求,在间断操控器中对该间断源进行以下首要设置:
Write(VIC_APR,0x3FF0EFF8);//经过APR寄存器MSTIMER_INT方位1,设置Millisecond Timer间断为高电位有用
write(VIC_ATR,0xFEFFFFFF);//经过ATR寄存器MSTIMER_INT方位0,设置Millisecond Timer为电平触发
write(VIC_ITR,0x08000000);//经过ITR寄存器MSTIMER_INT方位1,设置Millisecond Timer为FIQ间断方法
间断操控器中设置完结后,当产生时钟间断时,PC指向FIQ的反常向量进口0x1C处,因为FIQ的向量进口为ARM处理器7种反常向量的尾地址,因而无需经过跳转指令进行处理例程的跳转。在该进口处对间断进行以下首要处理:
sub lr,lr,#4核算回来地址
stmfd sp!,{ri-rm,lr}保存使用到的寄存器
…
mov lr,pc
ldr pc,=IntHandler
…
Ldmfd sp!,{ri-rm,pc}间断回来,标明将SPSR的值赋给CPSR
其间IntHandler为间断处理接口,首要完结为嵌入式操作体系供给根本的调度周期以及时钟间断源间断状况的铲除。
完结时钟间断源的铲除,需设置定时器中ISR(Millisecond Timer Interrupt Status register)寄存器,详细设置如下:
write(MSTIMER_ISR,0x1);//经过时钟中ISR寄存器MATCH0_INT方位1,铲除时钟间断源
5 功用及功用测验
在完结规划、编码及穿插编译后,对该反常机制在LPC3250方针机上的运转的状况进行功用和功用测验。
5.1 功用测验
选用FIQ形式进行定时器间断处理,操作体系可正确获取调度周期,标明该间断处理功用正确。
5.2 功用测验
因为选用FIQ间断形式进行时钟间断处理,在反常进口处无需额定的跳转操作,直接进行时钟间断处理。且规划中FIQ只用于时钟间断,因而无需从间断操控器获取间断号的获取,削减了间断处理指令,从而降低了处理时刻。LPC3250渠道处理器主频为266MHz,处理器时钟周期为1/266μs,以1/1 000 s为单位向操作体系供给调度周期为例,总线周期差错累计试验数据如图4所示。
试验中,跟着采样调度周期数的不断添加,IRQ形式下时钟计时与理论值的处理器时钟周期偏差数较FIQ形式显着偏多,FIQ形式计时比IRQ形式更挨近实践计时。结果标明,经过FIQ形式进行的时钟间断较IRQ方法更准确。
6 结束语
本文提出一种高效的反常处理计划,并以时钟为例进行了验证。经过完结验证,选用上述FIQ间断形式所规划的时钟间断操控程序,较IRQ形式的时钟间断方法更为高效,能为嵌入式体系供给更为准确的调度周期,试验效果与预期相符。