ARM中断的的处理_第1页
ARM中断的的处理_第2页
ARM中断的的处理_第3页
ARM中断的的处理_第4页
ARM中断的的处理_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

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

文档简介

1/20中断的概念;通俗地说,中断就是打断,你在专心某件事情的时候,突然出现了一件意想不到的事情,这个意想不到的事情就是中断。例如:你在图书馆自习的时候,突然手机响了。我们人具有很好的感知”中断的能力“,请看:

耳朵眼睛鼻子皮肤当你专注与某件事情时,就依靠它们来感知外界异步的事件——中断;你可以同时监听4路中断。“四路中断监听能力”对你重要吗?可以没有吗?重要!不能没有!cpu是对人脑的模拟,同样需要具有对异步事件——中断进行感知的能力,ARM处理器也不例外。2/20中断的概念;按信号源分类,中断可以分为:

外中断:一般称为中断,是指来自处理器和主存外部的中断,与现行指令无关。

内中断:一般称为异常,是指来自处理器和主存内部的中断,与现行指令相关。

3/20ARM处理器中断的分类ARM处理器复位异常:当处理器的复位管脚复位电平有效未定义指令异常:执行了一条未定义的指令软中断:执行软中断指令swi预取指令异常:在一个未知内存取指令预取数据异常:在一个未知内存取数据保留(暂未使用)IRQ外部中断:当处理器的外部中断请求引脚有效,且CPSR中的I位为0时,产生IRQ中断FIQ外部中断:当处理器的快速中断请求引脚有效,且CPSR中的F位为0时ARM处理器共支持8路中断,其中一路是保留的,即目前ARM处理器家族还没有指明其用于哪种类型的中断。ARM处理器正是通过这8路中断来监听指令执行过程中的异常事件。4/20ARM处理器中断的分类当异常发生时,ARM处理器会进入相应的异常模式(在不同的模式下ARM处理器有什么区别?)6/20ARM中断的响应过程

当然ARM处理器获知异常事件发生后,接下来做的工作就应该暂停当前的工作转去对异常事件进行处理,而异常处理完毕后再接着做原来被中断的工作。cpu所要做的工作异常到来异常处理程序ISR当异常产生后,cpu如何跳转到异常处理程序呢?也即当中断产生后如何让指令指针寄存器pc指向异常处理程序的第一条指令呢???当异常处理程序执行完后,cpu又如何返回接着做原来被中断的工作呢?也即异常处理完后,如何让pc指向cmpr0,r1指令?pc?pc?7/20ARM中断的响应过程当某一类型的异常发生时,ARM处理器能够跳转到异常处理程序的秘密就在于ARM处理器的中断向量表!地址异常内存单元0x00复位0x04未定义指令0x08软中断0x0c预取指令中止0x10预取数据终止0x14保留0x18IRQ0x1cFIQ发生了某类型异常,则pc就指向对应的地址,强迫cpu从对应地址取指令执行,例如:发生复位异常,cpu会从0地址取指令执行。irq_handleriqr中断处理

中断返回假设下面为irq中断处理程序:怎样才能让irq中断发生后,pc能够指向irq_handler?8/20ARM中断的响应过程分析:

当发生irq中断时,如果cpu打算响应该中断(是不是有时候还不响应呢?有,以后再讲)时,硬件会强迫pc指向中断向量表irq的入口,即pc的值变成0x18,此时cpu会从0x18取指令执行,这一切都是由硬件来完成,但我现在希望是一旦发生irq中断,cpu能够执行irq中断处理程序,irq中断产生pc:0x18pc:irq_handler硬件完成我们希望irq中断发生时的pc的值?ldrpc,=irq_handler0x18cpu执行该指令9/20ARM中断的响应过程当某一类型的异常发生时,ARM处理器能够跳转到异常处理程序的秘密就在于ARM处理器的中断向量表!地址异常内存单元0x00复位0x04未定义指令0x08软中断0x0c预取指令中止0x10预取数据终止0x14保留0x18IRQ0x1cFIQ发生了某类型异常,则pc就指向对应的地址,强迫cpu从对应地址取指令执行,例如:发生复位异常,cpu会从0地址取指令执行。irq_handleriqr中断处理

中断返回假设下面为irq中断处理程序:ldrpc,=irq_handler10/20ARM中断的响应过程当八种类型的异常(严格说了只有七种)发生时,硬件能够保证cpu执行中断向量表对应入口处的指令,尽管这个过程由硬件完成,但为了当中断处理完成后程序员能够编写正确的返回指令,有必要对该硬件过程作一解释:(1)拷贝当前CPSR到对应模式的SPSR寄存器中以存储当前程序状态,这些信息包括当前处理器模式、中断屏弊位以及控制标识。(2)改变CPSR寄存器的模式位使当前处理器工作于对应模式、禁止中断位,其中,在任何异常情况下都将禁止IRQ请求位,当复位中断和FIQ中断发生时将禁止FIQ请求位。(3)保存返回地址到对应模式链接寄存器(LR)。(4)设置当前程序PC寄存器到中断向量地址以处理异常。这将强制跳转到相应的中断处理程序中。11/20ARM中断的响应过程到目前为止,解决了当异常发生时,cpu如何跳转到异常处理程序问题;当异常处理结束了,我们还得让cpu返回到被中断的地方继续做未完成的工作,这一工作必须全部有程序员完成,一般遵循如下规则:

当一个中断异常处理后,将执行以下操作以从中断异常处理程序中返回:(1)从相应模式的SPSR寄存器中恢复CPSR寄存器内容。(2)从相应模式的链接寄存器LR中恢复PC寄存器以使程序从中断处重新执行。如果在进入中断时没有使用栈空间来存储普通寄存器数据,则只需要执行以上操作即可。如果在进入中断时使用了栈空间来存储普通寄存器数据,则需要重新加载这些数据,例如使用以下指令: LDMFDsp!,{r0-r12,pc}^

以上指令将从SP(堆栈寄存器)所指堆栈空间中恢复R0~R12寄存器数据,并从LR寄存器恢复PC寄存器,从SPSR_mod中恢复CPSR寄存器。12/20ARM中断的响应过程中断产生cpu中止正在执行的事件;自动将PC备份到lr;自动备份当前的cpsr寄存

器到spsr寄存器自动修改CPU的模式;自动跳转到中断向量处;执行中断处理程序:进行必要的现场保护;处理中断事件中断返回:恢复现场;pc跳转到原中断位置的下

条指令硬件完成程序员完成13/2013/20问题的提出当某一类型的异常发生时,ARM处理器能够跳转到异常处理程序的秘密就在于ARM处理器的中断向量表!发生了某类型异常,则pc就指向对应的地址,强迫cpu从对应地址取指令执行,例如:发生复位异常,cpu会从0地址取指令执行。irq_handler

iqr中断处理中断返回假设下面为irq中断处理程序:ldrpc,=irq_handler在每一个向量处填入什么样的指令可以使当发生异常时cpu会真正跳转到异常中断处理程序?14/20问题的提出安装ARM的中断处理程序需要解决两个问题:在各异常向量对应的表项处填入什么指令可以让发生异常时cpu可以最终跳转到异常处理程序;什么时候安装中断处理程序;14/20what?when?15/20复位时安装中断处理程序(静态的方式安装):方法一 areainit,code,readonly entry bResetHandler bUndefHandler bSwiHandler bPabortHandler bDataHandler b. bIRQHandler bFIQHandler

ResetHandler ;复位异常处理代码UndefHandler ;未定义指令处理异常代码SwiHandler ;软中断异常处理代码PabortHandler ;指令预取异常代码DataHandler ;数据访问异常代码IRQHandler ;普通外部中断处理代码FIQHandler ;快速中断处理代码

end

15/20复位异常的处理代码非常重要,系统上电复位是执行,完成的主要功能包括:关看门狗、关中断、设置系统时钟、初始化sdram存储控制器、设置栈指针。16/20复位时安装中断处理程序(静态的方式安装):方法二areainit,code,readonlyentry

ldr

pc,ResetHandler

ldr

pc,UndefHandler

ldr

pc,SwiHandler

ldr

pc,PabortHandler

ldr

pc,DataHandlerb.

ldr

pc,IRQHandler

ldr

pc,FIQHandler

ResetHandler

dcd

Reset_HandlerUndefHandler

dcd

Undef_HandlerSwiHandler

dcd

Swi_HandlerPabortHandler

dcd

Pabor_tHandlerDataHandler

dcd

Data_HandlerIRQHandler

dcd

IRQ_HandlerFIQHandler

dcd

FIQ_Handler

16/20Reset_Handler ;复位异常处理代码Undef_Handler ;未定义指令处理异常代码Swi_Handler ;软中断异常处理代码Pabort_Handler ;指令预取异常代码Data_Handler ;数据访问异常代码IRQ_Handler ;普通外部中断处理代码FIQ_Handler ;快速中断处理代码

end 17/20复位时安装中断处理程序(静态的方式安装):方法三 areainit,code,readonly entry

ldrpc,=ResetHandler

ldrpc,=UndefHandler

ldrpc,=SwiHandler

ldrpc,=PabortHandler

ldrpc,=DataHandle

温馨提示

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

评论

0/150

提交评论