ARM异常处理
程序员文章站
2024-02-25 21:18:27
...
异常种类
- 中断 IRQ FIQ 外部硬件触发
- 软中断 Soft interrupt 系统调用
- 复位 Reset 如手机死机了,按power键
- 未定义指令 Undefined instruction
- 数据异常 Data abort 数据越界
中断异常
ARM有俩级外部中断 FIQ ,IRQ
大多数基于ARM的系统有 > 2个中断源,因此需要一个中断控制器
Note: 通常中断处理程序总是包含清除中断源的代码
异常处理过程
异常向量表
异常与工作模式关系
复位,软中断 --> SVC
Prefetch(预取),Data Abort --> Abort
user system 模式不是异常触发切换的·,是程序员修改CPSR,实现切换的
.text
@异常向量表
b reset @0x00 reset
nop @0x04 udef
b swi_handler @0x08 swi 软中断程序的入口
nop @0x0c prefetch abort
nop @0x10 data abort
nop @0x14 reserved
nop @0x18 irq
nop @0x1c fiq
swi_handler:
stmfd sp!,{r0,lr} @进栈保护现场
mov r0,#6
ldmfd sp!,{r0,pc} @出栈恢复现场
swi_num_handler:
@switch(num)
@{
@ case 2:
@ ...
@ case 4:
@ ...
cmp r0,#2
moveq r7,#2
cmp r0,#4
reset:
ldr sp,=stack_base
@切换到应用程序
msr cpsr,#0x10
mov r0,#3
@ open read write ioctl ...通过系统调用访问内核数据
@ 2 4 6 7
swi 2 @跳转到异常向量表软中断的入口位置
@保存返回地址到LR
@切换到SVC工作模式
mov
b
.data
buf:
.space 32
stack_base:
.end
上一篇: 详解操作系统中断
推荐阅读
-
jquery处理带有特殊字符的id 博客分类: web前端
-
Cortex M3异常
-
ARM异常处理
-
十.ARM裸机学习之中断系统1(S5PV210的中断系统详解)
-
Python处理XML格式数据的方法详解
-
浅谈Spring Boot 异常处理篇
-
ORA-12505, TNS:listener does not currently know of SID given in connect descript 博客分类: oracle编程错误及处理 oracleORA-12505
-
java实现非法访问异常示例
-
ORA-12505, TNS:listener does not currently know of SID given in connect descript 博客分类: oracle编程错误及处理 oracleORA-12505
-
java 异常的实例详解