嵌入式系统:以应用为中心,以计算机技术为基础、软硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统git
嵌入式系统的重要特征:web
70年代的单片机,51单片机,跑操做系统的单片机,RTOS算法
通常分4个部分:处理器、存储器、IO、软件
编程
使用任何外部设备都须要有响应的驱动程序支持,它为上层提供设备的操做接口
驱动层通常包括硬件抽象层HAL、板级支持包BSP、设备驱动程序网络
驱动程序为上层软件提供设备的操做接口,上层软件只需调用驱动提供的接口,而不用理会设备内部的操做app
OS通常之内核映像的形式下载到目标系统中dom
API(application programming interface)是一系列复杂的函数、消息、结构的结合体
OS中提供的标准API函数,能够加快应用程序的开发,便于移植和升级svg
应用程序完成用户自定义的任务,任务之间的协调依赖于系统的消息队列函数
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位数据
数据的高字节存储在低地址中,低字节存储在高地址中
例如:0x1234,在以下的地址存放
与大端模式相反,数据的高字节存储在高地址中,低字节存储在低地址中
ARM处理器能够配置为任意一种模式,可是小端模式是默认格式
例如:0x1234,在以下地址存放
所谓非对齐的存储访问操做,是指:
若是写入寄存器PC的值是非对齐的,要么执行结果不可预知,要么地址中响应的位被忽略
是否要忽略,由系统决定
对于laod/store操做,若是出现非对齐的数据访问操做,有两种可能