06ARM异常中断处理及程序设计1613.pptx
《06ARM异常中断处理及程序设计1613.pptx》由会员分享,可在线阅读,更多相关《06ARM异常中断处理及程序设计1613.pptx(31页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、嵌入式ARM系统原理与实例开发(第2版)嵌入式ARM系统原理与实例开发北京大学出版社出版3/13/20231北京大学出版社出版嵌入式ARM系统原理与实例开发(第2版)1 12 2ARM中断类型及中断向量中断类型及中断向量 安装安装ARM中断处理程序中断处理程序第6章ARM异常中断处理及程序设计3 3IRQ中断处理过程及处理中断处理过程及处理 3 3SWI中断处理原理及应用程序开发中断处理原理及应用程序开发3/13/20232北京大学出版社出版嵌入式ARM系统原理与实例开发(第2版)异常的概念异常将导致处理器停止当前事务处理,转而处理一个突发事件(这个突发事件包括外部或者内部引起的)。例如一个外
2、部中断或者试图执行一个未定义的指令。在处理异常之前,为了在异常处理完成后能够很好的返回到中断处理之前的状态,在编写程序的时候有必要将处理器当前的状态保护起来,另外,在同一时刻有可能出现多个异常中断请求。3/13/20233北京大学出版社出版嵌入式ARM系统原理与实例开发(第2版)ARM异常类型如果发生中断及异常,以下信息需要进行保护:(1)当前程序的状态,即CPU信息,存储在CPSR寄存器中;(2)当前程序的位置,以便于从异常及中断中返回,即当前PC寄存器信息;(3)临时数据信息,即当前R0R12数据。ARM处理器在执行中断服务程序之前,都将这些信息进行了有效的保护:(1)LR(R14)寄存器
3、用来保存当前CPU寄存器的值,即程序的返回地址;(2)SPSR寄存器用来保护当前程序的状态,即CPU信息;(3)临时数据使用栈来保存,当中断发生后,系统将开辟一段内存空间,将R0R12的数据依次压入栈中,用R13来存储该栈空间的入口地址。经过以上机制,ARM处理器能够很好的支持中断和中断嵌套。3/13/20234北京大学出版社出版嵌入式ARM系统原理与实例开发(第2版)ARM异常类型3/13/20235北京大学出版社出版嵌入式ARM系统原理与实例开发(第2版)ARM中断响应过程3/13/20236北京大学出版社出版嵌入式ARM系统原理与实例开发(第2版)Reset异常及处理当系统复位信号产生后
4、,ARM处理器当立即中断当前正在执行的指令。进入复位处理时,处理器将进行以下操作:R14_svc=UNPREDICTABLEvalue/R14_svc不可知SPSR_svc=UNPREDICTABLEvalue/SPSR_svc不可知CPSR4:0=0b10011/处理器进入svc模式CPSR5=0/执行ARM状态CPSR6=1/禁止FIQCPSR7=1/禁止IRQifhighvectorsconfiguredthen/指向复位向量地址PC=0 xFFFF0000elsePC=0 x00000000当复位后,ARM处理器PC指针将立刻指向0 x00000000或0 xFFFF0000地址,禁止
5、所有外部中断,运行于SVC模式。3/13/20237北京大学出版社出版嵌入式ARM系统原理与实例开发(第2版)未定义指令异常及处理当试图执行一个ARM处理器及其协处理器都无法识别的指令时将产生一个未定义指令异常。在没有实际硬件支持时,未定义指令异常可以被用来进行一个协处理器的软件仿真,或者其它软件仿真功能。3/13/20238北京大学出版社出版嵌入式ARM系统原理与实例开发(第2版)未定义指令异常处理步骤R14_und=addressofnextinstructionaftertheundefinedinstruction/R14_und为下一指令地址SPSR_und=CPSR/存储CPSR状
6、态CPSR4:0=0b11011/进入未定义模式CPSR5=0/执行ARM执行/CPSR6isunchanged,允许FIQCPSR7=1/禁止IRQifhighvectorsconfiguredthen/指向未定义中断向量PC=0 xFFFF0004elsePC=0 x000000043/13/20239北京大学出版社出版嵌入式ARM系统原理与实例开发(第2版)软中断异常及处理软中断异常是由SWI指令产生的,其将进入使CPU进入SVC模式,执行以下操作:R14_svc=addressofnextinstructionaftertheSWIinstruction/R14_svc指向SWI下一条
7、要执行指令SPSR_svc=CPSR/备份CPSRCPSR4:0=0b10011/进入SVC模式CPSR5=0/执行ARM状态指令/*CPSR6isunchanged*/CPSR7=1/禁止IRQifhighvectorsconfiguredthen/进入异常处理PC=0 xFFFF0008elsePC=0 x000000083/13/202310北京大学出版社出版嵌入式ARM系统原理与实例开发(第2版)预取指异常及处理存储异常是由存储系统产生的,当试图读取一个不可用指令时,将产生一个存储器异常信号来标识所取指指令不可用。当试图执行该指令时将产生一个预取异常,如果该指令并没有被执行(例如在管理
8、操作时执行分支指令)则不会产生一个预取异常。在ARMv5及以上版本,执行BKPT指令也会产生一个预取异常。3/13/202311北京大学出版社出版嵌入式ARM系统原理与实例开发(第2版)预取指异常及处理预取指异常处理指令如下:R14_abt=addressoftheabortedinstruction+4/R14_abt存储abt指令4位置SPSR_abt=CPSR/保存CPSRCPSR4:0=0b10111/进入SVC模式CPSR5=0/执行ARM状态指令/*CPSR6isunchanged*/CPSR7=1/禁止IRQifhighvectorsconfiguredthen/进入异常处理PC
9、=0 xFFFF000CelsePC=0 x0000000C3/13/202312北京大学出版社出版嵌入式ARM系统原理与实例开发(第2版)IRQ异常及处理当外部普通中断异常请求管脚发送中断信号时,将产生一个普通IRQ,因其优先级低于FIQ,因此,当产生一个FIQ时将屏蔽掉IRQ请求。另外,当置位了CPSR的I位后(只有在特殊模式下才能修改I位),IRQ将被屏蔽。IRQ中断请求响应后将指令以下操作:R14_irq=addressofnextinstructiontobeexecuted+4/R14_irq存储当前指令4位置SPSR_irq=CPSR/保存CPSRCPSR4:0=0b10010/
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 06 ARM 异常 中断 处理 程序设计 1613
限制150内