嵌入式系统:以应用为中心,以计算机技术为基础、软硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统
嵌入式系统的重要特征:
70年代的单片机,51单片机,跑操作系统的单片机,RTOS
使用任何外部设备都需要有响应的驱动程序支持,它为上层提供设备的操作接口
驱动层一般包括硬件抽象层HAL、板级支持包BSP、设备驱动程序
驱动程序为上层软件提供设备的操作接口,上层软件只需调用驱动提供的接口,而不用理会设备内部的操作
OS一般以内核映像的形式下载到目标系统中
API(application programming interface)是一系列复杂的函数、消息、结构的结合体
OS中提供的标准API函数,可以加快应用程序的开发,便于移植和升级
应用程序完成用户自定义的任务,任务之间的协调依赖于系统的消息队列
micro processor unit,MPU,由通用计算机中的CPU演化而来
具有体积小、重量轻、成本低、可靠性高的优点
microcontroller unit,MCU,典型代表是单片机
和MPU相比,它的特点是单片化,片上外设丰富,适合于做控制
digital signal processor,DSP处理器专门用于信号处理方面,其系统结构和指令算法方面做了特殊设计,具有很高的编译效率和指令的执行速度,在数字滤波、傅里叶变换、频谱分析等各种仪器上大规模应用
system on chip,片上系统,追求产品系统最大包容的集成器件,最大的特点是实现了软硬件的无缝结合,直接在处理器片内嵌入操作系统的代码模块,大部分SOC都是专用的
无内部互锁流水级的处理器(microprocessor without interlockd piped stages),目前使用量仅次于ARM处理器
特点是可伸缩性好、方便灵活
SUN公司的s系列
advanced RISC machines(ARM)公司的产品,采用IP授权的方式允许半导体公司生产基于ARM内核的处理器
略,不同指令集的发展史
CISC:(complex instruction set computer,复杂指令集计算机),随着计算机技术的发展而不断引入新的复杂的指令集,体系结构原来越复杂,部分指令会反复使用,大部分指令不怎么使用,因此结构不合理
RISC:(reduced instruction set computer,精简指令集计算机),选择使用频率最高的简单指令,避免复杂指令,将指令长度固定,指令格式和寻址方式种类减少
简单的三级流水线如下:
每个时钟周期,某一级流水线完成一条指令
一条指令需要3个时钟周期的执行时间,但是因为有了三级流水线,所以吞吐率(throughput)是每个周期一条指令
通过重复设置多套指令执行部件,同时处理并完成多条指令,实现并行操作来达到提高处理速度的目的
在一个时钟周期内,同时执行多条指令,因此CPU的效率大大提高
各大厂商从ARM公司买其设计的ARM微处理器核,根据不同的应用,加入适当的外围电路,形成自己的ARM微处理器芯片
这个器件可以分为4个部分
load指令,存储器 -> 寄存器
store指令,寄存器 -> 存储器
典型的源寄存器Rn、Rm,目的寄存器Rd
除用户模式和系统模式,其余5种称为异常模式,常用语处理中断异常或访问受保护的资源
ARM状态:执行32位的ARM指令集
Thumb状态:执行16位的Thumb指令集
在开始执行时,只能是ARM状态,执行过程中,可与切换
用以保存数据和地址,用字母R为前缀,加该寄存器的序号来标识
例如寄存器0,标识为R0,范围是R0-R15
可以分为三类
包括R0 - R7,在所有工作模式下,未分组寄存器都指向同一个物理寄存器
在中断或异常处理时,因为使用相同的物理寄存器,可能造成数据破坏
包括R8 - R14,它们每一次访问的物理寄存器与当前的工作模式有关
采用标记来区分不同的物理寄存器,如 R13
R13一般用作堆栈指针
R14称作子程序连接寄存器(subroutine link register)或连接寄存器LR
当执行BL子程序调用指令时,R14中得到R15(程序计数器PC)的备份
R15用作程序计数器(PC),用于控制程序中指令的执行顺序
正常情况下,PC指向CPU运行的下一条指令,每次执行后,PC的值会自动修改
当程序执行顺序改变,则PC也需要改变
包含一个当前程序状态寄存器CPSR,和5个备份的程序状态寄存器SPSRs
CSPR可以在任何工作模式下被访问,用来保存ALU中的当前操作信息、允许/禁止中断、设置处理器的工作模式
备份寄存器用来进行异常处理
N Z C V 均为条件码标志位,他们的内容可以被算术或逻辑运算的结果改变,并且可以决定某条指令是否被执行
CPSR 的低8位(I,F,T,M[4:0])称为控制位,当发生异常时,这些位可以被改变
包括I、F,用来禁止或允许IRQ和FIQ两类中断
T标志位用来标识/设置处理器的工作状态
对于ARM体系结构v4及以上版本的T系列处理器,该位为1时,程序运行于Thumb状态,该位为0时,运行于ARM状态
ARM指令集和Thumb指令集均有切换处理器状态的指令,可以修改T位
M [4:0] 用来标识或设置处理器的工作模式,常用的是系统模式和用户模式
注意,不能使用无效的模式,否则不可恢复
不要使用保留位保存数据
每一种工作模式下,有一个专门的物理状态寄存器,称为SPSR(saved program status register)
当发生异常时,SPSR保存CPSR的值,恢复时,用来恢复CPSR
用户模式和系统模式不属于异常模式,没有SPSR
Thumb状态下的寄存器集,是ARM状态下寄存器集的一个子集,程序可以直接访问8个通用寄存器(R0~R7)、程序计数器(PC)、堆栈指针(SP)、连接寄存器(LR)、状态寄存器(CPSR),同时,在每一种特权模式下都有一组SP、LR、SPSR
Thumb状态下的寄存器组织与ARM状态下的寄存器组织的关系
存储器Memory是计算机用来存放二进制数据和程序的部件
一般分为RAM和ROM
一般情况下,基于ARM的嵌入式系统用到的芯片如下
ARM体系结构将存储器看作是零地址开始字节的线性组合
32位处理器支持的最大寻址空间为4gb
每执行一条ARM指令,PC增加4,执行一条Thumb指令,PC增加2
ARM处理器的指令长度是32位(ARM指令),也可以是16位(Thumb指令)
支持8位、16位、32位数据
数据的高字节存储在低地址中,低字节存储在高地址中
与大端模式相反,数据的高字节存储在高地址中,低字节存储在低地址中
ARM处理器可以配置为任意一种模式,但是小端模式是默认格式
所谓非对齐的存储访问操作,是指:
如果写入寄存器PC的值是非对齐的,要么执行结果不可预知,要么地址中响应的位被忽略
是否要忽略,由系统决定
对于laod/store操作,如果出现非对齐的数据访问操作,有两种可能