一、ARM的工作模式
ARM一共有7种工作模式
模式 | 含义 |
---|---|
User | 非特权模式,大部分任务执行在这种模式 |
FIQ | 当一个高优先级(fast) 中断产生时将会进入这种模式 |
IRQ | 当一个低优先级(normal) 中断产生时将会进入这种模式 |
Supervisor | 当复位或软中断指令执行时将会进入这种模式 |
Abort | 当存取异常时将会进入这种模式 |
Undef | 当执行未定义指令时会进入这种模式 |
System | 使用和User模式相同寄存器集的特权模式 |
1、7个模式中除了user是普通模式以外,其他6个都是特权模式
2、6个特权模式中,除了System模式以外,其他5个都是异常模式
3、模式的切换是通过代码写CPSR寄存器进行主动切换的,或者CPU自动切换
4、各种模式可访问的寄存器数量不同,操作权限不同,方便操作系统的安全等级需求
二、ARM的寄存器
2.1 ARM的37个寄存器
1、ARM一共有37个寄存器,在不同的工作模式下,可操作不同的寄存器,
2、37个寄存器中30个为“通用” 型, 1个固定用作PC,一个固定用作CPSR, 5个固定用作5种异常模式下的SPSR
3、User和System模式共用同一组寄存器
2.2 ARM的程序状态寄存器
CPSR程序状态寄存器
1、CPSR中的各个Bit位表明了CPU的某些状态信息
2、CPSR中的I、F位和开关中断有关
3、CPSR中的mode位(bit4~bit0共5位)决定了CPU的工作模式,在uboot代码中会使用汇编进行设置
2.3 ARM的程序控制寄存器
PC(r15)程序控制寄存器
1、PC为程序指针, PC指向哪里, CPU就会执行哪条指令(所以程序跳转时就是把目标地址代码放到PC中)
2、CPU中只有一个PC、一个CPSR,5个SPSR