ARM 异常及处理
2010-11-18 16:56
211 查看
td p { margin-bottom: 0in; }p { margin-bottom: 0.08in; }
ARM 支持
7种类型的异常(下图),当异常产生时,
ARM
CPU 强制程序从固定的内存点开始执行,这些固定的地址称为异常向量。
当一种异常产生时,异常模式的分组寄存器
R14以及程序状态寄存器用来保存现场状态,其通用形式如下:
如果需要从异常处理中退出来,则令
CPSR
= SPSR,
PC = R14,以实现先前运行程序的返回。
从上面可以看出,
ARM在处理异常时,会禁止
IRQ的响应。
异常的优先级如下表:
可以看到,软件中断
swi,也是如
FIQ/IRQ之类的中断,只不过是用户可以触发的。
ARM 支持
7种类型的异常(下图),当异常产生时,
ARM
CPU 强制程序从固定的内存点开始执行,这些固定的地址称为异常向量。
异常类型 | 处理器模式 | 向量地址 |
复位 reset | 管理模式 | 0x00000000 |
未定义 | 未定义模式 | 0x00000004 |
软件中断 swi | 管理模式 | 0x00000008 |
指令预取中止 | 中止模式 | 0x0000000c |
数据中止 | 中止模式 | 0x00000010 |
中断 irq | 中断模式 | 0x00000018 |
快速中断 fiq | 快速中断模式 | 0x0000001c |
R14以及程序状态寄存器用来保存现场状态,其通用形式如下:
R14_<异常模式 > = return link SPSR_<异常模式 > = CPSR CPSR[4:0] = 异常模式 CPSR[5] = 0 /*执行于 ARM状态 */ IF <异常模式 > == Reset or FIQ THEN CPSR[6] = 1 /*禁止快速中断 */ /*else CPSR[6] 不改变 */ CPSR[7] = 1 /*禁止普通中断 */ PC = 异常矢量地址 /*迫使处理器从固定的异常向量处开始执行 */ |
CPSR
= SPSR,
PC = R14,以实现先前运行程序的返回。
从上面可以看出,
ARM在处理异常时,会禁止
IRQ的响应。
异常的优先级如下表:
优先级 | 异常类型 |
最高 1 | 复位 |
2 | 数据中止 |
3 | FIQ |
4 | IRQ |
5 | 指令预取中止 |
最低 6 | 未定义异常,软件中断 swi |
swi,也是如
FIQ/IRQ之类的中断,只不过是用户可以触发的。
相关文章推荐
- ARM异常处理
- arm 硬件和软件对异常的处理
- ARM的异常处理方式简单介绍
- arm平台linux异常处理流程
- ARM七种异常源和异常处理流程
- ARM 处理器如何处理异常
- 【ARM】arm异常中断处理知识点
- 【ARM】arm异常中断处理知识点
- ARM的异常处理过程分析
- ARM异常处理方式简单介绍
- day11 ARM混合调用案例、ARM核 异常处理流程、软件处理异常
- ARM基础学习-SWI异常中断处理
- Arm异常中断返回时的处理
- ARM1176JZF-S/S3C6410处理器的异常处理过程
- ARM的异常处理方式
- ARM异常处理流程
- ARM第一部分-ARM的异常处理方式简单介绍
- ARM 的异常处理
- ARM平台上Linux异常处理代码简要分析
- ARM异常中断处理