基于ARM处理器的高效异常处理的解决方案

发布者:csZhou最新更新时间:2015-03-27 来源: ck365关键字:ARM  处理器  异常处理 手机看文章 扫描二维码
随时随地手机看文章
在航空航天、工业控制及医疗等领域中,嵌入式系统的安全性、可靠性以及高效性作用显著,而异常是系统在运行过程中的突发事件,异常处理是否高效将直接影响整个系统的工作效率。为了确保嵌入式系统高效安全的运行,对处理器非正常模式下高效的异常处理机制的研究具有重要意义。

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)入中断服务程序时保存了部分通用寄存器的值,此时需恢复这些被保存的通用寄存器的值,且在清除中断禁止位。[page]

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中断方式。[page]

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模式的时钟中断方式更为高效,能为嵌入式系统提供更为精确的调度周期,实验效果与预期相符。

关键字:ARM  处理器  异常处理 引用地址:基于ARM处理器的高效异常处理的解决方案

上一篇:ZigBee与WiFi的双模无线网关设计方案解析
下一篇:嵌入式Web和ZigBee的智能家居系统方案

推荐阅读最新更新时间:2024-03-16 13:56

MIPS科技等公司共同完成高性能ASIC处理器设计
Open-Silicon、 MIPS 科技公司和Virage Logic (NASDAQ: VIRL)三家公司共同宣布,已成功开发一款测试芯片,充分展现出构建高性能处理器系统的业界领先技术。该处理器测试芯片实现了1.1GHz的频率速度,成功通过了65nm 芯片测试,使其成为65nm ASIC 中最快的处理器之一。同时,后续40nm器件的开发工作也已经开始进行,目标是超过2.5GHz频率,并提供超过5000 DMIPS的性能。这项开发计划采用了Open-Silicon的CoreMAXTM技术,以及超标量MIPS32TM 74KTM 处理器内核。74KTM是一款完全可合成的处理器内核,已广泛用于高端数字消费设备、机顶盒及网络解决
[半导体设计/制造]
ARM9(S3C2440) ADC
模拟信号/数字信号 (1)、模拟信号是一种在时间上连续,数值上也连续的物理量,具有无穷多的数值,从自然界感知的大部分物理量都是模拟性质的,如速度,压力,温度,声音等。 (2)、数字信号在时间上和数值上均是离散的,而离散信号的值只有真与假,是或不是,因此可以使用二进制中的0与1来表示 。 ADC驱动流程 ADC主要驱动程序 main.c #define ADC_FREQ 2500000 void Main(void) { /*时钟初始化*/ Set_Clk(); /*adc初始化*/ adc_init(); while(1) {
[单片机]
<font color='red'>ARM</font>9(S3C2440) ADC
ARM-Linux架构的远程可控电源插座设计方案
互联网的迅速发展,实现了信息的高速传输和资源共享,极大地方便了人们的生活。嵌入式系统广泛应用于各种电器产品、智能仪表和控制设备中,它与互联网的结合是一种必然的趋势。 嵌入式系统和网络技术的快速发展,为网络远程控制的发展和完善提供了技术基础。 笔者综合运用嵌入式系统和Web技术,设计了一种可通过互联网进行远程控制的电源插座系统,实现对家用或工业电器的远程实时控制。用户通过网页浏览器访问该系统,对各插座进行打开或关闭的操作,实现对与其相连接的电器的远程控制。 1 嵌入式Web工作原理 嵌入式Web的体系结构如图1所示。客户端和嵌入式系统中Web服务器之间的通信协议采用HTTP(超文本传输协议)。嵌入式操作系统提
[单片机]
于<font color='red'>ARM</font>-Linux架构的远程可控电源插座设计方案
高通谈手机处理器:不能超过3W、45℃
Fudzilla近日采访了高通的几位高管,包括CDMA技术高级市场总监Michelle Leyden Li、GPU产品管理高级总监Tim Leland、CPU产品管理总监Tavis Lanier,畅谈了移动平台的诸多方面,尤其是芯片的功耗和发热。高通认为,45℃是移动处理器所能允许的最高温度,同时,手机处理器的热设计功耗最多只能允许2.5-3W,平板上则可以放宽到5W。 注意,热设计功耗并非芯片本身消耗的能量,而是针对散热设计的指标。 高通称,这两组数据是移动处理器保持被动散热的极限,再高就必须使用主动散热,而这在手机里是不可想象的,平板里也没见有谁敢做过。 高通表示,他们的骁龙800、骁龙600都是按照以上目标设计的,因此
[手机便携]
基于ARM9的18B20温度传感器程序
18B20温度传感器,典型的时序操作器件,用51单片机写很方便,可是把这现成的程序移植到FPGA、ARM、430上面,还需要一定的翻译功底。 //------------------------------------------------------------------------------------- //函数名称:dmsec //入口参数:count //函数功能:延时子程序 //------------------------------------------------------------------------------------- void dmsec(uint count) { uchar
[单片机]
基于嵌入式的环境试验设备控制系统设计
引言 环境试验设备是一种根据设计不同,而具备模拟一种或多种综合环境气候功能的 自动化 设备,为各种环境试验的实现提供了高效可靠途径。企业或机构在产品设计、研发、制造过程中,可通过环境试验设备对材料、零部件或产品整机进行各种环境试验,如高温、高湿、盐雾、砂尘、雨淋、凝露等环境试验,有效地验证材料或产品是否达到相应标准所要求的质量与可靠性 。因此,环境试验设备是大多数企业与机构验证材料或产品可靠性所必不可少的设备。 控制系统作为环境试验设备的最核心组成部分,它的控制精度直接影响到该设备所做环境试验的准确性与可信性。目前环境试验设备控制系统的应用型式主要分为通用型与专用型。其中通用型控制系统指的是,传统的人机界面(HMI)与可编程控制
[单片机]
基于嵌入式的环境试验设备控制系统设计
痞子衡嵌入式:ARM Cortex-M内核那些事(3)- 功能模块
  ARM Cortex-M处理器家族发展至今(2016),已有5代产品,分别是CM0/CM0+、CM1、CM3、CM4、CM7。 1.Cortex-M兼容特性   为了能做到Cortex-M软件重用,ARM公司在设计Cortex-M处理器时为其赋予了处理器向下兼容、软件二进制向上兼容特性。   首先看什么是二进制兼容,这个特性主要是针对软件而言,这里指的是当某软件(程序)依赖的头文件或库文件分别升级时,软件功能不受影响。要做到二进制兼容,被软件所依赖的头文件或库文件升级时必须是二进制兼容的。   那么什么又是向上兼容,向上兼容又叫向前兼容,指的是在较低版本处理器上编译的软件可以在较高版本处理器上执行。   跟向上兼容
[单片机]
痞子衡嵌入式:<font color='red'>ARM</font> Cortex-M内核那些事(3)- 功能模块
ARM设计的FPGA可重构配置方法的实现及应用
随着半导体工艺技术的迅猛发展,现场可编程逻辑器件FPGA的集成度迅速提高,已达到百万门量级,与此同时,FPGA中的逻辑资源也日益丰富,使得基于FPGA的片上系统设计成为可能.基于FPGA的片上系统设计因其具有开发周期短,设计成本低,软硬件可编程,系统设计灵活、可裁减、可扩充、可升级等优点正在成为电子系统设计的研究热点,且已经在通讯、工控等领域得到实际应用. 目前FPGA从实现技术上进行分类,可以分为基于查找表(LuT,k—up table)技术,SRAM工艺的FPGA、基于nash技术的FPGA和基于反熔丝(Anti—fuse)技术的FPGA,而使用最多的还是基于SRAM工艺的FPGA,如Altem的Cycl0ne和S
[单片机]
<font color='red'>ARM</font>设计的FPGA可重构配置方法的实现及应用
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved