ARM学习笔记一:ARM的编程模型

  • ARM的七种运行模式
  1. 用户模式(usr):ARM处理器的正常模式,运行该模式时,某些受保护系统资源不可访问
  2. 快速中断模式(fiq):用于高速数据传输或者通道处理
  3. 外部中断模式(irq):用于通用中断处理
  4. 管理模式(svc):操作系统使用的保护模式
  5. 数据访问终止模式(abt):当数据或者指令预取进入该模式,可用于虚拟存储或存储保护
  6. 系统模式(sys):运行具有特权的操作系统任务
  7. 未定义指令中止模式(und):当未定义的指令执行时进入该模式,可用于支持硬件协处理器的软件仿真
  • ARM状态下寄存器的组织
  1. 未分组寄存器R0~R7:在所有模式下均指向相同物理寄存器。R8~R12对应两个物理寄存器。当运行在fiq时,访问R8_fiq~R12_fiq;此外,访问R8_usr~R12_usr。因此,运行模式转换或者异常处理时,可能造成存储数据的冲销。
  2. 分组寄存器R8~R14:R13习惯上用作堆栈寄存器;R14则用作子程序连接寄存器(Subroutine Link Register)也可作通用寄存器,每次访问的物理寄存器和运行模式有关。R13、R14各对应6个物理寄存器,其中系统模式和用户模式共用一个物理寄存器,其余5种模式分别对应不同的物理寄存器。
  3. 程序计数器(PC)R15:ARM状态下:位[1:0]为0,位[31:2]保存PC;Thumb状态下,位[0]为0,位[31:1]保存PC。PC=当前指令地址+8个字节。
  4. 当前程序状态寄存器CPSR:CPSR在任何模式下均可以被访问。同时每一种运行模式下都有SPSR。
  • Thumb状态下寄存器的组织
  1. Thunb状态寄存器集是ARM状态下寄存器记集的一个子集,与ARM状态寄存器集存在对应关系。
  2. Thumb状态下,每种特权模式下PC、SP、LR、SPSR均指向一组物理寄存器。
  • 程序状态寄存器
略。
  • 异常类型
  1. 复位:复位电平触发
  2. 未定义指令:处理器遇到不能处理的指令触发,可进行软件仿真
  3. 软件中断:执行SWI指令触发,可用于usr下调用特权操作指令
  4. 指令预取中止:取指失败触发
  5. 数据中止:数据访问失败触发
  6. IRQ:外部中断触发
  7. FIQ:快速中断触发
  • 异常响应
  1. 将下一条地址存入相应LR,从而异常处理返回能重新执行
  2. 将CPSR复制到相应的SPSR中
  3. 根据异常类型,强制设置CPSR的标志位
  4. 跳转至ISR
  5. 将LR的值减去相应的偏移量后送到PC
  6. 将SPSR复制到CPSR
  7. 若在异常处理中设置了中断禁止位,此时清除
  • 异常优先级
    复位→数据中断→FIQ→IRQ→预取指令中止→未定义、SWI
posted @ 2010-08-24 22:29    阅读(993)  评论(0)    收藏  举报