武汉创维特ARM教学系统-06 异常中断处理.ppt
《武汉创维特ARM教学系统-06 异常中断处理.ppt》由会员分享,可在线阅读,更多相关《武汉创维特ARM教学系统-06 异常中断处理.ppt(29页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、嵌入式系统教案嵌入式系统教案嵌入式系统教案嵌入式系统教案武汉创维特信息技术有限公司武汉创维特信息技术有限公司 1/22/2023提纲1 13 32 2ARM 异常中断处理概述中断处理程序的安装第六章 异常中断处理异常的响应和退出各种异常中断的处理4 42ARM异常中断处理概述q当正常的程序执行流程发生暂时的停止时,称之为异常,当正常的程序执行流程发生暂时的停止时,称之为异常,例如处理一个外部的中断请求。在处理异常之前,当前处例如处理一个外部的中断请求。在处理异常之前,当前处理器的状态必须保留,这样当异常处理完成之后,当前程理器的状态必须保留,这样当异常处理完成之后,当前程序可以继续执行。处理器
2、允许多个异常同时发生,它们将序可以继续执行。处理器允许多个异常同时发生,它们将会按固定的优先级进行处理。会按固定的优先级进行处理。qARMARM体系结构中的异常,与体系结构中的异常,与8 8位位/16/16位体系结构的中断有很位体系结构的中断有很大的相似之处,但异常与中断的概念并不完全等同。大的相似之处,但异常与中断的概念并不完全等同。ARM异常中断处理概述3ARM体系结构所支持的异常类型 异常类型具体含义复位复位电平有效时,产生复位异常,程序跳转到复位处理程序处执行。未定义指令遇到不能处理的指令时,产生未定义指令异常。软件中断执行SWI指令产生,用于用户模式下的程序调用特权操作指令。指令预取
3、中止处理器预取指令的地址不存在,或该地址不允许当前指令访问,产生指令预取中止异常。数据中止处理器数据访问指令的地址不存在,或该地址不允许当前指令访问时,产生数据中止异常。IRQ外部中断请求有效,且CPSR中的I位为0时,产生IRQ异常。FIQ快速中断请求引脚有效,且CPSR中的F位为0时,产生FIQ异常。ARM异常中断处理概述4异常向量表(Exception Vectors)地地 址址异异 常常进入模式进入模式0 x0000,00000 x0000,0000复位复位管理模式管理模式0 x0000,00040 x0000,0004未定义指令未定义指令未定义模式未定义模式0 x0000,00080
4、 x0000,0008软件中断软件中断管理模式管理模式0 x0000,000C0 x0000,000C中止(预取指令)中止(预取指令)中止模式中止模式0 x0000,00100 x0000,0010中止(数据)中止(数据)中止模式中止模式0 x0000,00140 x0000,0014保留保留保留保留0 x0000,00180 x0000,0018IRQIRQIRQIRQ0 x0000,001C0 x0000,001CFIQFIQFIQFIQARM异常中断处理概述5异常优先级(Exception Priorities)优先级优先级异异 常常1 1(最高)(最高)复位复位2 2数据中止数据中止3
5、 3FIQFIQ4 4IRQIRQ5 5预取指令中止预取指令中止6 6(最低)(最低)未定义指令、未定义指令、SWISWIARM异常中断处理概述6对异常的响应 当一个异常出现以后当一个异常出现以后,ARMARM微处理器会执行以下几步操作微处理器会执行以下几步操作1.1.将下一条指令的地址存入相应连接寄存器将下一条指令的地址存入相应连接寄存器LRLR,以便程序以便程序在处理异常返回时能从正确的位置重新开始执行。在处理异常返回时能从正确的位置重新开始执行。2.2.将将CPSRCPSR复制到相应的复制到相应的SPSRSPSR中。中。3.3.根据异常类型,强制设置根据异常类型,强制设置CPSRCPSR
6、的运行模式位。的运行模式位。4.4.强制强制PCPC从相关的异常向量地址取下一条指令执行,从而从相关的异常向量地址取下一条指令执行,从而跳转到相应的异常处理程序处。跳转到相应的异常处理程序处。对异常的响应7异常响应伪代码处理器处于处理器处于ThumbThumb状态,则当异常向量地址加载状态,则当异常向量地址加载入入PCPC时,处时,处理器自动切换理器自动切换到到ARMARM状态。状态。ARMARM微处理器对异常的响应过程用微处理器对异常的响应过程用伪码可以描述为:伪码可以描述为:R14_=Return LinkSPSR_=CPSRCPSR4:0=Exception Mode NumberCPS
7、R5=0If =Reset or FIQ then CPSR6=1 CPSR7=1 PC=Exception Vector Address 对异常的响应8从从异常返回返回异常处理完毕之后,异常处理完毕之后,ARMARM微处理器会执行以下几步操作从微处理器会执行以下几步操作从异常返回:异常返回:1.1.将连接寄存器将连接寄存器LRLR的值减去相应的偏移量后送的值减去相应的偏移量后送到到PCPC中。中。2.2.将将SPSRSPSR复制回复制回CPSRCPSR中。中。3.3.若在进入异常处理时设置了中断禁止位,要在此清除。若在进入异常处理时设置了中断禁止位,要在此清除。可以认为应用程序总是从复位异常
8、处理程序开始执行的,可以认为应用程序总是从复位异常处理程序开始执行的,因此复位异常处理程序不需要返回。因此复位异常处理程序不需要返回。对异常的响应9中断处理程序的安装q一般在系统的启动代码中安装异常处理程序。大致可以分为两种情况:1.0地址处存储器为ROM/FLASH2.0地址处存储器为RAM中断处理程序的安装10在ROM/FLASH中安装中断处理程序q在ROM/FLASH的异常中断向量表中,可以使用LDR指令直接向程序计数器PC中赋值,也可以直接使用跳转指令转到异常中断处理程序。1.使用LDR指令:Vector_entry:LDRPC,Reset_HandleLDRPC,Undef_Hand
9、leLDRPC,SWI_Handle中断处理程序的安装11在ROM/FLASH中安装中断处理程序LDRPC,Prefetch_HandleLDRPC,Abort_Handle NOPLDRPC,IRQ_HandleLDRPC,FIQ_HandleqVector_table:qReset_Handle:.LONGStart_BootqUndef_Handle:.LONGUndef_Isr中断处理程序的安装12在ROM/FLASH中安装中断处理程序2.使用跳转指令:Vector_entry:BReset_HandleBUndef_HandleBSWI_HandleBPrefetch_HandleB
10、Abort_Handle NOPBIRQ_HandleBFIQ_Handle中断处理程序的安装13RAM中安装中断处理程序q当0地址处为RAM时,中断向量表必须使用数据读取指令直接指向PC中赋值的形式。而且必须把中断向量从ROM中复制到RAM地址的0地址处。MOVr8,#0ADRr9,Vector_Init_BlockLDMIAr9!,r0-r7STMIAr8!,r0-r7中断处理程序的安装14在C程序中安装异常中断处理程序1.中断向量表使用数据处理指令的情况 在中断向量vector处安装location处指向的处理程序unsigned ist_handler(unsigned locatio
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 武汉创维特ARM教学系统-06 异常中断处理 武汉 创维特 ARM 教学 系统 06 异常 中断 处理
限制150内