历史上的今天
返回首页

历史上的今天

今天是:2025年02月02日(星期日)

2018年02月02日 | 基于ARM处理器的异常处理分析

2018-02-02 来源:eefocus

      内容摘要:嵌入式系统要求对异常及中断处理器能快速响应。文中分析了ARM体系结构下异常处理特点,提出一种基于ARM处理器的高效异常处理解决方案,以LPC3250硬件平台为基础,对该方案进行了设计与实现。测试结果表明,该方案的异常处理更为高效。

      在航空航天、工业控制及医疗等领域中,嵌入式系统的安全性、可靠性以及高效性作用显著,而异常是系统在运行过程中的突发事件,异常处理是否高效将直接影响整个系统的工作效率。为了确保嵌入式系统高效安全的运行,对处理器非正常模式下高效的异常处理机制的研究具有重要意义。

    1 异常概述

    嵌入式系统中异常/中断是指由处理器内部或外部源产生并引起系统处理的一个事件。根据事件源的不同将异常分为“异常”和“中断”两种,异常指由处理器内部源所引起的事件,如非法指令执行异常,地址访问异常等;中断指由处理器外部中断源引起的事件。嵌入式处理器对外部中断源一般由中断控制器进行统一管理并上报处理器。对于嵌入式系统,异常/中断均会导致处理器打断正常的程序执行流程,进入特定模式进行相应的异常处理。因此,对“异常”和“中断”一般不作严格区分。

    作为嵌入式处理器,为了确保系统的实时性和程序执行的稳定性,ARM处理器支持完整的异常处理机制。ARM处理器共有7种异常类型,每种异常都有自己固定的异常向量地址,且在异常产生后,处理器会切换至相应的异常中断模式,具体描述如表1所示。

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

    ARM支持多中断嵌套,因此各异常有固定的优先级,依次为:复位、数据中止、FIQ、IRQ、预取指中止、未定义指令和SWI。各异常向量之间只有4 bit的空间,因此向量表中只能放置跳转指令。通常异常处理结构如图1所示。

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

    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所示。

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

    中断向量表,用于存放具体中断源对应的中断服务程序的入口地址。当响应外设中断请求时,进入中断服务程序通过中断控制器识别中断源,并根据中断向量表执行处理例程。

    LPC3250平台设计,不通过中断控制器进行中断源的优先级控制,通过RSR寄存器获取中断源状态后,由系统软件进行中断源优先级配置。中断处理中由系统选择当前最高优先级中断,并进入对应中断源的中断处理例程,中断处理过程如图2所示。

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

    4 异常服务程序的实现

    嵌入式实时操作系统中,无论是实时响应并处理来自各个被控对象的实时信息,还是对任务执行时间的管理、资源的限时等待等,均需要时钟的参与。因此,准确且具有足够精度的时钟对于实时系统必不可少。

    每次时钟中断发生,时钟中断服务程序都会被执行。因此时钟中断服务程序执行的频率很高,每个系统周期都会被执行,这要求程序的处理高效、简洁。

    由于ARM处理器中FIQ的响应速度和优先级均高于IRQ,因此采用FIQ方式实现对处理器时钟中断的处理,其他外部中断由IRQ异常统一管理,异常处理结构图如图3所示。

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

    嵌入式时钟常用于向操作系统通过调度单位,因此中断状态会持续直至完成调度处理,处理完成后由时钟源进行中断清除,以开始下一周期计时。根据应用需求,时钟中断应设置为电平触发方式,通过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所示。

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

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

    6 结束语

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


推荐阅读

史海拾趣

COTO TECHNOLOGY公司的发展小趣事

近年来,随着全球电子产业的快速发展,中国市场的重要性日益凸显。COTO TECHNOLOGY也看到了这一机遇,开始深耕中国市场,寻求与当地企业的合作。通过与成都迈极芯科技等公司的战略合作,COTO不仅将先进的技术和产品引入中国,还为中国半导体测试产业提供了更优质的产品和服务。这一系列的合作不仅促进了COTO在中国市场的发展,也推动了中国电子产业的进步。

这五个故事只是COTO TECHNOLOGY发展历程中的一部分,但它们充分展示了这家公司在电子行业中的成长与变迁。从初创时期的线圈绕组制造商,到后来的干簧继电器领导者,再到全球范围内的扩张与战略合作,COTO始终保持着对技术的追求和对市场的敏锐洞察。这些故事不仅反映了COTO的发展历程,也见证了整个电子行业的变革与进步。

COMPEX公司的发展小趣事

COMPEX公司自成立以来,一直致力于电子技术的研发与创新。在光通讯领域,公司凭借先进的光通讯模块电路板小器件技术,逐渐在市场中占据了一席之地。COMPEX团队不断突破技术壁垒,推出了多款高性能、高可靠性的产品,赢得了客户的广泛认可。同时,公司还积极与国内外知名企业和研究机构合作,共同推动电子行业的技术进步。

Crane Co.公司的发展小趣事

随着公司业务的蓬勃发展,Crane Co.在1880年代经营着四家制造工厂,员工人数超过1500名。公司的业务足迹也逐渐延伸到美国西部地区。为了进一步提升产品质量和技术水平,Crane Co.在1890年代成立了旗下第一家冶金实验室,专注于材料研究和开发。这一举措为公司在电子行业的后续发展提供了强大的技术支持。

Edcon Components Netherlands Cv公司的发展小趣事

企业文化是Edcon Components Netherlands Cv的重要组成部分。公司注重企业文化的培养和传承,形成了积极向上的企业氛围和团队精神。通过组织各类活动和培训,增强员工的归属感和荣誉感;通过建立公平的激励机制和晋升通道,激发员工的积极性和创造力。这些措施使得Edcon的团队更加紧密团结、高效协作,为公司的发展提供了有力保障。

Electroswitch公司的发展小趣事

面对快速变化的电子行业环境,Electroswitch始终保持着敏锐的洞察力和创新精神。公司不断加大对新技术和新产品的研发力度,推出了一系列具有领先水平的开关产品。同时,公司还积极探索新的业务领域和市场机会,为未来的发展做好充分准备。展望未来,Electroswitch将继续秉承“质量、选择、产品创新和出色的支持”的理念,为客户提供更加优质的产品和服务。

请注意,以上故事框架仅供参考,您可以根据这些框架进一步扩展和丰富故事内容。

常忆科技(CHINGIS)公司的发展小趣事

在电子行业的激烈竞争中,常忆科技也面临着诸多挑战。其中,市场需求的快速变化和竞争对手的不断涌现是公司需要重点关注的问题。为了应对这些挑战,常忆科技不断调整和优化产品结构,以满足市场的多样化需求。同时,公司还加大了对核心技术的保护力度,防止技术泄露和侵权行为的发生。

在面对行业危机时,常忆科技展现出了强大的抗风险能力。公司通过加强内部管理、降低运营成本、提高生产效率等措施,成功度过了多次行业危机。这些经历不仅锻炼了公司的应对能力,也进一步提升了公司在行业中的地位和影响力。

问答坊 | AI 解惑

元件封装

MAXIN元件封装…

查看全部问答>

WINDOWS CE 5.0 拼音输入问题

我的系统已经添加了拼音输入了,系统也可以正常显示中文,但是不能输入汉字 我在区域语言中选中  拼音输入,系统说要重新启动设备,但是我点OK之后,再去点区域语言,还是没选中 默认的是灰色的,不可以选,之后我重新启动了之后也是不 ...…

查看全部问答>

wince x86 下报:无法找到sqlceme30.dll

最近在研究wince 下的X86板子,是那种带内存条的板子,带有CF卡。这两天一直在测试,头疼的是,连接.sdf数据库时,用的sqlserverce.dll的底层,用sqllite也不行。总是报:无法找到sqlceme30.dll 网上也找了相关方法。总是不行。CAB也都装了。就是 ...…

查看全部问答>

感觉stm32F103+ENC28J60比stm32f107+PHY更方便。

反正是要两片芯片。总价位上差距也不大吧。…

查看全部问答>

vs1001k与vs1003有什么不同吗

由于vs1001k实在太贵了,所以想用vs1003代替有没有问题,两者有什么区别,两者编程时有什么不同的吗?望用过的指点下,谢谢…

查看全部问答>

op运放

本帖最后由 paulhyde 于 2014-9-15 09:22 编辑 op运放  …

查看全部问答>

关注MSP-EXP430FR5739套件抢购

     本人是MSP430单片机小白,因工作原因正准备学习,前一段时间错过了LaunchPad,肠子都悔青了,现急需一块MSP430的板子,希望能抢购成功。…

查看全部问答>

关于多路复用器的简单提问,求助啊

有三路频率信号(频率不同的近似方波幅值3V,频率范围1Khz-100Khz),我想做一个三选一处理,就是由单片机控制多路复用器选择这三个频率信号中的一个,我想问:三路频率信号在多路复用器这里会不会产生干扰,导致频率信号的频率改变或是波形恶化, ...…

查看全部问答>

更新《NiosII嵌入式系统开发手册》与《NiosII嵌入式系统开发平台》

replyreload += \',\' + 1445462;1. NiosII嵌入式系统开发平台的下载 在2012-7-17发布过[size=1.17em]NiosII嵌入式系统开发平台VER1.0.0,关于《NiosII嵌入式系统开发平台VER1.0.0》说明请阅读: https://bbs.eeworld.com.cn/thread-340261-1-1.h ...…

查看全部问答>

UCOS移植到MSP430过程与心得体会《2》

以下是includes.h文件的内容. #include    #include    #include    #include    #include    #include    \"stdbool.h\" #include    #include    ...…

查看全部问答>