目录
一、异常的概念
1、什么是异常?
异常指的是处理器在正常执行程序的过程中遇到的不正常事件。异常发生时,处理器会暂停当前程序转而去处理异常事件,异常事件处理完成之后再回到之前被打断的地方继续执行程序。
比如,老师在上课,这时突然有人敲门,老师就会暂停讲课去开门,事情处理完毕以后,老师继续讲课。这个过程中,老师上课 = 正常执行程序,有人敲门 = 异常事件。

2、处理异常时,处理器要考虑哪些问题?
不同处理器对异常的处理大体相似,但是不同处理器在具体实现上可能会有所不同。处理器在处理异常的时候,需要考虑的问题大致如下:
- 异常源的判断。
- 并非有事件发生,处理器就会去处理,比如老师上课的时候,学生咳嗽一声,这种情况就不算异常。
- 异常的响应
- 跳转前的准备工作。比如保存跳转前的地址、进入到相应的异常模式
- 异常处理工作。这里就是去调用异常处理程序了
- 异常处理结束的善后工作。比如异常如何返回
二、ARM异常源
所谓异常源,就是导致异常产生的事件。异常源和工作模式存在一定的关联,异常源出现的时候,处理器会进入相应的工作模式,然后去执行相应的功能。
1、异常源的分类
异常源大致有如下七种,这里需要和工作模式区分开,异常源是终止CPU正常运行的原因,工作模式则是CPU当前的工作状态。
| 异常源类型 (优先级由高到低) |
异常源说明 |
| Reset | 复位电平有效 |
| Data Abort | 数据终止。比如地址不允许被访问 |
| FIQ | 快速中断请求引脚有效,一般是外部硬件产生的,优先级较高。 |
| IRQ | 外部中断请求引脚有效,一般是外部硬件产生的,优先级较低 |
| Prefetch Abort | 指令预取终止。比如对应地址不存在指令 |
| Software Interrupt |

最低0.47元/天 解锁文章
2029





