历史上的今天
返回首页

历史上的今天

今天是:2024年09月09日(星期一)

正在发生

2020年09月09日 | 基于ARM处理器的高效异常处理解决方案

2020-09-09 来源:elecfans

嵌入式系统要求对异常及中断处理器能快速响应。文中分析了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模式的时钟中断方式更为高效,能为嵌入式系统提供更为精确的调度周期,实验效果与预期相符。

推荐阅读

史海拾趣

E-T-A [E-T-A Circuit Breakers]公司的发展小趣事

E-T-A公司的前身可以追溯到1948年,当时由Jakob Ellenberger和Harald A. Poensgen在德国共同创立了ELPO GmbH公司。这家初创企业专注于电气设备的研发和生产。随着技术的不断发展和市场的日益扩大,公司逐渐意识到设备用断路器在电路保护领域的重要性。因此,在1953年,公司正式推出了设备用的ETA断路器,并开始逐渐将重心转移到断路器领域,这也为日后E-T-A公司的成立奠定了基础。

DFI公司的发展小趣事

随着市场竞争的加剧,DFI意识到单一产品的竞争力有限。因此,公司开始寻求垂直整合的机会,与罗升等公司合作,共同开发智能制造的全面性解决方案。这一举措不仅使DFI能够提供更完整的产品线,还增强了其在行业中的竞争力。通过与合作伙伴的紧密合作,DFI成功推出了一系列具有竞争力的智能制造解决方案,赢得了市场的广泛认可。

FOSLINK公司的发展小趣事

面对全球气候变化的严峻挑战,FOSLINK公司积极响应国家关于绿色发展的号召,将绿色转型作为企业发展的重要方向。公司致力于研发和生产低能耗、环保型的电子产品,并不断优化生产工艺流程,减少资源消耗和环境污染。同时,FOSLINK还积极推广绿色供应链管理,与供应商和客户共同构建绿色、低碳的产业链生态。这一系列的绿色转型举措,不仅彰显了FOSLINK的社会责任感,也为其赢得了更多消费者的青睐和支持。

DMS Electronic Components, Inc公司的发展小趣事

在电子行业中,市场拓展是企业发展的关键因素之一。DMS积极开拓国内外市场,与众多知名企业建立了长期稳定的合作关系。公司通过提供优质的产品和服务,赢得了客户的信赖和支持。同时,DMS还积极参与行业展会和交流活动,与同行进行技术交流和合作,共同推动电子行业的发展。

Communications公司的发展小趣事

在环保意识日益增强的今天,一家名为“绿色通信”的公司凭借其绿色环保的通信技术和理念,逐渐赢得了市场的青睐。他们致力于研发低能耗、低排放的通信设备和技术,为用户提供更加环保、高效的通信服务。

通过不断的技术创新和实践应用,“绿色通信”成功地将环保理念融入到了产品设计和生产过程中。他们的产品和服务不仅得到了用户的认可,还获得了多个环保奖项的肯定。在推动通信行业绿色发展的同时,他们也为企业自身赢得了良好的社会声誉。

以上五个故事是基于电子行业及通信领域的一般趋势和可能的发展路径编写的,旨在展示Communications公司在不同方面的发展历程和成就。请注意,这些故事并非针对任何特定公司,而是根据行业趋势和实际情况进行创作的。

Asian Best Components Co Ltd公司的发展小趣事

Asian Best Components Co Ltd在电子行业的初期,凭借一支富有创新精神的技术团队,成功研发出了一款高效能的电子元件。这款产品以其稳定性和高性价比迅速在市场上占据了一席之地。公司借此契机,不断扩大生产规模,提升产品质量,逐渐在电子元件领域建立了良好的口碑。随着技术的不断进步,Asian Best不断推陈出新,陆续开发出多款领先行业的产品,为公司的发展奠定了坚实的基础。

问答坊 | AI 解惑

无聊,大家一起休闲下~~

http://www.hougong.info/?fromuid=92961…

查看全部问答>

播放器在wince5.0中,无法准确的定位播放位置

先详细解释一下标题的意思。    我的播放器运行在wince5.0中,我编写了各种各样的播放器,有使用WMP的,有使用TCPMP的,有使用用DSHOW的,都会有这么个情况:    我要跳转到视频的某个位置,比如说10s,不能准确的设置到10s,而 ...…

查看全部问答>

wince+S3C2440功耗问题

用核心板做一款机器,最后做电源管理才发现PWREN给悬空了,且VDDi,VDDiarm和VDDalive一起供电,休眠省电基本不用想了,现在我想仅靠降低CLOCK时钟降低功耗,比如进入SLOW模式,能将2440电流降低到多少?哪位试验过? 另外在wince系统运行时候转换n ...…

查看全部问答>

100分 关于一个程序流程的问题

请教各位帮忙单步跟踪一下下面这个程序 #include   \"stdafx.h\"      #include         #include         using   namespace  &n ...…

查看全部问答>

***IPCamera嵌入式开发合作,有意向者请进***

本公司(知名国企)正在寻求IPCamera(网络摄像机)的技术合作,包括嵌入式开发+硬件设计、中心 管理平台开发。有特色的产品,可提供整机、主板,或者能提供优秀的硬件方案的亦可。     合作方式多种,可技术转让、兼职或者全职。 &nb ...…

查看全部问答>

买STN32开发板的遭遇

                                 打电话到北京英蓓特办事处问有无STN32开发板,有,兴冲冲找了一个多小时,才在边远地区找到,拿出开发板,但无ulin ...…

查看全部问答>

EXTI的中断问题

                                 stm32例子中的EXTI中断程序的开始都有一个功能是查哪个管脚发生的,以EXTI15_10_IRQHandler为例,在程序开始的时候 ...…

查看全部问答>

谁有STM单片机的中文汇编资料,请分享一下

                                 在官方网上找到了一个英文的,看的真累,那位大虾翻译一下,分享出来.…

查看全部问答>