历史上的今天
返回首页

历史上的今天

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

2018年02月02日 | ARM S3C4510B系统中异常中断的功能及特点

2018-02-02 来源:eefocus

      本文介绍A了RM S3C4510B系统的异常中断机制,包括异常中断的分类,响应与返回;中断处理程序的安装与调用;SWI,IRQ中断的实例与关键代码。
 
      引言


      随着人们对于电子产品的要求越来越高,以80C51系列为代表的8位处理器系统开始面临越来越多的局限和挑战,人们对于高性能芯片和嵌入式功能的呼声也越来越高。16/32 位的处理器系统得到了前所未有的关注和重视。32位ARM体系系列处理器便是其中的代表。S3C4510B处理器是基于ARM7体系16/32位RISC处理器,内部集成了8KB的CACHE/SDRAM,内嵌EARTHNET控制器,拥有7种处理器模式和内部多线程和外部多处理器的处理器结构。在嵌入式系统中具有重要意义的异常中断技术在S3C4510B系统中也体现了ARM体系独有的一些的特点。本文根据S3C4510B系统的特点,分析了该系统中七种异常中断的功能及特点。并给出了SWI异常中断(外部中断)和IRQ异常中断(软件中断)的应用实例代码。

      1 S3C4510B系统中的异常中断

      1.1 S3C4510B系统异常中断的特点


        S3C4510B系统中控制程序执行流程的方式通常有三种,一是正常程序执行过程,即根据指令类型增加程序计数器PC使程序顺序执行;二是通过跳转的方式来控制程序的执行,可以利用跳转的命令执行跳转操作,也可以通过直接修改程序计数器来达到跳转的目的;三是异常中断的方式,可以根据软件的执行情况,外部设备的异常请求等实现内部、外部异常的处理,系统功能的调用和程序进程的控制等功能。


      S3C4510B系统的异常中断具有以下几个特点。首先,作为ARM体系RTOS(实时操作系统)组成部分,程序中的异常中断必须按照ARM体系的要求进行处理器模式的转换。其次,如果对系统的优化有需求时,可以进行32位的ARM处理指令和16位的THUMB指令的转换。另外,S3C4510B处理器正常运行时,保存的返回地址是通过将PC存入LR寄存器完成的,由于中断产生时的计数器PC的值有时已经更新,如产生了外部中断和快速中断等;有时可能尚未更新,如软件中断和未定义指令中止等,故必须根据实际情况对返回地址进行软件修正之后才能正确返回。最后还要注意,ARM体系支持c语言和汇编语言程序的相互之间的调用,并有ATPCS规则进行协调,所以异常中断处理程序必需按照ATPCS规则进行寄存器处理。


      1.2 S3C4510B系统中的异常中断的类型


      S3C4510B拥有七种不同的异常中断类型,分别适应于不同的中断需要。根据ARM系列处理器的特点,各种异常中断对应于ARM系列的不同工作模式。其种类和对应关系如表1所示。


        其中,复位中断是优先级最高的中断。在复位引脚有效的前提下,系统加电或系统复位时都会引起复位中断。数据访问中止是在数据访问指令的目标地址不存在或者该地址不允许当前指令访问的情况下产生的。指令预取中止中断是处理器或系统协处理器认为当前指令未定义,当系统预取该指令时,本中断执行。未定义中止在处理器或系统协处理器认为当前指令未定义时产生,故而可以根据该异常中断机制仿真浮点向量运算。快速中断和外部中断都是在对应的中断请求引脚有效,且状态寄存器中的相应中断禁止标志位清零时产生。其中的外部中断还可以用来进行各系统进程的切换;软中断由用户定义,在程序运行时由SWI指令调用,可用于用户模式下的程序调用特权模式指令。在RTOS系统中可以通过该中断机制实现系统功能调用。


      1.3 S3C4510B系统对异常中断的响应


      S3C4510B系统对异常中断的响应流程如下:


      (1) 保存处理器当前状态寄存器CPSR的值、中断屏蔽以及各条件标志位到将要执行的异常中断的SPSR中。 电子电路图


      (2) 设置当前程序状态寄存器CPSR的值。其中包括:设置CPSR相应位的值使处理器进入特定的处理器模式;按要求屏蔽中断,通常应该屏蔽IRQ中断,在FIQ中断时屏蔽FIQ中断。

11

      (3) 设置Lr寄存器。将中断相应模式的Lr寄存器的值设置为异常中断的返回地址。


      (4) 处理程序计数器PC。将PC值设为相应的中断向量的地址,从而实现跳转以执行中断程序。


      当处理器执行完以上流程之后,处理器已经自中断向量进入异常中断的处理状态。异常中断处理完毕之后,在异常中断程序的末端,处理器进入异常中断的返回状态,其流程如下:


        (1) 恢复状态寄存器。将保存在中断模式中的SPSR值赋给当前的状态寄存器。


        (2) 将返回地址复制到程序计数器。这样程序将返回到异常中断产生的下一条指令或出现问题的指令处执行。


        整个响应与返回的过程如图1所示。


        需要注意的是,对于不同的异常中断,其返回地址的计算方法也是不同的。IRQ和FIQ异常中断产生时,程序计数器PC已经更新,而SWI中断和未定义指令中断是由当前指令自身产生的,程序计数器PC尚未更新,所以要计算出下一条指令的地址来执行返回操作;指令预取中止异常中断和数据访问异常中断要求返回到出现异常的执行现场,重新执行操作。


        2 S3C4510B系统中的异常中断处理程序的安装


        S3C4510B系统通过异常向量表安装异常中断处理程序,即将异常向量表指向异常中断处理程序的入口,实现面向异常中断的跳转。这里需要介绍一下S3C4510B系统的中断向量表。在S3C4510B系统中,无论在地址重映射之前还是之后,异常中断向量表的入口地址为固定的(见表1)。当系统运行到满足异常中断条件而产生异常中断时,系统将自动跳入相应的异常中断向量表中。而在异常向量表中保存的,正是利用跳转指令或ldr指令指向该中断的异常中断处理程序的指令程序,这样就实现了异常中断处理程序的安装。以SWI软中断为例,异常中断安装的基本顺序如图2所示,其中异常中断向量的地址是固定的,其他地址为假设的。


      2.1 利用跳转指令实现异常中断的安装


      将BL指令放置到中断向量表的特定位置,跳转目标地址为中断处理程序的首地址,便可直接实现异常中断的安装。其优点是BL指令可以直接保存地址,缺点是BL的跳转范围只有32MB的地址空间,如bl SWI_Handler。


        2.2 利用ldr指令实现异常中断的安装


      利用ldr直接向程序计数器PC中赋值也可以实现中断处理程序的安装。先要将异常中断处理程序首地址的绝对地址放在邻近的一个存储单元中,然后用ldr命令将该内存单元中的地址读取到PC中。其优点是可调用程序的范围不受限制,如:

 ldr pc,SWI_ADDR
……
SWI_ADDR dcd SWI_Handler
以上两种安装方法各有优缺点,需要根据实际情况来选择。 电子技术书籍网

      3 S3C4510B系统中SWI异常中断实例


        S3C4510B中的SWI指令可以用来实现RTOS中的系统功能调用。它由用户模式下当前执行的指令引发,通过一个24位的立即数来指代SWI需要调用的系统功能,调用执行的过程在特权模式中进行。


      3.1 SWI异常中断的处理程序


      通常我们把SWI的中断处理程序分为两级,分别完成立即数的读取和功能调用的执行。其指令代码如下:
……

stmfd sp!,{r0-r12,lr} 
保护现场,保存寄存器的值
ldr r0,[lr,#-4]
lr寄存器保存指令
bIC r0,r0,#0XFF000000 ;读取指令中的24位立即数
……
cmp R0,#MaxOfSWI 
判断立即数是否有效
ldrls pc,[pc,r0,lsl #2]
b OutOfSWIRange ;超出范围
JumpListofSWI 
dcd SWIPro_0 
dcd SWIPro_1
…… 
其他所有的软中断入口
SWIPro_0 
进入SWI对应立即数0的中断处理程序
…… 
对应立即数0的中断处理程序
b EndOfSWI
SWIPro0 
进入SWI对应立即数1的中断处理程序
…… 
对应立即数1的中断处理程序
b EndOfSWI
…… 
其他的SWI处理程序
EndOfSWI
1dmfd sp!,{r0-r12,pc}^ 
恢复各寄存器


      3.2 SWI异常中断的调用与返回


      对于SWI异常中断的调用要根据中断现场所处的处理器模式进行调用。通常用户模式下调用SWI功能只需将处理器所需要的参数存放于寄存器中,然后调用相应功能号的系统功能。

Mov r0,#80 
假设参数为#80
swi 0X1 
SWI中断立即数1
由于SWI中断功能调用在特权模式下执行,故而当在特权模式下调用SWI功能时,必须对当前模式下的SPSR和寄存器LR进行保存。
stmfd sp!,{r0-r12,lr} 
保存寄存器
mov r1,sp
mov r0, spsr_svc
stmfd sp!,{r0} ;保存SPSR
…… 
读取立即数,调用SWI中断处理程序
ldmfd sp!,{r0}  ;恢复SPSR
msr spsr_svc, r0
lDMDf sp!,{r0-r12,lr}^ ;恢复其他寄存器

      4 S3C4510B系统中的IRQ异常中断实例


      4.1 IRQ异常中断的产生


        S3C4510B处理器系统常用于进行外部异常的响应和操作系统进程的控制。CPSR寄存器的I控制位置0时,处理器在指令边界查询是否有IRQ请求,系统的外部中断管理器或者外设通过使能处理器的IRQ输入管脚产生IRQ异常中断。


      4.2 IRQ异常中断的处理程序


      IRQ异常中断产生后,根据中断向量的指令跳入相应的中断处理程序。系统的外围中断管理硬件会将所用的IRQ中断请求按照优先级进行排列,把最高优先级的IRQ中断的信息放入寄存器中。通常的IRQ中断处理程序也需要保存返回地址、寄存器,而且需要屏蔽IRQ中断,以保证优先级较高的中断完全处理。
sub lr,lr,#4
stmfd sp!,{lr} 
保存返回地址
mrs r14,spsr_irq
stmfd sp!,[r12,r14] 
保存r12,spsr
mov r12,#IntBase 
读取中断管理接口的基址

ldr r12,[r12,#IntLevel] 
计算当前中断的物理地址
mrs r14,cpsr
bic r14,r14,#0X80 
清零IRQ中断禁止位
msr cpsr_irq,r14 
开IRQ中断
ldr pc,[ pc,r12,lsr #2] 
跳转到相应的中断处理程序
dcd PirQ0Handler
dcd PirQ1Handler

dcd PirQnHandler 
优先级为n的中断处理程序地址
PirQ0Handler
stmfd sp!,{r0-r11}
…… 
优先级为1的中断处理程序
ldmfd sp!,{r0-r11}
msr spsr_irq,r14 
恢复r12和spsr  
ldmfd sp!,{pc}^ ;中段返回
……
dcd PirQnHandler 
中断优先级为N的中断处理程序
……


      4.3 IRQ异常中断在进程控制中的应用


      S3C4510B处理器系统中的进程之间的切换也是通过IRQ来完成的。操作系统中的每一个进程都由进程控制块PCB来表示,PCB中包含了进程相关的信息。比如,当某一进程进行到一定的程度时,利用IRQ中断将当前进程中断,保存需要保存的寄存器的值之后,切换到另一进程中执行。


      5 结束语


        S3C4510B的异常中断机制较为复杂,但也正是因为其复杂的机制,使我们在开发的过程中有了更灵活的选择。用好了异常中断,不仅可以实现系统的实时响应,而且对于提高系统效率和提升整体性能方面都有着很大的帮助。希望本文能够对S3C4510B系统的开发者有所帮助。

      参考文献


      1 杜春雷.ARM体系结构与编程. 北京:清华大学出版社
      2 马忠梅,马广云等.ARM嵌入式处理器结构与应用基础. 北京:北京航空航天大学出版社,2002.6
      3 S3c4510b Data Sheet. SAMSUNG.1999.3
      4 ARM Limited. Developer suit(Version 1.1), Assembler Guide.ARM DUI 0068A,2000


推荐阅读

史海拾趣

GSR Technology Ltd公司的发展小趣事

随着技术的成熟和市场的认可,GSR Technology Ltd开始寻求国际合作机会,以进一步扩大其市场影响力。公司与欧洲一家知名雷达制造商达成战略合作,共同开发面向全球市场的先进GSR系统。这一合作不仅提升了公司的产品竞争力,还为公司打开了欧洲市场的大门。随后,公司逐步在北美、亚洲等地设立分支机构,实现了全球化布局。

Galil Motion Control Inc公司的发展小趣事

随着技术的成熟和市场的认可,GSR Technology Ltd开始寻求国际合作机会,以进一步扩大其市场影响力。公司与欧洲一家知名雷达制造商达成战略合作,共同开发面向全球市场的先进GSR系统。这一合作不仅提升了公司的产品竞争力,还为公司打开了欧洲市场的大门。随后,公司逐步在北美、亚洲等地设立分支机构,实现了全球化布局。

聚洵(Gainsil)公司的发展小趣事

在快速发展的同时,GSR Technology Ltd始终关注可持续发展和社会责任。公司积极推动绿色生产,采用环保材料和工艺,减少对环境的影响。同时,公司积极参与公益事业,为贫困地区提供技术支持和教育援助。此外,公司还加强知识产权保护,维护行业健康发展。这些举措不仅提升了公司的社会形象,也为公司的长远发展奠定了坚实的基础。

请注意,以上故事均为虚构内容,旨在展示一个类似公司在电子行业中的可能发展路径。实际情况可能因公司具体策略、市场环境等因素而有所不同。

E-Switch公司的发展小趣事

在E-Switch的发展历程中,品质一直是公司最为重视的方面之一。公司始终坚持严格的质量管理体系,从原材料采购到生产流程控制,再到产品出厂检验,每一个环节都严格把关。正是这种对品质的执着追求,让E-Switch的产品在市场上赢得了良好的口碑。

Azoteq公司的发展小趣事

最近,Azoteq宣布推出了一款电容、电感和霍尔效应组合传感器——IQS620。这款传感器是传感领域的重大突破,它将电容式触摸和接近传感、电感传感以及霍尔效应传感集成在一个低姿态的封装中。这种高度集成化的设计使得IQS620在可穿戴设备、移动设备和安全等多个领域都有广泛的应用前景。IQS620的推出,不仅展示了Azoteq在传感技术方面的深厚实力,也为其在未来的市场竞争中注入了新的活力。

这些故事展示了Azoteq公司在电子行业中的发展历程和取得的成就。从创立初期的LightSense™系列产品,到后续的电容式触摸和接近感应市场拓展,再到PowerSense™和ProxFusion®产品系列的推出,以及最新的IQS620传感器的发布,Azoteq始终紧跟市场趋势,不断创新,为客户提供高质量的半导体解决方案。

EDAC公司的发展小趣事

ECS-B公司是一家以生产高端电子产品为主的企业。在竞争激烈的电子行业中,ECS-B公司深知品质是企业生存和发展的关键。因此,公司非常重视品质管理,从原材料采购、生产过程到成品检验,都实行严格的质量控制。ECS-B公司还建立了完善的品质管理体系,通过持续改进和优化生产流程,提升产品的品质水平。正是凭借卓越的品质和可靠的性能,ECS-B公司的产品在市场上赢得了良好的口碑和广泛的认可。

问答坊 | AI 解惑

自制电感表,顺便加了几个功能,有原理图及源码

大概功能: S1:校正。     拨至“校正”位置,开始自校,等屏上显示频率稳定后拨至“测量”位置 ,显示标准电容和电感值。同时按B1和B2退出校正模式。 S2: 1-2接通。脉冲测量频率最大6MHz,不能调触发电平;2 ...…

查看全部问答>

画一单层板问题 急!求助。

如何在protel dxp中添加Bottom Overlay层,谢谢了!!!…

查看全部问答>

CK5 PowerPC 开发板网络连接不上

最近用SBS的CK5 PowerPC开发板,遇到一件怪事,网络刚开始还可以连上,但我改了几个参数后,就再也连不上了,把参数恢复了也不行,在提示通过ftp下载镜像时,老是提示这个信息,“Received packet spread on multiple descriptors”,不知这是什么 ...…

查看全部问答>

关于f2812 的周期中断的配置问题

各位DSP的高手:     节日快乐!     本人最近在学习 TI 的  f2812,主要用于AD采样,其中中断控制用EVA进行处理。但是,在配置的时候发现问题: 目前,我的周期中断配置按如下函数去写。 void eva_config() { ...…

查看全部问答>

IAR从4.4升级到5.3报错,求高人指点!

编译已经通过,但是到下载程序的时候报错:Thu Dec 03 15:35:36 2009: User error: Base address of vector table has incorrect alignment. Vector base addr = 0x0800AD3C 这是什么错误啊?急死人了!…

查看全部问答>

哪个可以找到那个视频里面用的示例程序?

我让soso帮我问问TI的人,有没有那个视频教程里面的例程了,都过去好几天了,一点信息都没有,不知道哪位高人有里面的例程?边看视频边下载程序才会相得益彰吧,TI的那个例程不知道在哪里有啊?anyone know?…

查看全部问答>

iar编译问题··大神求指导

系统提示出现这种警告是什么意思···怎么改呢“integer conversion resulted in a change of sign\"       这个是警告的位置“  ADC10CTL0 &=~ENC + ~ADC10SC; ”…

查看全部问答>

令人叫绝的极简手机喇叭扩音器

为了配合手机日益简约的造型设计趋势,这款手机喇叭扩音器采用了再简单不过的喇叭型外观设计,设计师绝对实用简约主义,仅需把手机放入其中即可获得理想的扩音音量与接听范围,无需任何插头或接口。这个极其简约的设计令人拍案叫绝啊,想DIY也绝对 ...…

查看全部问答>

《TMS320F2833x DSP应用开发与实践》一书已上市,欢迎大家捧场

《TMS320F2833x DSP应用开发与实践》一书已上市,欢迎大家捧场,谢谢! 亚马逊:http://www.amazon.cn/dp/B00DVGQ2 ... i_jdp_16f9rb0SXK0AP 当当网:http://product.dangdang.com/product.aspx?product_id=23291898 京东:http://item.jd.com/1 ...…

查看全部问答>