【ARM汇编】第二章:ARM微处理器

文章目录

  • 嵌入式系统概述
    • 基本概念
    • 嵌入式系统的发展
    • 发展历史
    • 发展趋势
    • 组成结构
      • 设备驱动层
        • 硬件抽象层HAL
        • 板级支持包BSP
        • 设备驱动程序
      • 实时操作系统RTOS
      • OS的应用程序接口API
      • 应用程序APP
    • 嵌入式处理器
      • 微处理器
      • 微控制器
      • DSP
      • SOC
    • 典型嵌入式处理器介绍
      • MIPS处理器
      • Power PC处理器
      • Sparc处理器
      • ARM处理器
  • ARM概述
    • 计算机体系结构的分类
      • 冯洛伊曼结构
      • 哈弗结构
    • ARM技术的发展过程
  • ARM内核的特点
    • RISC技术
    • 流水线技术
    • 超标量技术
  • 基于ARM的微处理器
    • 基于ARM核的硬件结构
    • ARM核的数据流模型
    • 工作模式
    • 工作状态
  • ARM寄存器
    • 通用寄存器
      • 未分组寄存器
      • 分组寄存器
      • 程序计数器
    • 状态寄存器
      • 条件码标志
      • 控制位
        • 中断禁止位
        • T标志位
        • 工作模式位
      • 保留位
    • Thumb寄存器
  • ARM的存储系统简介
    • 存储器的层次结构
    • 数据类型与存储器格式
      • 地址空间
      • 数据类型
      • 存储格式
        • 大端格式
        • 小端格式
    • 非对齐的存储器访问
      • 非对齐指令预取操作
      • 非对齐数据访问操作

嵌入式系统概述

基本概念

嵌入式系统:以应用为中心,以计算机技术为基础、软硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统

嵌入式系统的重要特征:

  • 系统内核小:因为系统资源有限,内核不能太大
  • 专用性强:针对具体应用场景,做软硬件剪裁
  • 系统精简:一般没有系统软件和应用软件之分,全部为应用服务
  • 多任务操作系统:要保证程序的实时性、可靠性
  • 专用的开发工具和环境:需要主机做开发,程序烧到目标板

嵌入式系统的发展

发展历史

70年代的单片机,51单片机,跑操作系统的单片机,RTOS

发展趋势

  • 嵌入式开发称为一项系统工程,除了软硬件本身,还需要开发环境支持
  • 络化、信息化,产品功能不再单一,产品要适应 络发展
  • 精简系统内核、算法,降低功耗和成本
  • 友好的人机界面

组成结构

一般分4个部分:处理器、存储器、IO、软件

这个器件可以分为4个部分

  • ARM处理器:控制整个器件,包含内核、外围部件
  • 控制器:协调系统的重要功能模块,最常见的是中断控制器和存储器控制器
  • 外设接口部件:提供芯片与外部的输入输出
  • 总线:用在器件不同部件之间进行通信,包含高性能总线AHB,连接高性能的片内外设,外设总线APB连接较慢的片内外设,还有一条总线用于连接片外外设,它需要一个特殊的桥,用于和AHB总线连接

ARM核的数据流模型

load指令,存储器 -> 寄存器
store指令,寄存器 -> 存储器
典型的源寄存器Rn、Rm,目的寄存器Rd

工作模式

  • 用户模式(usr):正常的程序执行状态
  • 快速中断模式(fiq):用于高速数据传输或通道处理
  • 外部中断模式(irq):用于通用的中断处理
  • 管理模式(svc):操作系统使用的保护模式
  • 终止模式(abt):当数据或指令预取终止时进入该模式,用于虚拟存储及存储保护
  • 未定义指令模式(und):当未定义的指令执行时进入该模式,用于支持硬件协处理器的软件仿真
  • 系统模式(sys):运行具有特权的操作系统任务

除用户模式和系统模式,其余5种称为异常模式,常用语处理中断异常或访问受保护的资源

工作状态

ARM状态:执行32位的ARM指令集
Thumb状态:执行16位的Thumb指令集

在开始执行时,只能是ARM状态,执行过程中,可与切换

ARM寄存器

  • 分为通用寄存器和状态寄存器,一共37个
  • 通用寄存器保存数据和地址,有31个
  • 状态寄存器用以标识或设置处理器的工作模式、状态,有6个
  • 这37个寄存器不能被同时访问,最多有18个活动的寄存器,16个数据寄存器,2个处理器状态寄存器

通用寄存器

用以保存数据和地址,用字母R为前缀,加该寄存器的序 来标识
例如寄存器0,标识为R0,范围是R0-R15
可以分为三类

未分组寄存器

包括R0 – R7,在所有工作模式下,未分组寄存器都指向同一个物理寄存器
在中断或异常处理时,因为使用相同的物理寄存器,可能造成数据破坏

分组寄存器

包括R8 – R14,它们每一次访问的物理寄存器与当前的工作模式有关
采用标记来区分不同的物理寄存器,如 R13

条件码标志

N Z C V 均为条件码标志位,他们的内容可以被算术或逻辑运算的结果改变,并且可以决定某条指令是否被执行

  • N:Negative,正负标志位,N=1结果为负数,N=1结果为非负数
  • Z:Zero,零标志,Z=1结果为0,Z=0结果非零
  • C:CarryBorrow,进位、借位标志,加法C=1进位,减法C=0借位
  • V:Overflow,V=1溢出,V=0未溢出

控制位

CPSR 的低8位(I,F,T,M[4:0])称为控制位,当发生异常时,这些位可以被改变

中断禁止位

包括I、F,用来禁止或允许IRQ和FIQ两类中断

  • I :I=1表示禁止IRQ中断
  • F :F=1表示禁止FIQ中断

T标志位

T标志位用来标识/设置处理器的工作状态
对于ARM体系结构v4及以上版本的T系列处理器,该位为1时,程序运行于Thumb状态,该位为0时,运行于ARM状态
ARM指令集和Thumb指令集均有切换处理器状态的指令,可以修改T位

工作模式位

M [4:0] 用来标识或设置处理器的工作模式,常用的是系统模式和用户模式

一般情况下,基于ARM的嵌入式系统用到的芯片如下

  • ROM:只读存储器,一般情况不再次编程,一般用来放启动代码
  • Flash:可读可写,但是速度较慢,因此不适合动态数据,一般用来存放断电后需要保存的数据
  • DRAM:在RAM里价格低,但是动态刷新,因此使用前要先设置好DRAM控制器
  • SRAM:比DRAM快,而且不需要刷新,价格高容量小,一般用于高速存储器和cache
  • SDRAM:使用时钟,频率与CPU总线同步,传输效率较高

数据类型与存储器格式

地址空间

ARM体系结构将存储器看作是零地址开始字节的线性组合
32位处理器支持的最大寻址空间为4gb
每执行一条ARM指令,PC增加4,执行一条Thumb指令,PC增加2

数据类型

ARM处理器的指令长度是32位(ARM指令),也可以是16位(Thumb指令)
支持8位、16位、32位数据

存储格式

大端格式

数据的高字节存储在低地址中,低字节存储在高地址中

例如:0x1234,在如下的地址存放

非对齐的存储器访问

所谓非对齐的存储访问操作,是指:

  • 位于ARM状态期间,访问地址的低二位不为00
  • 位于Thumb期间,访问地址的最低位不为0
    非对齐的指令预取操作和数据访问操作的约定如下

非对齐指令预取操作

如果写入寄存器PC的值是非对齐的,要么执行结果不可预知,要么地址中响应的位被忽略
是否要忽略,由系统决定

非对齐数据访问操作

对于laod/store操作,如果出现非对齐的数据访问操作,有两种可能

  • 执行结果不可预知
  • 忽略数据地址的低2位或者最后一位

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2020年3月20日
下一篇 2020年3月20日

相关推荐