嵌入式系统与开发(一)

ARM体系结构

简介

ARM微处理器内部结构

  • 知识产权核(IP CORE)——完成指令的取指、译码和执行
    • 寄存器
    • MMU(Memory Management Unit;内存管理单元)
    • 异常管理系统
    • 指令
    • cache系统
  • 接口控制器

特点

体积小、功耗低、成本低、高性能
支持Thumb(16位)/ARM(32/64位)双指令集,兼容8位和16位器件
具有大量寄存器,因而指令执行速度快
绝大多数操作都在寄存器中进行,通过Load/Store的体系架构在内存和寄存器之间传递数据
寻址方式简单
采用固定长度的指令格式

应用

  • 无线通讯:手机
  • 蓝牙技术
  • 网络:ADSL(Asymmetric Digital Subscriber Line;非对称数字用户线路)技术
  • 电子产品:数字音频、数字机顶盒、游戏机
  • 信息家电:数码相机、打印机、车载娱乐

模型

运行模式

  • 用户模式(User,usr)
  • 快速中断模式(FIQ,fiq)
  • 外部中断模式(IRQ,irq)
  • 特权模式(Supervisor,sve)
  • 数据访问终止模式(Abort,abt)
  • 未定义指令终止模式(Undefined,und)
  • 系统模式(System,sys)

寄存器

ARM处理器共有37个32位寄存器:31个通用寄存器+6个状态寄存器
ARM处理器运行在每一种模式下时,都会使用属于自己的一组寄存器,通常包括15个通用寄存器(R0~R14)、一个或两个状态寄存器及程序计数器(PC)

  • 通用寄存器

    • R0~R7:所有模式共用
    • R8~R14:备份寄存器

      • R8~R12:每个寄存器对应2个不同的物理寄存器
      • R13~R14:每个寄存器对应6个不同的物理寄存器

        • R13通常用作堆栈指针,采用下面的记号来区分各个物理寄存器:

          R13_<MODE>

          <MODE>取值:usr、svc、abt、und、irq、fiq

        • R14的特殊作用:

          • 用户模式下,用作链接寄存器(LR),存放子程序被调用时的返回地址
          • 异常处理模式下,R14用来保存异常的返回地址
  • 程序计数器(PC) R15

    • PC的值为当前指令地址的值加8个字节,即指向当前指令的下两条指令的地址
  • 程序状态寄存器——用来保存程序执行时的各种状态值
    分为两种类型:CPSR和SPSR(格式相同)
    image

ARM异常中断处理

类型

  • 复位
  • 未定义指令
  • 软件中断
  • 指令预取中止
  • 数据访问中止
  • 外部中断请求(IRQ)
  • 快速中断请求(FIQ)

异常处理过程

1.响应
step1:将下一条指令的地址保存在相应的LR寄存器中
step2:将CPSR寄存器保存到相应的SPSR寄存器中
伪代码:

1
2
3
4
5
6
7
8
9
10
11
R14_<exception_mode>=return link
SPSR<exception_mode>=CPSR
CPSR[4:0]=exception_mode:number
CPSR[5]=0 ;当运行于ARM工作状态时
If<exception_mode>==reset or FIQ ;当响应FIQ异常时,禁止新的FIQ异常
THEN
[
CPSR[6]=1
CPSR[7]=1
PC=exception vector address
]

2.返回

  • 拷贝SPSR_mode寄存器内容到CPSR
  • 将LRmode寄存器内容(LR的值减去相应的偏移量)复制到程序计数器PC中 注:复位异常中断处理程序无需返回;如果进入异常处理程序时保存了部分通用寄存器的值,此时需要恢复这些被保存的通用寄存器的值_

异常优先级

高->低
复位>数据中止>FIQ>IRQ>预取指令中止>未定义指令、SWI

ARM存储体系

数据类型

  • 字(word): 长度为32位,占4个字节
  • 半字(half-word): 长度为16位
  • 字节(byte): 长度为8位

存储空间

ARM体系使用平板地址空间,该地址空间的大小为2^32个8位字节,即最大寻址空间为4GB。
首地址为0,0~3放置第一个存储的字数据,4~7字节放置第二个存储的字数据,依次排序。
存储字数据的方法有两种模式:

  • 大端模式: 数据的高字节存储在低地址中
  • 小端模式: 数据的高字节存储在高地址中