ARM体系结构中有七个工作模式:
0b10000 usr 用户模式,一般的,唯一没有特权的模式,也是正常工作模式,不能切换到其他模式
0b10001 FIQ 快中断模式,用于高速数据传输,快中断响应的工作模式
0b10010 irq 中断模式,通用中断处理,一般中断响应的工作模式
0b10011 supervisor 管理模式,操作系统保护模式,复位和软件中断响应的工作模式
0b10111 abort 中止模式,虚拟内存和存储器保护模式,指令预取中止和数据访问中止响应的工作模式
0b11011 undefined 未定义模式,用于软件仿真,未定义指令中断响应的工作模式
0b11111 system 系统模式,非异常的特权模式。
总结:1.只有usr用户模式是唯一非特权工作模式。2.只有usr用户模式和sys系统模式是非异常工作模式。
中断定义:在程序的正常运行中,出现了紧急事件,CPU收到一个中断信号,然后中止正常程序的运行,转去处理相应的中断服务程序,并在中断处理完后,返回到正常程序的运行。
ARM体系结构中七个中断:
中断向量地址,中断名称,中断优先级,中断模式
0x00复位(reset): 1 svc
复位引脚有效产生复位异常中断,程序跳转到子程序执行;复位情况加电,复位按键;直接跳转到复位中断服务子程序
0x04未定义指令(undefined instruction):6 und
0x08软件中断:用户自定义的中断指令,目的是为了获取到特权 6 svc
0x0c指令预取中止 5 abt
0x10数据访问中止 2 abt
0x14
0x18外部中断请求(IRQ) 4 fiq
0x1c快中断请求(FIQ) 3 irq
psr状态寄存器
位数:31 30 29 28 -------------------------------7 6 5 4 3 2 1 0
N Z C V I F T M5------------M1
N:负数
Z:零
C:进位或借位
V:溢出
I:IRQ禁止
F:FIQ禁止
T:Thumb状态
M5--M1:工作模式位
中断流程
用自己的理解来说就是:1.CPU发现中断,捕获中断信号。2.CPU保护好现场状态。3.CPU跳转到相应的中断服务子程序,解决中断问题。4.程序员清空中断,恢复保护好的现场状态。
官方解释:(参考mini2440文档)
1. 中断控制器捕获当前外设发出的中断信号,通知SOC
2. SOC保存当前程序的运行环境,然后调用中断服务程序(ISR)来处理中断
3. 在ISR中通过读取中断控制寄存器,外设的相关寄存器来识别是哪一个中断触发,获取硬件中断号IRQ,跳转到相应的处理例程完成中断处理
4. 清除中断:通过读取相关中断控制寄存器和外设相关的寄存器来实现
最后恢复被中断程序的环境,继续执行