- UID
- 1029342
- 性别
- 男
|
ARM体系异常种类细说:
1.复位异常
当处理器的复位引脚有效时,系统产生复位异常中断,程序跳转到复位异常中断处理程序处执行。
复位异常中断通常用在下面两种情况下。
*系统上电。
*系统复位。
当复位异常时,系统执行下列伪操作:
R14_svc = UNPREDICTABLE value //任意值
SPSR_svc = UNPREDICTABLE value //任意值
CPSR[4∶0] = 0b10011 /*进入管理模式*/
CPSR[5] = 0 /*处理器进入ARM状态*/
CPSR[6] = 1 /*禁止快速中断*/
CPSR[7] = 1 /*禁止外设中断*/
If high vectors configured then
PC = 0xffff0000
Else
PC = 0x00000000
复位异常中断处理程序的主要功能:
*设置异常中断向量表。
*初始化数据栈和寄存器。
*初始化存储系统,如系统中的MMU等。
*初始化关键的I/O设备。
*使能中断。
*处理器切换到合适的模式。
*初始化C变量,跳转到应用程序执行。
2.未定义指令异常
当ARM处理器执行协处理器指令时,它必须等待一个外部协处理器应答后,才能真正执行这条指令。
若协处理器没有响应,则发生未定义指令异常。
3.软中断SWI
软中断异常发生时,处理器进入特权模式,执行一些特权模式下的操作系统功能。
4.预取指令异常
预取指令异常是由系统存储器报告的。当处理器试图去取一条被标记为预取无效的指令时,
发生预取异常。
5.数据访问中止异常
数据访问中止异常是由存储器发出数据中止信号,它由存储器访问指令Load/Store产生。
当数据访问指令的目标地址不存在或者该地址不允许当前指令访问时,处理器产生数据访问中止异常。
6.外部中断IRQ
当处理器的外部中断请求引脚有效,而且CPSR寄存器的I控制位被清除时,处理器产生外部中断IRQ异常。
系统中各外部设备通常通过该异常中断请求处理器服务。
7.快速中断FIQ
当处理器的快速中断请求引脚有效且CPSR寄存器的F控制位被清除时,处理器产生快速中断请求FIQ异常。
当异常发生时,处理器会把PC设置为一个特定的存储器地址。
这一地址放在被称为向量表(vector table)的特定地址范围内。
向量表的入口是一些跳转指令,跳转到专门处理某个异常或中断的子程序。
ARM Generic Interrupt Controller : ARM GIC : arm 通用中断控制器
如果对 通用中断控制器有疑惑的,请看:***arm 通用中断控制器
中断的状态:
Inactive(不激活) 没有被激活或挂起的中断
Pending(挂起) 这个中断可以被硬件识别或是由软件产生的,正处於等待处理器处理。
Active(激活) 这个中断被处理器从通用中断控制器中的中断源中识别了出来,并且正在处理这个中断,且没有处理完成。
Active and pending(激活和挂起) 处理器正在处理某个中断,且通用中断控制器有一个挂起的中断,
这两个中断是属于同一个中断源的
中断流程:
|
|