中断异常处理流程_第1页
中断异常处理流程_第2页
中断异常处理流程_第3页
中断异常处理流程_第4页
中断异常处理流程_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 计算机体系结构中,异常或者中断是处理系统中突发事件的一种机制,几乎所有的处理器都提供这种机制。异常主要是从处理器被动接受的角度出发的一种描述,指意外操作引起的异常。而中断则带有向处理器主动申请的意味。但这两种情况具有一定的共性,都是请求处理器打断正常的程序执行流程,进入特定程序的一种机制。若无特别说明,对“异常”和“中断”都不作严格的区分。本文结合经过实际验证的代码对ARM9中断处理流程进行分析,并设计出基于S3C2410芯片的外部中断处理程序。 1.异常中断响应和返回 系系统运行行时,异异常可能能会随时时发生。当当一个异异常出现现以后,AARM微微处理器器会执行行以下几几步操作作: 1)

2、将将下一条条指令的的地址存存入相应应连接寄寄存器LLR,以以便程序序在处理理异常返返回时能能从正确确的位置置重新开开始执行行。 2) 将将CPSSR复制制到相应应的SPPSR中中。 3) 根根据异常常类型,强强制设置置CPSSR的运运行模式式位。 4) 强制PPC从相相关的异异常向量量地址取取下一条条指令执执行,从从而跳转转到相应应的异常常处理程程序处。 这些工工作是由由ARMM 内核核完成的的,不需需要用户户程序参参与。异异常处理理完毕之之后,AARM微微处理器器会执行行以下几几步操作作从异常常返回: 1) 将连连接寄存存器LRR的值减减去相应应的偏移移量后送送到PCC中。 2) 将将SPS

3、SR复制制回CPPSR中中。 3) 若若在进入入异常处处理时设设置了中中断禁止止位,要要在此清清除。 这这些工作作必须由由用户在在中断处处理函数数中实现现。为保保证在AARM处处理器发发生异常常时不至至于处于于未知状状态,在在应用程程序的设设计中,首首先要进进行异常常处理。采采用的方方式是在在异常向向量表中中的特定定位置放放置一条条跳转指指令,跳跳转到异异常处理理程序。当当ARMM处理器器发生异异常时,程程序计数数器PCC会被强强制设置置为对应应的异常常向量,从从而跳转转到异常常处理程程序。当当异常处处理完成成以后,返返回到主主程序继继续执行行。可以以认为应应用程序序总是从从复位异异常处理理程

4、序开开始执行行的,因因此复位位异常处处理程序序不需要要返回。 22.异常常处理程程序设计计 22.1 异异常响应应流程 由由于向量量表的限限制,只只能有一一条指令令B完成成32MMB范围围内的跳跳转,并并不能保保证所有有的异常常处理函函数都位位于322MB范范围内。为为了扩展展跳转范范围,需需要二次次跳转才才能把异异常处理理函数的的地址传传送给PPC。异异常处理理调用关关系如图图1所示示。 三星星公司网网站提供供了teest224100_r111软件件包,其其中24410iinitt.s有有如下代代码: HHanddlerrXXXX suub ssp,ssp,#4 ;减减少spp,保存存跳转地

5、地址 sttmfdd ssp!,r00 ;将工作作寄存器器压入堆堆栈 lddr r00,=HHanddleXXXX ;将HHanddleXXXX地地址放入入r0 lddr r0,r00 ;将将中断程程序入口口地址放放入r00 sttr r00,ssp,#4 ;将将中断程程序入口口地址压压入堆栈栈 lddmfdd sp!,rr0,ppc ;将将工作寄寄存器和和中断程程序入口口地址弹弹出到rr0和PPC图1异常处处理调用用 并且在在RAMM中定义义了存有有中断程程序入口口地址表表_ISSR_SSTARRTADDDREESS: AREEA RRamDDataa, DDATAA, RREADDWRII

6、TE _IISR_STAARTAADDRRESSS HanndleeResset # 44 HanndleeUnddef # 4 HanndleeSWII # 44 HanndleePabbortt # 4 HanndleeDabbortt # 4 HanndleeResservved # 4 HanndleeIRQQ # 44 HanndleeFIQQ # 44 通常HHanddlerrXXXX位于程程序入口口地址332MBB范围内内,HaandlleXXXX是以以_ISSR_SSTARRTADDDREESS为为基地址址的RAAM中地地址。该该代码主主要实现现跳转功功能,把把异常处处理程序序

7、地址HHanddleXXXX送送到PCC中。例例如产生生IRQQ中断时时,PCC会被强强制设置置为0 xx18,执执行指令令:b HaandllerIIRQ 在HaandllerIIRQ程程序段内内,处理理器做一一些必要要的处理理,就会会将_IISR_STAARTAADDRRESSS表中存存放的IIRQ入入口地址址送入PPC,然然后开始始执行相相关中断断程序。由由于_IISR_STAARTAADDRRESSS表存放放在RAAM中,后后面的CC语言程程序可以以方便地地更改相相关中断断服务程程序的内内容。 2.22 异常分分支 系系统可能能存在多多个 IIRQ/FIQQ的中断断处理程程序。为为了从

8、向向量表入入口处的的跳转最最终能找找到正确确的中断断处理程程序,需需要设计计一套处处理机制制和方法法来实现现。可以以在ARRM的异异常向量量表之外外,增加加一张关关联中断断控制器器的向量量表,向向量表中中的内容容对应每每个具体体的中断断源,可可以协助助跳转到到不同的的中断处处理程序序。 当当响应外外设的一一个中断断请求时时,首先先触发AARM核核的中断断,进人人中断程程序,再再通过中中断控制制器识别别中断源源,使PPC能够够自动获获得中断断处理程程序的地地址。有有的芯片片支持特特殊的硬硬件分支支功能,依依据中断断源自动动跳转到到向量表表的相应应地址,多多数情况况下是用用软件来来处理异异常分支支

9、。 在在S3CC24110体系系中,中中断的调调用可以以看成是是经历了了2次“中中断向量量表”的的查询。224100iniit.ss中的以以下代码码完成功功能就是是查询中中断偏移移寄存器器INTTOFFFSETT,得到到当前中中断的中中断号,并并根据中中断号再再调用相相关的中中断服务务程序。 IsrrIRQQ suub ssp,ssp,#4 sttmfdd sp!,rr8-rr9 lddr r9,=INNTOFFFSEET lddr r9,r99 lddr r8,=HaandlleEIINT00 addd rr8,rr8,rr9,llsl #2 lddr r8,r88 sttr r8,spp,

10、#88 lddmfdd sp!,rr8-rr9,ppc 为为了方便便C程序序使用中中断,将将IsrrIRQQ设为IIRQ的的中断服服务程序序。 lddr r0,=HaandlleIRRQ lddr r1,=IssrIRRQ sttr r1,r00 其其中HaandlleEIINT00是用户户自己开开辟的一一块存储储空间的的起始地地址,后后面按次次序存放放中断异异常处理理程序的的地址,也也可以理理解为二二级中断断向量表表。IssrIRRQ从中中断控制制器处获获取中断断源信息息,然后后再从二二级中断断向量表表中的对对应地址址单元得得到异常常中断处处理程序序的入口口地址,完完成异常常响应的的跳转。二

11、二级中断断向量表表一般位位于 HHanddleFFIQ的的后面,也也就是以以_ISSR_SSTARRTADDDREESS0 x220为起起始地址址,这里里定义了了S3CC24110处理理器所有有中断源源的相关关中断处处理处理理程序入入口。这这种方法法的好处处是用户户程序在在运行过过程中能能够动态态改变异异常向量量。 22.3 中中断函数数设计 为为了方便便高级语语言设计计中断处处理函数数,标准准的ARRM指令令编译器器提供了了一个用用来声明明中断处处理函数数的关键键字-iirq,使使用此关关键字声声明的函函数可以以被编译译器识别别为中断断处理函函数。编编译后的的代码在在处理异异常事件件前保存存

12、现场信信息,处处理异常常事件后后对现场场信息进进行恢复复。中断断函数设设计如下下:statiic vvoidd _irqq Eiint33Intt(vooid) CCleaarPeendiing(BITT_EIINT33);Uart_Priintff(EEINTT3 iinteerruupt is occcurrred.n); nnum_intt=3;设置标标志位 定定义中断断处理程程序入口口地址:#deefinne ppISRR_EIINT33 (*(uunsiigneed *)(_ISRR_STTARTTADDDRESSS+00 x2cc) 在在初始化化程序,引引用代码码pISSR_EEI

13、NTT3=(U322)Eiint33Intt,即可可定义地地址_IISR_STAARTAADDRRESSS+0 xx2c内内容是EEintt3Innt的地地址,外外部中断断3产生生请求时时即可调调用中断断处理函函数Eiint33Intt。 33.外中中断初始始化程序序设计 SS3C224100X 的的中断控控制寄存存器能接接收来自自56个个中断源源的请求求。内部部的外围围模块和和外部管管脚产生生的多个个中断请请求通过过中断控控制器冲冲裁后,向向ARMM9200T核发发出FIIQ或者者 IRRQ中断断。ARRM内核核只有22个外部部中断输输入信号号nIRRQ和nnFIQQ,在具具体嵌入入式系统统

14、中,需需要用中中断控制制器管理理多个外外部中断断源,选选择其中中一个中中断,通通过 nnIRQQ或nFFIQ向向ARMM内核发发出中断断请求,如如图2所所示。 图2 FIIQIIRQ中中断处理理过程 AARM9920TT内核可可以识别别正常中中断请求求和快速速中断请请求两种种类型的的外部中中断,中中断的行行为模式式由中断断控制器器来设置置。S33C24410XX的中断断控制器器包括66类寄存存器:中中断源状状态寄存存器、中中断模式式寄存器器、中断断屏蔽寄寄存器、优优先级寄寄存器、中中断状态态寄存器器,以及及中断偏偏移寄存存器。 在在初始化化程序中中,需要要选择相相应管脚脚的功能能,在此此定义G

15、GPF33为EIINT33模式,通通过外部部中断控控制寄存存器EXXTINNT0设设定EIINT33是下降降沿触发发方式,通通过设置置中断源源悬挂寄寄存器SSRCPPND、中中断悬挂挂寄存器器INTTPNDD和中断断屏蔽寄寄存器IINTMMSK开开启EIINT33。中断断模式寄寄存器和和中断优优先级寄寄存器采采用系统统默认方方式。具具体代码码实现如如下:void Einnt_IInitt(vooid)rGPFCCON = (rGPPFCOON & 0 xx3f00c)|(17);rEXTIINT00 = (rEEXTIINT00 & (00 x7122) | 00 x2122; pISR_EINNT3=(U332)EEintt3Innt; rSRRCPNND = BIIT_EEINTT3; rIINTPPND = BBIT_EINNT3; rIINTMMSK=

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论