文章目录
- 嵌入式系统概述
-
- 基本概念
- 嵌入式系统的发展
- 发展历史
- 发展趋势
- 组成结构
-
- 设备驱动层
-
- 硬件抽象层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进行处理,非常感谢!