ARM的编程模式和七种工作模式 4月9号

学习朱老师的嵌入式教程学习笔记
ARM 采用的是32位架构.
ARM 约定:
Byte : 8 bits
Halfword :16 bits (2 byte)
Word : 32 bits (4 byte)

大部分ARM core 提供:
ARM 指令集(32-bit)
Thumb 指令集(16-bit )
Thumb2指令集(16 & 32bit)
Jazelle cores 支持 Java bytecode
ARM 有7个基本工作模式:
User : 非特权模式,大部分任务执行在这种模式

FIQ : 当一个高优先级(fast) 中断产生时将会进入这种模式
IRQ : 当一个低优先级(normal) 中断产生时将会进入这种模式
Supervisor :当复位或软中断指令执行时将会进入这种模式
Abort : 当存取异常时将会进入这种模式
Undef : 当执行未定义指令时会进入这种模式
System : 使用和User模式相同寄存器集的特权模式
*除User(用户模式)是Normal(普通模式)外,其他6种都是Privilege(特权模式)。
Privilege中除Sys模式外,其余5种为异常模式。
各种模式的切换,可以是程序员通过代码主动切换(通过写CPSR寄存器);也可以是CPU在某些情况下自动切换。
各种模式下权限和可以访问的寄存器不同*
有37个寄存器
ARM的异常处理机制
当异常产生时, ARM core:
拷贝 CPSR 到 SPSR_
设置适当的 CPSR 位:
改变处理器状态进入 ARM 态
改变处理器模式进入相应的异常模式
设置中断禁止位禁止相应中断 (如果需要)
保存返回地址到 LR_
设置 PC 为相应的异常向量
返回时, 异常处理需要:
从 SPSR_恢复CPSR
从LR_恢复PC
Note:这些操作只能在 ARM 态执行.
查询异常向量表

你可能感兴趣的:(arm)