什么是ARM中断事件?ARM中断异常处理具体过程_第1页
什么是ARM中断事件?ARM中断异常处理具体过程_第2页
什么是ARM中断事件?ARM中断异常处理具体过程_第3页
什么是ARM中断事件?ARM中断异常处理具体过程_第4页
什么是ARM中断事件?ARM中断异常处理具体过程_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

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

文档简介

第第页什么是ARM中断事件?ARM中断异常处理具体过程

(ARM)(处理器)是一种流行的处理器架构,用于许多现代移动设备和(嵌入式系统)中。中断和异常是ARM处理器中的两个重要概念,它们是处理器中断程序执行的关键机制。

什么是ARM中断事件?

中断是一种处理器事件,通常是外部设备或其他程序发出的(信号),通知处理器需要执行某个任务或服务请求。在ARM处理器中,中断信号通常由中断(控制器)发出,并在处理器中断向量表中找到对应的中断处理程序。处理器在接收到中断信号后,要放下当前正在执行的任务而去执行中断处理程序。

怎么理解,打个比方,当你在家做饭的时候,突然电话铃声响起,你必须放下眼前正在干的的事情去处理完这个电话,然后再回来继续做饭。这里,电话铃声就是中断事件信号,拿起电话,与对方说话的过程就是处理中断事件的过程。

ARM处理器支持两种不同类型的中断,即中断请求(IRQ)和快速中断请求(FIQ)。IRQ通常用于处理一般的外部设备中断,而FIQ则用于处理更紧急的、时间敏感的中断请求。

FIQ优先级高于IRQ

(1)同时请求,优先处理FIQ

(2)已经在处理IRQ,FIQ中断可以中断IRQ的处理

异常是指处理器内部事件,通常是由程序错误、非法操作或(硬件)故障引起的。与中断类似,异常也会导致处理器停止当前执行的任务并转而执行异常处理程序。

打个比方,异常就像是做饭的时候突然起火了,表示做饭这个正常任务时候出现错误或者故障情况,必须要先去把起火这个异常事件处理了才能回来继续做饭。

异常分类

ARM处理器支持多种类型的异常,例如,未定义指令异常、数据中止异常、软件中止异常等。这些异常都有不同的原因和处理程序:

复位异常,当(CPU)刚上电时或按下reset重启键之后进入该异常,该异常在特权模式(SVC)下处理。未定义指令异常,该异常发生在流水线技术里的译码阶段,如果当前指令不能被识别为有效指令,产生未定义指令异常,该异常在未定义异常模式下处理。软件中断指令(swi)异常,该异常是软件程序自己执行软中断指令时产生,该异常也是在特权模式(SVC)下处理。数据中止访问异常,该异常发生在要访问数据地址不存在或者为非法地址时,该异常在中止异常模式(ABT)下处理。预取指令中止异常,该异常发生在CPU流水线取指阶段,如果目标指令地址是非法地址进入该异常,该异常在中止异常模式下处理。总之,中断和异常是ARM处理器中的两个重要概念,它们为系统提供了处理器级别的事件和错误处理机制。处理器中断和异常的处理过程非常重要,因为它们可以确保系统的稳定性和可靠性,以及及时响应外部事件和内部错误。在ARM处理器中,中断和异常是实现可靠系统的关键机制之一。

ARM中断异常处理具体过程

处理器中断和异常的处理过程是非常重要的,因为它们可以保证系统的稳定性和可靠性。当中断或异常发生时,处理器会停止当前执行的任务,并跳转到相应的处理程序,以执行必要的任务或服务请求。一旦中断或异常处理完成,处理器将返回到原来的任务,并继续执行。

整体流程如下图:

异常发生的硬件操作

当ARM处理器遇到中断异常时,ARM内核硬件会自动做以下工作:

保存执行状态:将CPSR复制到发生的异常模式下SPSR中,便于异常返回时候,恢复到CPSR,恢复到异常前执行状态;模式切换:将CPSR模式位强制设置为与异常类型相对应的值,同时处理器进入到ARM执行模式,禁止所有IRQ中断,当进入FIQ快速中断模式时禁止FIQ中断;保存返回地址:将下一条指令的地址(被打断程序)保存在LR(异常模式下LR_excep)中。注意:由于流水线技术再结合异常类型不同,异常的返回地址是有区别的,这里提醒一下,我们将在后面文章具体写中断处理代码的时候详细分析一下具体地址的计算细节,因此也需要在中断处理程序里面修正。跳入异常向量表:强制设置PC的值为响应异常向量地址,将跳转到异常向量表(ExceptionVectorTable)中相应的异常处理程序。异常向量表

异常向量表是一个特殊的内存区域,其中包含了处理器在不同类型异常发生时跳转的地址。每种ARM异常对应一个字长空间(4By(te)s),正好是一条32位指令长度,当异常发生时,CPU强制将PC的值设置为当前异常对应的固定内存地址。

下图展示了ARM处理器的异常向量表结构:

当ARM处理器遇到中断异常时,它将读取相应的异常向量表条目,获取异常处理程序的地址。然后,处理器将跳转到该地址,开始执行异常处理程序。

正是由于异常向量表的存在,才让硬件异常处理和软件(工程师)自定义的处理程序有机联系起来。

异常处理程序

异常处理程序会执行一系列操作,以尽可能快地处理异常。这些操作包括:

修正返回地址,上面提到,由于流水线技术再结合异常类型不同,异常的返回地址是有区别的,更具不同模式LR的值要做个修正,具体如何修正我们再在后面文章再详细介绍。保存(寄存器)状态:为了避免丢失现有的寄存器状态,异常处理程序通常会将寄存器状态保存到内存中,通常是保存在异常模式下的栈(SP_excep)里面,便于后面恢复。诊断异常:异常处理程序可能需要分析异常的原因和上下文,以便确定如何恢复。恢复异常:一旦异常原因被确定,异常处理程序可能会执行一些操作来恢复异常状态。例如,它可能会尝试重新加载指令或数据缓存,或者重新启动处理器。恢复寄存器状态:最后,异常处理程序会将之前保存的寄存器状态从内存中恢复,以便处理器

温馨提示

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

评论

0/150

提交评论