新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 一种基于ARM处理器的异常处理设计与实现

一种基于ARM处理器的异常处理设计与实现

作者:时间:2016-09-12来源:网络收藏

时钟常用于向操作系统通过调度单位,因此中断状态会持续直至完成调度处理,处理完成后由时钟源进行中断清除,以开始下一周期计时。根据应用需求,时钟中断应设置为电平触发方式,通过APR和ATR寄存器,设置该时钟为高电平触发模式。通过ITR寄存器,设置该时钟为中断方式。

本文引用地址:http://www.eepw.com.cn/article/201609/304718.htm

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为中断方式

中断控制器中设置完成后,当发生时钟中断时,PC指向入口0x1C处,由于FIQ的向量入口为处理器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所示。

一种基于ARM处理器的异常处理设计与实现

实验中,随着采样调度周期数的不断增加,IRQ模式下时钟计时与理论值的处理器时钟周期偏差数较FIQ模式明显偏多,FIQ模式计时比IRQ模式更接近实际计时。结果表明,通过FIQ模式进行的时钟中断较IRQ方式更精确。

6 结束语

本文提出一种高效的异常处理方案,并以时钟为例进行了验证。通过实现验证,采用上述FIQ中断模式所设计的时钟中断控制程序,较IRQ模式的时钟中断方式更为高效,能为系统提供更为精确的调度周期,实验效果与预期相符。


上一页 1 2 下一页

评论


相关推荐

技术专区

关闭