教材:嵌入式系统及应用,罗蕾、李允、陈丽蓉等,电子工业出版社
目录:
中断与异常
定义
ARM 中的工作模式除 User 和 System 外,均为异常模式,这里的异常是广义的,包含以下三类情况
外部中断(外部中断)
由于 CPU 外部的原因而改变程序执行流程,属于异步事件,可以屏蔽
软件中断(自陷)
- 通过处理器拥有的软件指令,可预期地使正在执行的程序改变执行流程,以执行特定的程序
- 显式的事件,无条件执行
- 属同步事件,且不可屏蔽
- 例如 Motorola 68000 系列的 Trap 指令、ARM 中的 SWI、Intel 8086 中的 INT
异常
- 由 CPU 内部的原因(如非法指令)或外部的原因(如访存错误)引起的事件
- 没有对应的处理器指令
- 异常发生时,处理器无条件地挂起当前运行的程序,去执行特定的处理程序
- 属同步事件,且不可屏蔽
ARM 处理器把上述三种事件以异常模式来处理,通过异常向量来响应。ARM 的每个异常向量中存放的是一条指令(一般是跳转指令),异常发生时,CPU 自动到指定的向量地址读取该指令并执行。
异常向量表
ARM 的异常向量一般是完成程序跳转的指令
在 ARM720T,ARM9 系列及以后的内核中,异常向量表可放置在 0xFFFF0000 开始的高位地址空间
具体内容
如果异常处理程序的起始地址位于 32MB 的范围内,可以直接用分支指令完成跳转
如果异常处理程序的起始地址是一个合法的 ARM 指令立即数(可由0~255内的数循环右移偶数位得到),则可以用数据传输指令将该地址加载到 PC 中
其他情况需采用 LDR 指令完成对 PC 的加载
ARM 引起的异常事件类型
异常响应过程
- 当一个异常产生,处理器核会