SoC
- 分为通用SOC和专用SOC
- 单核SoC有一个CPU和一个DSP,多核SoC有多个CPU和多个DSP
- 大多以IP核为基础,分为软核、固核和硬核
- 32位的嵌入式处理器主要采用英国一家公司设计过的ARM内核
DSP
-
一种专用于数字信号处理的微处理器
-
能显著提高音频、视频等数字信号的数据处理效率
-
手机和数码相机中都有
-
数码相机中的DSP用于数字图像处理
ARM
-
都是RISC结构,单周期操作,流水线技术
-
使用AMBA总线
- 系统总线主要用于连接高带宽快速组件
- 外围总线主要用于连接低带宽组件以及外部相连的硬件组件
- 系统总线通过桥接器与外围总线互联
-
MPU是内存保护单元,对存储器进行保护的可选组件
-
MMU是内存管理单元,完成虚拟地址到物理地址的映射
-
ARM7采用冯·诺依曼结构,ARM9~ARM11采用哈弗结构
特点种类
- 特点:功耗低,功能强,采用RISC结构,成本低
- 在ARM11处理器后产品改用Cortex命名,并分成三类
- 种类
- Cortex-A(Applications):面向尖端
- Cortex-R(Real-time):针对实时系统
- Cortex-M(MCU & FPGA):微控制器
指令集
-
ARM
- 只有32位
- 每条指令能承载更多的信息,使用最少的指令完成功能, 在相同频率下运行速度也是最快的
- 占用程序空间最多
-
Thumb
- 只有16位
- 每条指令所能承载的信息少,需要使用更多的指令才能完成功能, 运行速度慢
- 占用程序空间最少
-
Thumb-2
- 16和32位都有
- 当一个操作可以使用一条32bits指令完成时就使用32bits的指令, 加快运行速度, 而当一次操作只需要一条16bits指令完成时就使用16bits的指令
- 节约存储空间
-
ARM处理器复位后总处于ARM状态
异常
复位RESET、未定义指令UND、软件中断SWI、指令预取中止PABT、数据访问中止DABT、外部中断请求IRQ、快速中断FIQ
寄存器
-
R0~R15是通用寄存器(R0~R7在任何模式下都为通用寄存器)
-
不分组寄存器(R0-R7)
- R0~R7:可以存放数据,也可以存放地址
-
分组寄存器(R8-R14)
- R13:堆栈指针SP
- R14:程序连接寄存器LR
-
程序计数器PC(R15)
-
-
CPSR:程序状态寄存器(包含条件码标志、中断禁止位、当前处理器模式以及其他状态和控制信息)
-
状态位T:在ARM态和Thumb态切换
T = 1:处理器处于Thumb态
-
状态位I:是否禁止外部中断IRQ
I = 1:禁止
-
状态位F:是否禁止快速中断FIQ
-
-
SPSR:备份程序状态寄存器
工作模式
- 用户模式(USER):程序正常执行的模式
- 快速中断模式(FIQ):处理高速中断,用于高速数据传输或通道处理
- 管理模式(SVC):操作系统的保护模式,处理软中断
- 系统模式(SYS):运行具有特权的操作系统任务
- 终止模式(ABT)
- 中断模式(IRQ)
- 未定义指令终止模式(UND)
条件域
-
EQ (Equal,==):等于
-
NE(Not Equal, !=):不等于
-
AL(Always):永真
-
NV(Never ):永假
-
VS(Verflow Set):溢出设置
-
VC(Verflow Clear):溢出清除
-
CS(Carry Set,>=):无符号数大于或等于,进位设置
-
GE(Greater or equal,>=):有符号数大于或等于
-
HI(Higher,>): 无符号数大于
-
GT(Greater Than,>): 有符号数大于
-
LS(Lower or Sam,<=):无符号数小于或等于
-
LE(Less or equal,<=):有符号数小于或等于
-
CC(Carry Clear,<): 无符号数小于,进位清除
-
LT(Less Than,<):有符号数小于
汇编
复位就是清0,置位就是置1
符号
-
#:代表的是寻址方式为立即寻址
-
MOV A, #21H
将21H这个值存放到A寄存器中
-
MOV A, 21H
将21H地址中的值存放到A寄存器中
-
-
[]
- LDR R0, [R1, R2] ;将R1+R2存到R0
- LDR R0, [R1] ,R2 ;将R1存到R0,将R1+R2存到R1
- LDR R0, [R1, R2] ;将R1+R2存到R0,将R1+R2存到R1
- LDR R0, [R1, LSL #3] ;将R1*3存到R0
- LDR R0, [R1, R2, LSL #3] ;将R1+R2*3存到R0
指令&伪指令
- 指令:每一条指令语句在源程序汇编时都要产生可供计算机执行的指令代码(即目标代码),所以这种语句又叫做可执行语句,每一条指令语句表示CPU具有的一个基本能力。
- 伪指令:不是真正的指令,是用于指示汇编程序如何汇编源程序,所以这种语句又叫命令语句。
数据移动
LDR
LDR Rn, label
将label代表的存储器的32位的数据移动到内部寄存器Rn。内存—>寄存器
-
LDR Rn, [R1]
-
LDR R0, 0x00000040
使用立即数,等效为“MOV R0, #64”ADC
-
LDR R0, =0x12345678
立即数很大,无法将数和指令合成32bit,所有就是伪指令,编译器会拆分成两条指令
-
LDRH:从存储器中将一个16位的字节数据传送到目的寄存器中
-
LDRB:从存储器中将一个8位的字节数据传送到目的寄存器中
STR
从寄存器中将一个32位的字数据传送到存储器中。寄存器—>内存
- STRH:从寄存器中将一个16位的字数据传送到存储器中
- STRB:从寄存器中将一个8位的字数据传送到存储器中
运算
-
ADD:将两数相加(不带进位)
- ADD A, B:相加并存入A中
-
ADDC:将两数相加(带进位)
- ADDC A, B:等效于A=A+B
- ADDC R0, R1, R2:等效于R0=R1+R2
-
SUB:两数相减
- SUB R0, R1, R2:等效于:R0=R1-R2
-
MUL:无符号数乘法
-
ORR
-
AND
- AND R0, R1, R2:对R1和R2做与运算,将结果存放在R0
-
EOR:异或运算
-
BIC:与非
-
MVN:取反
-
LSL:逻辑左移
-
LSR:逻辑右移
-
ROR:循环右移
-
RRX:带扩展的循环右移
判断
- CMP:把一个寄存器的内容和另一个寄存器的内容或立即数进行比较,同时更新CPSR中条件标志位的值。该指令进行一次减法运算, 但不存储结果,只更改条件标志位。改变CPSR相应的condition位。
跳转
- B:跳转到指定的指令处执行
- BL:跳转执行,保存子程序地址并返回
- BX:跳转执行并切换到Thumb状态
- BLX:三种方式组合
S3C2410
- 32位微处理器
- 哈弗结构
- 内部具有分离的指令Cache和数据Cache
- 集成了存储控制器
- 高速组件使用AHB总线,低速组件使用APB总线
- 内部RTC
- 8位形式存储BCD码
- 内部的寄存器读写有一个使能位,访问RTC寄存器之前需要先使能,为了保护系统的实时时钟不被误写
- GPIO有GPA~GPH
通信协议
SPI
- 使用SCK(串行时钟线,也写作SCK)、MISO(主机输入从机输出)、MOSI(主机输出从机输入)、SSEL(从机选择线,也写作 SCS)跳线
- 可以构成“一主一从”、“一主多从”、“多主多从”、“互为主从”四种模式
UART
-
通用异步收发器
-
由发送器,接收器,控制单元和波特率发生器等构成
I2C
- 集成电路互联总线
- 串行半双工传输的总线
- 传送数据时,每次传送的字节数没有限制
- I2C是多主总线
CAN
-
针对实时性要求很强的工业控制领域
-
能够实现多主通信方式
-
采用CRC检验
-
数据帧由7部分组成:帧起始、仲裁域、控制域、数据域、CRC域、应答域、帧结尾。
JTAG
- 一种片上调试计数的统称
- 规定了TAP接口使用5个信号,分别为TCK、TMS、TDI、TDO、TRST。
WLAN无线局域网
- 主要采用802.11通信协议,也就是Wi-Fi、
- 其中的802.11n协议的数据传输速率可达11Mbps、54Mbps、108Mbps甚至更高
热点
- 正式名称为:无线接入点
- 实际上是一个无线交换机或无线路由器
USB
-
USB1.1和USB2.0有4条信号线,采用半双工差分方式通信
-
USB2.0的速度为480Mb/s,USB3.0达到5Gb/s即640MB/s(8Mbps = 8Mb/s = 1MB/s)
-
具有OTG的USB总线上,可以实现在没有主机的情况下从设备之间点对点通信
蓝牙
- 短距离,低速率,低成本的无线通讯技术
- 最高传输速率为1Mbps
- 传输距离大约在10m内
HDMI
- 高清晰度多媒体接口
- 一种数字化音视频接口
- 最高数据传输速度为10.2Gbps
文件格式
- GIF:颜色数目少(不超过256色),文件小,支持动画,适合互联网传输
- JPEC:是静止图像数据压缩编码的国际标准,在数码相机和互联网中广泛应用
- .avi:数字视频文件格式
- .mov:数字视频文件格式
- .rmvb:数字视频文件格式
- .wav:数字音频文件格式
计网
- 使用TCP/IP协议簇中的IP协议可以使发送的数据分组能够正确无误的按地址找到目的计算机
网络地址
-
A类IP地址
- 地址范围:1.0.0.0到127.255.255.255
-
B类IP地址
- 地址范围:128.0.0.0到191.255.255.255
-
C类IP地址
- 地址范围:192.0.0.1到223.255.255.254
- 适用于小型网络
- 所在的网络最多能连接254台主机
路由器
高性能的嵌入式计算机系统,遵循IP协议把异构的网络互相连接起来的关键设备,工作在网络层。
-
功能
-
网络互联:实现不同网络之间通信
-
数据处理:包括分组过滤,分组转发,优先级,复用,加密,压缩和防火墙等功能
-
网络管理:包括配置管理,性能管理,容错管理和流量控制等功能
-
-
路由器需要具有两个以上的IP地址
以太网
- 以集线器或交换机为中心
嵌入式
- 核心部分称为内核,对硬件设备进行控制和管理的程序模块为驱动程序
- 系统开发时,受到目标机资源的限制,需要建立一个宿主机与目标机组成调试架构来完成开发工作
- 数字音频编码的过程为:取样、量化、编码
- nRESET表示低电平复位
- HAL技术,硬件抽象层,位于内核操作系统和硬件之间,取消了操作系统对硬件的直接访问。
分类
- 按字长来分:8位、16位、32位、64位
- 按体系结构:CISC(复杂指令集)、RICS(精简指令集)
- 按存储机制:冯诺依曼(数据空间和地址空间是不分开的)、哈弗结构(数据空间和地址空间是分开的)
- 软硬件计数复杂度:高端系统、中端系统、低端系统
- 低端系统:核心大多是4位/8位单片机,一般不使用操作系统
通道
- 前向通道:指信号的输入通道(传感器、A/D)
- 后向通道:指输出信号的通道(执行器、D/A)
- 人机交互通道:(键盘、触摸屏输入接口、显示输出接口)
- 相互互联通道:各种通信
存储
-
ROM(只读存储器)
-
RAM(随机访问存储器)
- SRAM(静态随机存取存储器)
- DRAM(动态随机存取存储器)
- FRAM(铁电存储器)
- MRAM(磁性随机存储器)
-
Flash(闪存)
- NOR Flash:以字节为单位随机存储,写入和擦除的速度慢
- NAND Flash:以页/行为单位随机存储(如存储卡,U盘)
-
Cache(缓存):在高性能的嵌入式处理器中会集成内部Cache,ARM9和ARM11都有。采用SRAM。
显示屏
- 带多点触摸或滑动进行操作的一般是电容屏(硬屏)
- 用专用硬笔写字的触摸屏属于电阻屏(软屏)
- 显示器接口标准有VGA,DVI和HDMI
板级支持包BSP
- 是一些汇编和C语言相结合的操作系统底层软件。包括初始化程序、设备驱动程序、配置文件和引导加载程序等
引导程序(Bootloader)
- 主要完成:加电自检、外设存在自检、内存地址映射、初始化外围设备、内存寻址定位、加载并启动操作系统
其他
- 嵌入式的CPU有ARM,DSP,FPGA等
- 嵌入式芯片属于超大规模和极大规模集成电路
- 最小系统:嵌入式处理器,电源电路,时钟电路,复位电路,存储器,调试测试接口
μC/OS-II
- 抢占式实时操作系统内核
- 只能管理64个任务,目前版本保留8个给系统,用户可编写56个任务
- 中断嵌套可达255层
- 不支持时间片轮转调度发
- 运行每个任务有不同的栈空间
- 节拍率在10Hz~100Hz,用于实现任务的正确延时和超时确认
- 基本功能:内存管理、任务间通信与同步、任务调度、时间管理、任务管理
- 软件结构为:应用软件层,API层,内核层和设备驱动层
- 空闲任务:是系统创建的第一个任务,是必不可少的系统任务,优先级最低。优先级为63
实时性的指标
- 吞吐量:在给定的时间内系统可以处理的事件总数
- 生存时间:衡量输入数据的有效时间,超过这个时间,处理器即使收到输入数据也不能够给出有用的输出数据
- 响应时间
- 中断延迟时间:从接收到可屏蔽中断请求信号到操作系统做出响应并转入中断服务程序所需要的最长时间。
- 最长关中断时间
- 从硬件开始响应中断到开始执行服务程序第一条指令之间的时间
- 任务切换时间
- 进程切换时间
- 中断延迟时间:从接收到可屏蔽中断请求信号到操作系统做出响应并转入中断服务程序所需要的最长时间。
函数
- OS_ENTER_CRITICAL()和OS_ENTI_CRITICAL()用来关闭和打开中断
- OSSchedLock()和OSSchedUnlock用来对任务调度函数上锁和开锁
- OSTaskCreate()用于创建任务
- OSStart()用于启动多任务调度功能
- OSInit()完成各初始变量的初始化
- OSCtxSw()实现任务切换
- OSSched()任务级的调度
- OSIntExit()中断级的调度
- OSThreadCreate()
- OSTickISR()
- 事件控制块
- OSSemCreate()
- OSMutexCreate()
- OSMboxCreate()
- OSQCreate()
- 使用栈空间校验函数,可以确定每个任务到底需要多少空间
任务状态
- 休眠态:该任务驻留在内存中,但还没有交给内核管理
- 就绪态:该任务已经准备好可以运行了,但因为有任务优先级更高的任务再运行所有暂时还没有运行。
- 挂起态:等待某一事件发生
- 运行态:任务得到了CPU的控制权正在运行
- 被中断态:该任务被中断服务暂停了运行
Linux
-
最新版本是5.16.1
-
Linux的运行效率还没有超过Unix
-
主要由5个子系统组成:进程调度(SCHED)、内存管理(MM)、虚拟文件系统(VFS)、网络接口(NET)、进程间通信(IPC)
其他
- 目前数字有线电视所传输的数字视频采用的压缩编码标准是MPEC-2。由于MPEC-2出色的性能表现原来为HDTV设计的MPEC-3还没问世就被抛弃了。
- 实时系统的特性:有异步IO和中断处理能力、任务切换时间和中断延迟时间确定、优先级中断和调度、抢占式调度、内存锁定、连续文件、同步。
- 采用矩阵键盘构造时,8个GPIO最多可以构成64个按键的键盘
- 进程之间的通信机制包括:信号、管道、消息队列、信号量、共享内存、套接字
- 小端存储就是高字节存储在高地址中,低字节存储在低地址中。
- 对于内存而言:1KB = 1024B;对于外存(磁盘、U盘)而言:1KB = 1000B
内核
单核结构(宏内核):
Android OS、UNIX、Windows、Linux、Mac OS、DOS
- 缺点:占用内存空间大、缺乏可扩展性、维护困难、任务执行时间的可预测性较低、可靠性较低、排除故障和增加新功能需要重新编译。
- 优点:应用程序生成效率高、系统花在内核功能切换上的开销非常小、对外来事件反应速度快、操作系统内核的运行效率高。
微内核:
VxWorks、Symbian(普通实时嵌入式操作系统)、QNX、μC/OS-II、iOS
-
将进程间通信,低级存储管理、中断处理和任务管理等必须的基本功能编译成一个功能精简、空间紧凑的模块,称为微内核。
-
缺点:功能扩充方便
-
优点:功能切换需要一定开销,实时性好
编码格式
我国广泛使用的编码格式为GB2312和GB18030
-
GB2312:采用双字节进行存储和传输汉字
- GB2312的所有字符在GB18030中也都存在,且编码相同。
-
GB18030:采用双字节或四字节进行存储和传输汉字
-
Unicode/UTF-8:采用3字节存储和传输汉字
-
Unicode/UTF-16:采用双字节可变长编码
-
ASCII:常用的使用双字节编码,不常用的使用四字节编码
GNU
基于Linux的工具软件套件
-
GCC是编译器,连接器工具,可以编译C语言、汇编语言的程序
-
GDB是调试器工具