文档介绍:嵌入式系统教案
武汉创维特信息技术有限公司
11/11/2017
提纲
1
3
2
ARM 异常中断处理概述
中断处理程序的安装
第六章异常中断处理
异常的响应和退出
各种异常中断的处理
4
2
ARM异常中断处理概述
当正常的程序执行流程发生暂时的停止时,称之为异常,例如处理一个外部的中断请求。在处理异常之前,当前处理器的状态必须保留,这样当异常处理完成之后,当前程序可以继续执行。处理器允许多个异常同时发生,它们将会按固定的优先级进行处理。
ARM体系结构中的异常,与8位/16位体系结构的中断有很大的相似之处,但异常与中断的概念并不完全等同。
ARM异常中断处理概述
3
ARM体系结构所支持的异常类型
异常类型
具体含义
复位
复位电平有效时,产生复位异常,程序跳转到复位处理程序处执行。
未定义指令
遇到不能处理的指令时,产生未定义指令异常。
软件中断
执行SWI指令产生,用于用户模式下的程序调用特权操作指令。
指令预取中止
处理器预取指令的地址不存在,或该地址不允许当前指令访问,产生指令预取中止异常。
数据中止
处理器数据访问指令的地址不存在,或该地址不允许当前指令访问时,产生数据中止异常。
IRQ
外部中断请求有效,且CPSR中的I位为0时,产生IRQ异常。
FIQ
快速中断请求引脚有效,且CPSR中的F位为0时,产生FIQ异常。
ARM异常中断处理概述
4
异常向量表(Exception Vectors)
地址
异常
进入模式
0x0000,0000
复位
管理模式
0x0000,0004
未定义指令
未定义模式
0x0000,0008
软件中断
管理模式
0x0000,000C
中止(预取指令)
中止模式
0x0000,0010
中止(数据)
中止模式
0x0000,0014
保留
保留
0x0000,0018
IRQ
IRQ
0x0000,001C
FIQ
FIQ
ARM异常中断处理概述
5
异常优先级(Exception Priorities)
优先级
异常
1(最高)
复位
2
数据中止
3
FIQ
4
IRQ
5
预取指令中止
6(最低)
未定义指令、SWI
ARM异常中断处理概述
6
对异常的响应
当一个异常出现以后,ARM微处理器会执行以下几步操作
将下一条指令的地址存入相应连接寄存器LR,以便程序在处理异常返回时能从正确的位置重新开始执行。
将CPSR复制到相应的SPSR中。
根据异常类型,强制设置CPSR的运行模式位。
强制PC从相关的异常向量地址取下一条指令执行,从而跳转到相应的异常处理程序处。
对异常的响应
7
异常响应伪代码
处理器处于Thumb状态,则当异常向量地址加载入PC时,处理器自动切换到ARM状态。ARM微处理器对异常的响应过程用伪码可以描述为:
R14_<Exception_Mode> = Return Link
SPSR_<Exception_Mode> = CPSR
CPSR[4:0] = Exception Mode Number
CPSR[5] = 0
If <Exception_Mode> == Reset or FIQ then
CPSR[6] = 1
CPSR[7] = 1
PC = Exception Vector Address
对异常的响应
8
从异常返回
异常处理完毕之后,ARM微处理器会执行以下几步操作从异常返回:
将连接寄存器LR的值减去相应的偏移量后送到PC中。
将SPSR复制回CPSR中。
若在进入异常处理时设置了中断禁止位,要在此清除。
可以认为应用程序总是从复位异常处理程序开始执行的,因此复位异常处理程序不需要返回。
对异常的响应
9
中断处理程序的安装
一般在系统的启动代码中安装异常处理程序。大致可以分为两种情况:
0地址处存储器为ROM/FLASH
0地址处存储器为RAM
中断处理程序的安装
10