计原(二)ARM处理器

ARM微处理器特点及功能结构

  • ARM微处理器属于RISC处理器
  • ARM7系列采用冯诺依曼体系结构, ARM9~11采用哈佛体系结构
  • 有ARM和thumb两种工作状态
  • 指令集采用固定长度指令格式
  • 方位内存使用LOAD/STIRE模式

cortex-M4特点:

在这里插入图片描述
(10) 支持单指令多数据操作
(11) 支持饱和运算指令
(12)支持可选择的浮点指令
cortex_M3, cortex_M4都是3级指令流水线, 执行一条指令分为3阶段:
在这里插入图片描述
在执行一条指令的同时对下一条指令进行译码, 并将下一条指令取出

经典ARM微处理器编程模型

  • ARM工作状态: ARM有两种工作状态: 32位的ARM和16位的thumb. ARM处理器可以在两种工作状态切换, 但开始执行代码时应处于ARM状态.thumb指令集时ARM的指令集的子集.
  • ARM处理器的工作模式
    在这里插入图片描述
    处理器模式可以通过软件改变, 也可以通过外部中断或处理器异常来改变.

ARM支持的数据类型和储存格式

  • 数据类型: ARM支持字节(8位), 半字(16位), 字(32位)的数据类型. 对储存器按字进行读写时, 要求数据地址的低两位是00, 通常称之为4字节对齐, 或字对齐. 在进行半字(16位)数据读写时, 要求数据地址的最低为位0, 称之为2字节对齐, 或半字对齐.在进行字节数据传送时, 对数据地址没有要求.
  • 所有数据操作都是以字为单位的, 而对储存器进行数据读写操作时, 可以按字节也可以按半字或字来进行.
    在这里插入图片描述
  • 储存格式: ARM最大寻址空间为4GB, 储存器被看作一个从0开始的线性递增的字节组合.
  • 大端格式: 子数据的高字节储存在低地址中,小端格式与其相反. 一般可通过外部引脚或内部寄存器来选择两种格式
    在这里插入图片描述

ARM微处理器的寄存器

  • ARM寄存器分为两类: 通用寄存器和状态寄存器.通用寄存器用于保存数据和地址, 状态寄存器用于标识CPU的工作状态及程序运行状态. 每种工作状态对应一组可访问寄存器, 但这些寄存器是不能被同时访问的. ARM微处理器有31个通用寄存器和6个状态寄存器
  • ARM的I/O组织: CPU通过I/O接口与外部进行通信, 对I/O端口物理地址的编制方式有两种: 独立编址(I/O映射方式)和统一编制(内存映射方式).
  • 独立编址方式:I/O 口地址与内存单元地址分开独立编址,I/O 端口地址不占用内存空间的地址范围。这时需要有专门的输入/输出(I/O)指令和控制逻辑。
  • 统一编址方式:I/O 端口与内存单元同样对待,每个端口占用一个存储单元地址,将内存的一部分划出来用作 I/O 地址空间。这种情况,I/O 端口占用了内存地址空间,使内存容量减小。
  • ARM系统完成I/O功能的标准方法是使用储存器映射的方式, 使用特定的储存器地址作为I/O地址

Cortex-M4

  • cortex-M4具有两种工作状态:调试状态和thumb状态. 调试状态用于调试操作,此状态下调试器可访问或修改寄存器的数值. 当处理器执行程序代码时, 就处于thumb状态.
  • cortex-M4有两种工作模式: 线程模式和处理模式. 在复位或异常返回时进入线程模式, 线程模式时既可以使用特权级,也可以使用非特权级代码, 软件可以更改将处理器从特权模式切换到非特权模式. 执行中断服务程序等异常处理时进入处理模式. 处理模式下处理器具有特权访问等级.
  • cortex-M4有16个32位寄存器组成的通用寄存器和几个特殊功能的功能寄存器.
    在这里插入图片描述
  • R13位堆栈指针寄存器, 他有两个物理寄存器, 对应主堆栈指针(MSP)和进程堆栈指针(PSP), MSP位默认栈指针, 复位后或处理器处于处理模式时使用, PSP只用于线程模式. 栈指针的选择有特殊寄存器control决定.一般在操作系统中,MSP 用于内核以及系统异常中断的代码的堆栈指针,PSP 用于用户任务的应用堆栈指针。
  • R14为链接寄存器(LR),子程序或函数被调用时, LR用来保存返回的地址. LR也用于异常返回, 保存返回后的状态.
  • R15为程序计数器, 指向正在取指的指令, 可读写. 读操作返回当前指令地址减8, 写PC会引起程序跳转.
    在这里插入图片描述
  • 特殊功能寄存器分为程序状态寄存器, 中断/异常屏蔽寄存器和控制寄存器.
  • xPSR程序状态寄存器: 程序状态寄存器表示处理器的状态,可以分为 3 类:应用状态寄存器(APSR)、中断/异常状态寄存器(IPSR)、执行状态寄存器(EPSR),这三个寄存器可组合起来构成一个 32 位的寄存器,统称为 xPSR。可统一以 xPSR 或 PSR 名称统一访问,也可单向访问。
  • APSR: 应用程序状态寄存器, 保存当前指令运算结果的状态
  • IPSR: 中断状态寄存器, 保存当前中断的向量号
  • EPSR: 执行状态寄存器. 用于异常发生时保存当前执行状态. 分为两个重叠区域:可中断-可继续指令(ICI)区和If-then状态区.
    在这里插入图片描述
    在这里插入图片描述
  • 中断屏蔽寄存器: 分为三组: PRIMASK, FAULTMASK, BASEPRI, 用于控制异常或中断的使能和禁止.
    在这里插入图片描述
  • 控制寄存器CONTROL: 两个作用, 一是定义线程模式的访问级别, 而是选择堆栈指针.
    在这里插入图片描述

cortex-M4储存组织

  • 储存器系统特性: 1. 4GB地址空间, 2. 储存器映射, 3. 支持小端和大端的储存器系统.4. 位段访问.5. 储存器保护单元(MPU). 6. 非对其传输支持
  • 储存器映射: cortex-M的储存区与按各自典型用法进行划分, 各区域主要用于:
    1. 程序代码访问(CODE区域)
    2. 数据访问(SRAM区域)
    3. 外设(外设区域)
    4. 处理器的内部控制和调试部件(私有外设总线)
  • 栈内存操作: 堆栈按照后进先出的原则进行存储, Cortex-M4处理器利用PUSH指令往堆栈中存储数据, 利用出栈指令POP从堆栈中取数据. Cortex-M4处理器使用"满递减"栈. 执行POSH指令时先减小堆栈指针的值, 然后将数据储存在堆栈指针所指的储存器位置. 执行POP指令时, 堆栈指针指向储存器位置的数据被读出, 然后堆栈指针值自动增加.
    在这里插入图片描述
    在这里插入图片描述
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值