1. 嵌入式系统简介
嵌入式系统一般定义: 以应用为中心、以计算机技术为基础,软硬件可裁剪,应用系统对功能、可靠性、成本、体积、功耗和应用环境有特殊要求的专用计算机系统。
嵌入式系统的特点:系统内核小、专用性强、运行环境差异大、可靠性要求高、系统精简和高实时性操作系统、具有固化在非易失性存储器中的代码、嵌入式系统开发工作和环境。( 专用性、隐蔽性、资源受限、高可靠性、 软件固化、实时性)
嵌入式系统中的处理器分类:微处理器(MPU)、微控制器(MCU)、数字信号处理器(DSP)、嵌入式片上系统(SoC)
嵌入式系统分类
按嵌入式系统的用途进行分类:军用,工业,民用
按嵌入式系统的实时性进行分类:硬实时系统,软实时系统,非实时系统
按嵌入式系统的软硬件技术复杂程度进行分类:
1)低端系统 采用4位或8位单片机,在工控领域和白色家电领域占主导地位,如计算器、遥控器、充电器、空调、传真机等。
2)中端系统 采用8位/16位/32位单片机,主要用于普通手机、摄像机、录像机、电子游戏机等。
3)高端系统采用32位/64位单片机,主要用于智能手机、调制解调器、掌上计算机、路由器、数码相机等。
发展
20世纪60年代初,第一个工人的现代嵌入式系统(阿波罗导航计算机)
20世纪60年代中期,嵌入式计算机批量生产
20世纪70年代,微处理器出现
20世纪80年代中期,外围电路的元器件被集成到处理器芯片中,昂贵的模拟电路元件能被数字电路替代
20世纪90年代中期SOC出现,集成电路进入超深亚微米乃至纳米加工时代
应用:工业过程控制、网络通信设备、消费电子产品、航空航天设备、军事电子设备和现代武器
2.微电子技术(集成电路、SoC、IP核等技术的作用和发展)
(1)集成电路IC
集成电路的制造大约需要几百道工序,工艺复杂。集成电路是在硅衬底上制作而成的。硅衬底是将单晶硅锭经切割、研磨和抛光后制成的像镜面一样光滑的圆形薄片,它的厚度不足1mm,其直径可以是6、8、12英寸甚至更大这种硅片称为硅抛光片,用于集成电路的制造。
制造集成电路的工艺技术称为硅平面工艺,包括氧化、光刻、掺杂等多项工序。把这些工序反复交叉使用,最终在硅片上制成包含多层电路及电子元件的集成电路。
集成电路的特点:体积小、重量轻、可靠性高。其工作速度主要取决于逻辑门电路的晶体管的尺寸。尺寸越小,工作频率就越高,门电路的开关速度就越快。
微机电系统(MIME):独立芯片功能,光元件,传感器,VLSI芯片,微型发电机或电池。
(2)IP核(Intellectual Property core)
IP核是一段具有特定电路功能的硬件描述语言程序,该程序与集成电路工艺无关,可以移植到不同的半导体工艺中去生产集成电路芯片。因此使用IP核是一个发展趋势,IP核的重用大大缩短了产品上市时间。 核库中的设计文件均属于知识产权IP保护的范畴,所以称为“知识产权核”或“IP核”。IP核的复用可以减少研发成本,缩短研发时间,是实现SoC的快速设计,尽早投放市场的有效途径。
IP核是开发SoC的重要保证。按IC设计文件的类型,IP通常分为:软核、固核、硬核。目前主要的CPU内核有ARM、MIPS、PowerPC、Coldfile、x86、8051等。ARM内核占所有32位嵌入式RISC处理器的90%以上。
IC设计文件:
逻辑门级,包括各种基本的门电路;
寄存器传输级,如寄存器、译码器、数据转换器;
行为级,如CPU、DSP、存储器、总线与接口电路等
(3) SoC芯片(片上系统)
一般认为SoC具有以下特点:
1)SoC应由可设计重用的IP核组成,IP核是具有复杂系统功能的能够独立出售的VLSI块;2)IP核应采用深亚微米以上工艺技术;3)SoC芯片可以是一个CPU,单核SoC,SoC中可以有多个MPU、DSP、MCU或其复合的IP核,即多核SoC。4) 既包含数字电路,也可以包含模拟电路,还可以包含数模混合电路和射频电路。
开发流程:
1)总体设计 可以采用系统设计语言System C(或称IEEE 1666,它是C++的扩充)或System Vetilog语言对SoC芯片的软硬件作统一的描述,按照系统需求说明书确定SoC的性能能参数,并据此进行系统全局的设计。
2)逻辑设计 将总体设计的结果用RTL(寄存器传输级描述语言)语言进行描述(源文件)后,在使用逻辑综合将源文件进行综合生成,生成最简的布尔表达式核心好的连接关系(以类型为EDF的EDA工业标准文件表示)
3)综合和仿真
4)芯片制造 借助EDA中的布局布线工具
3.嵌入式系统与数字媒体(文本、图像和音频/视频等数字媒体的表示与处理)
(1)字符集及其编码
1)西方字符的编码
ASCII字符集和ASCII编码,基本的ASCII字符集共128个字符,包括96个可打印字符,32个控制字符,每个字符使用7个二进位制进行编码。
2)汉字的编码
汉字国家编码标准有GB2312和GB18030,每个汉字用2个字节表示。GB2312只有6763个汉字,它包括3755个一级常用汉字,3008个二级常用汉字,此外还有682个图形符号(包括拉丁字母、俄文、日文平假名与片假名、希腊字母、汉语拼音等)。GB18030字符集与UCS/Unicode字符集基本兼容,采用不等长的编码方法,单字节编码表示ASCII字符,与ASCII码兼容;双字节表示汉字,与GB2312保持向下兼容(即GB2312中有的GB18030字符集都有)
3)Unicode/UTF-16编码
Unicode/UTF-16编码采用双字节可变长编码。Unicode它是由国际组织设计,可以容纳全世界所有语言文字的编码方案,
与ASCII兼容,与GB码不兼容。例如“汉”字的Unicode编码是6C49,而GB码是BABA。ASCII、标点、希腊字母、阿拉伯文、CJK和汉字双字节编码,其他不常用字符四字节编码。
(2) -数字图像
数字图像格式有多种,不同的格式有不同的编码方法,具有不同的特点,适合不同的应用。GIF颜色数目少(不超过256种) ,文件特别小,支持动画,适合互联网传输。JPEG是静止数据压缩码的国际标准,在数码相机和互联网中广泛应用。
图像获取过程的核心是模拟信号的数字化,处理步骤为:
1)扫描 将画面网格化,每个网格为一个取样点
2)分色 将每个取样点的颜色分解成三原色
3)取样 测量每个取样点的每个分量(基色)亮度值
4)量化 把模拟量使用数字量来表示,A/D转换
数字图像的主要参数:图像大小(水平分辨率*竖直分辨率)、位平面数目、像素深度、颜色模型
一幅图像的数据量计算公式: 图像数据量=图像大小*像素深度/8
音频/视频信息的数字化,处理步骤为:取样、量化、编码
4.嵌入式系统与网络通信技术(数字通信与计算机网络,TCP/IP协议,互联网接入技术等)
(1)数字通信
通信的3个要素:信源,信宿,信道
电信号的两种传输方式:模拟信号和数字信号。
按照信号的传输介质,通信系统可以分为有线通信和无线通信。
数字通信技术:调制解调技术,多路复用技术(时分多路复用技术,频分多路复用技术),交换技术(电路交换,分组交换
(2) 互联网
IP地址分为A,B,C三个基本类。
A类 0 网络号(0-7) 主机号(8-31)
B类 10 网络号(0-15) 主机号(16-31)
C类 110 网络号(0-23) 主机号(24-31)
D类 1110 组播地址
E类 1111 备用
5. 嵌入式处理器
1).嵌入式处理器的结构分类
(1)按照指令集分:CISC(复杂指令集结构)与RISC(精简指令集结构)
CISC处理器特点:指令数目很多且结构比较复杂。
CISC常见处理器:个人计算机中的Intel x86处理器
RISC处理器特点:指令数目较少,指令字长统一,格式规整,寻址模式单纯,指令操作简单,执行时间短。
RISC常见处理器:ARM,AVR,ARC等等。
(2)按照存储结构分:冯诺依曼存储结构与哈佛存储结构
冯诺依曼结构:存储器中可以存放数据,也可以存放程序。
哈佛结构:使用两个独立的存储器分别存储指令和数据,不允许指令和数据并存;使用独立的两条总线,分别作为CPU与每个存储器之间的专用通信路径。
改进式哈佛结构:在处理器与主存储器之间增加了缓冲器(Cache)。
第一级采用哈佛结构。
第二三级以及主存储器都采用哈佛结构。
这种改进式哈佛结构在x86系列和高端ARM处理器中得到了广泛应用。
2).ARM处理器主要特点
(1)单周期操作
(2)只使用加载/存储指令访问内存
(3)指令长度固定32位(在16位代码的Thumb工作状态除外)
(4)三地址指令格式
(5)指令流水线技术
(6)低功耗设计
3).ARM处理器的分类
(1)经典ARM处理器
(2)ARM Cortex嵌入式处理器(Cortex-M)
(3)ARM Cortex实时嵌入式处理器(Cortex-R)
(4)ARM Cortex应用处理器(Cortex-A)
(5)ARM专家处理器
1991 年ARM 公司成立于英国剑桥,专门从事基于RISC 技术芯片设计开发的公司。主要出售芯片设计技术的授权,作为知识产权供应商,本身不直接从事芯片生产,靠转让设计许可由合作公司生产各具特色的芯片,世界各大半导体生产商从ARM公司购买其设计的ARM 微处理器核,根据各自不同的应用领域,加入适当的外围电路,从而形成自己的ARM 微处理器芯片进入市场。采用ARM技术知识产权(IP核)的微处理器,即我们通常所说的ARM 微处理器,已遍及工业控制、消费类电子产品、通信系统、网络系统、无线系统等各类产品市场,基于ARM 技术的微处理器应用约占据了32 位RISC 微处理器75 %以上的市场份额,ARM 技术正在逐步渗入到我们生活的各个方面。
6. 典型ARM处理器内核(ARM9,Cortex-A,Cortex-M,Cortex-R等的技术特点与应用领域)
1).ARM Cortex-M嵌入式处理器
(1)特点
CM0和CM0+成本低,简单易用,适合成本控制要求高的中低端应用;
CM3性能好,通用性好,适合工业控制及中高端应用;
CM4具有有效的数字信号控制功能,适合数字信号处理要求高的应用。
(2)应用
CM0广泛应用于已领料器械,电子测量,照明,智能控制,游戏装置,紧凑型电源,电源和电机控制,精密模拟系统和无线通信领域。
CM3满足专门面向电动机控制,汽车,电源管理,嵌入式音频和工业自动化市场的灵活解决方案。
2).ARM Cortex-R嵌入式处理器
(1)特点
①高性能
②实时处理
③安全
④低成本
(2)应用
适用于计算复杂,实时性要求苛刻(如汽车电子,硬盘驱动器控制,手机等)的领域。
3).ARM Cortex-A应用处理器
(1)特点
NEON单指令多数据(SIMD)单元、ARMtrustZone安全扩展、以及thumb2指令集,通过16位和32位混合长度指令以减小代码长度。
(2)应用
适用于有高计算要求,需运行功能丰富的操作系统以及要求提供交互媒体和图形显示的应用领域。
补充:处理器结构图看书上吧。
(1)Cortex-A系列是面向高端嵌入式应用的处理器核:具有MMU、Cache、最快频率、最高性能、合理功耗。
(2)Cortex-R系列是面向实时控制的处理器:具有MPU、Cache、实时响应、合理性能、较低功耗。
(3)Cortex-M系列是面向低端微控制器的处理器,没有MMU但有MPU,极高性价比、最低成本,极低功耗。
系列 |
相应内核 |
主要性能特点 |
ARM7 |
|
冯-诺依曼结构,3级流水线,无MMU |
经典ARM9 |
ARM920T/ARM922T |
哈佛结构,5及流水线,单32位AMBA接口 |
ARM9E |
ARM926EJ-S/ARM946E-S/ARM966E-S/ ARM968E-S/ARM996HS |
哈佛结构,5及流水线,支持DSP指令,软核(soft IP) |
ARM10 |
ARM1020E/ARM1022E/ARM1026EJ-S |
哈佛结构,6及流水线,分支预测,支持DSP指令,高性能浮点操作,双64位总线接口,内部64位数据通路。 |
ARM11 |
ARM11MPCore/ARM1136J(F)-S |
哈佛结构,8级流水线,分支预测和返回栈,支持DSP指令、SIMD/Thumb-2核心技术 |
ARM1156T2(F)-S/ARM1176JZ(F)-S |
哈佛结构,9级流水线,分支预测和返回栈,支持DSP指令、SIMD/Thumb-2核心技术 |
|
嵌入 Cortex-M |
Cortex-M0, Cortex-M0+ |
冯-诺依曼结构,3级流水线,支持Thumb指令集并包含Thumb-2、嵌套向量中断,M0+内部有MPU,而M0没有。 |
Cortex-M1 |
冯-诺依曼结构,3级流水线,支持FPGA设计,Thumb指令集并包含Thumb-2 |
|
Cortex-M3 |
哈佛结构, 3级流水线,Thumb-2、嵌套向量中断,分支指令预测,内置MPU |
|
Cortex-M4 |
哈佛结构, 3级流水线,Thumb-2、嵌套向量中断,分支指令预测,内置MPU,高效信号处理,SIMD指令,饱和运算,FPU |
|
Cortex-R |
Cortex-R4/R4F/ Cortex-R5/Cortex-R7 |
哈佛结构,8级流水线,实时应用,支持ARM、Thumb和Thumb-2指令集,F标示内置FPU,DSP扩展,分支预测,超标量执行,内置MPU |
应用 Cortex-A |
Cortex-A5/ Cortex-A5MPcore |
|
Cortex-A7/ Cortex-A7MPcore |
|
|
Cortex-A8/ Cortex-A8MPcore |
|
|
Cortex-A9/ Cortex-A9MPcore |
哈佛结构,MPcore为多核,超标量结构,13级流水线,动态分支指令预测,有分支目标缓冲器BTB、MMU、FPU、L1、L2,支持ARM、Thumb和Thumb/EE指令集,SIMD/Jazelle RCT技术。 |
|
Cortex-A15/ Cortex-A15MPcore |
哈佛结构,可乱序执行指令流水线 |
|
Cortex-A50 |
Cortex-A53/57 |
哈佛结构,64位ARMv8架构,8级流水线 |
ARM处理器内核性能比较
以由高到低的方式来看,ARM处理器大体上可以排序为:Cortex-A57处理器、Cortex-A53处理器、Cortex-A15处理器、Cortex-A12处理器、Cortex-A9处理器、Cortex-A8处理器、Cortex-A7处理器、Cortex-A5处理器、ARM11处理器、ARM9处理器、ARM7处理器,再往低的部分手机产品中基本已经不再使用,这里就不再介绍。
7.ARM处理器内核的体系结构(工作状态,工作模式,寄存器组织,异常与存储格式等)
(1)工作状态
一是ARM状态:全部为32位指令,性能较好,代码密度较低。
二是Thumb指令状态(全部为16位指令,代码密度高,占用空间小)及Thumb-2状态(混合指令,性能好,代码密度较高)。
三是调试状态。
ARM处理器复位后开始执行代码时总是只处于ARM状态,如果需要,可通过下面的方法切换到Thumb状态或Thumb-2状态
ARM状态切换到Thumb指令状态:通过BX指令,将操作数寄存器的最低位设置为1即可。如果R0[0]=1,则执行BX R0指令将进入Thumb状态
状Thumb态切换到ARM状态:通过BX指令,将操作数寄存器的最低位设置为0即可。如果R0[0]=0,则执行BX R0指令将进入ARM状态。
(2)存储格式
大端模式:32位数据字的高字节存储在低地址,而数据字的低字节则存放在高地址中。
小端模式:32位数据字的高字节存储在高地址,而数据字的低字节则存放在低地址中。
系统复位时,自动默认为小端模式。
例如:一个32位数据字0x12345678,存放在起始地址为0x30001000,则大端模式下0x30001000单元存放0x12,0x30001001单元存放0x34,0x30001002单元存放0x56,0x30001003单元存放0x78;而小端模式下0x30001000单元存放0x78,0x30001001单元存放0x56,0x30001002单元存放0x34,0x30001003单元存放0x12。
(3)工作模式(7种)
工作模式 |
功能说明 |
可访问的寄存器 |
CPSR[M4:M0] |
用户模User |
程序正常执行工作模式 |
PC,R14-R0,CPSR |
10000 |
快速中断模式FIQ |
处理高速中断,用于高速数据传输或通道处理 |
PC,R14_fiq-R8_fiq, R7-R0,CPSR,SPSR_fiq |
10001 |
外部中断模式IRQ |
用于普通中断处理 |
PC,R14_irq-R13_irq, R12-R0,CPSR,SPSR_irq |
10010 |
管理模式 SVC |
操作系统的保护模式,处理软中断SWI |
PC,R14_svc-R13_svc, R12-R0,CPSR,SPSR_svc |
10011 |
中止模式 ABT |
处理存储器故障,实现虚拟存储器和存储器保护 |
PC,R14_abt-R13_abt, R12-R0,CPSR,SPSR_abt |
10111 |
未定义指令模式UND |
处理为定义的指令陷阱,用于支持硬件协处理器仿真 |
PC,R14_und-R13_und, R12-R0,CPSR,SPSR_und |
11011 |
系统模SYS |
运行特权及的操作系统任务 |
PC, R14-R0,CPSR |
11111 |
(4)寄存器组织
ARM处理器共有37种寄存器,包括31个通用寄存器(含PC)和6个状态寄存器。
无论何种模式,R7-R0为公用的通用寄存器;R13堆栈指针SP;R14程序链接寄存器LR;R15均作为PC使用;R16为当前程序状态寄存器CPSR;R17备份的程序状态寄存器SPSR。所有通用寄存器均为32位结构。
程序状态寄存器的格式:
31 30 29 28 27 26……8 7 6 5 4 3 2 1 0
N |
Z |
C |
V |
Q |
状态保留 |
I |
F |
T |
M4 |
M3 |
M2 |
M1 |
M0 |
条件码标志含义如下:
N为符号标志位,N=1为负数,N=0为正数。
Z为全0标志位,运算结果为0,则Z=1,否则Z=0;
C为进借位标志,有进/借位时C=1,否则C=0.
V为溢出标志,加减法运算结果溢出时V=1,否则V=0.
Q为增强的DSP运算指令溢出标志,溢出时Q=1,否则Q=0.
控制位含义如下:
I为中断禁止控制位,I=1禁止IRQ中断,I=0,允许中断。
F为禁止快速中断FIQ的控制位,F=1禁止FIQ中断,F=0允许。
T为ARM和Thumb指令切换,T=1时执行Thumb指令,否则执行ARM指令。
M4-M0为模式选择位
(5)异常(7种)
异常类型 |
优先级 |
工作模式 |
异常向量地址 |
复位RESET |
1 |
管理模式 |
0x00000000 |
未定义的指令UND |
6 |
未定义指令中止模式 |
0x00000004 |
软件中断SWI |
6 |
管理模式 |
0x00000008 |
指令预取中止PABT |
5 |
中止模式 |
0x0000000C |
数据访问中止DABT |
2 |
中止模式 |
0x00000008 |
外部中断请求IRQ |
4 |
外部中断模式 |
0x00000010 |
快速中断请求FIQ |
3 |
快速中断模式 |
0x0000001C |
8.ARM处理器指令系统及汇编语言程序设计(指令格式,寻址方式,指令集,伪指令,语句格式与程序结构,ARM汇编语言与C的混合编程等)
(1)指令格式
指令一般格式
{}{S} ,{,} 其中<>不可省
指令格式说明:
项目 |
含义 |
备注 |
|
指令的操作码 |
即助记符,如MOV、ADD、B等 |
{cond} |
条件域,满足条件才执行指令 |
可不加条件即可省略条件,如EQ、NE等 |
{S} |
指令执行时是否需要更新CPSR |
可省略 |
Rd |
目的寄存器 |
Rd可为任意通用寄存器 |
Rn |
第一个源操作数 |
Rd可为任意通用寄存器,可以与Rd相同 |
Op2 |
第二个源操作数 |
可为#imm8m、寄存器Rm及任意移位寄存器 |
关于#imm8m的说明:#表示立即数,其后可以是十进制或十六进制数。对于ARM指令集,#imm8m表示一个由8位立即数经循环右移任意偶数位次形成的32位操作数。对于Thumb指令集,#imm8m表示一个由8位立即数经左移任意位次形成的32位操作数。
指令的条件码
条件码 |
助记符 |
标 志 |
含 义 |
0000 |
EQ |
Z置位 |
相等 |
0001 |
NE |
Z清零 |
不相等 |
0010 |
CS |
C置位 |
无符号数大于或等于 |
0011 |
CC |
C清零 |
无符号数小于 |
0100 |
MI |
N置位 |
负数 |
0101 |
PL |
N清零 |
正数或零 |
0110 |
VS |
V置位 |
溢出 |
0111 |
VC |
V清零 |
未溢出 |
1000 |
HI |
C置位Z清零 |
无符号数大于 |
1001 |
LS |
C清零Z置位 |
带符号数小于或等于 |
1010 |
GE |
N等于V |
带符号数大于或等于 |
1011 |
LT |
N不等于V |
带符号数小于 |
1100 |
GT |
Z清零且N等于V |
带符号数大于 |
1101 |
LE |
Z置位或N不等于V |
带符号数小于或等于 |
1110 |
AL |
忽略 |
无条件执行 |
(2)寻址方式
1)立即寻址(立即数寻址)
例如:MOV R0,#0x1212121212
ADC R0,R0,#100 ;R0 R0+100+C
2)寄存器寻址(执行效率较高)
例如:ADD R0,R1,R2 ;R0 R1+R2
3)寄存器间接寻址
寄存器间接转址就是以寄存器中的值作为操作数地址,而操作数本身存放在存储器中。用间接寻址的寄存器必须用[ ]括起来。
例如: LDR R5,[R4] ;R5 [R4],间接寻址的寄存器是R4
STR R1,[R2] ;[R2] R1,间接寻址的寄存器是R2
4)基址加变址寻址
常见的几种形式:
LDR R0,[R1,#4]
STR R1,[R2,#8]
LDR R0,[R1,#4]! (!表示指令在完成数据传输后更新基址存储器)
LDR R0,[R1],#4
LDR R0, [R1, R2]
STR R0, [R1, R2]
5)相对寻址
相对寻址以程序计数器PC的当前值为基地址,指令中的地址标号作为偏移量,将两者相加后得到操作数的有效地址。下列程序中跳转指令BL利用相对寻址方式:
BL Subroutine_A ;跳转子程序Subroutine_A处执行
…
Subroutine_A:
…
MOV PC ,LR ;从子程序返回
6)堆栈寻址
7)块拷贝寻址
(3)ARM指令集
1)数据处理指令:
MOV数据传送、MVN数据取反后传送、CMP比较、CMN反值比较、TST位测试、TEQ相等测试、ADC带进位的加法指令、ADD加法指令、SUB减法、SBC带借位减法、RSB逆向减法RSC带借位逆向减法、ORR逻辑或、AND逻辑与、EOR逻辑异或、BIC位清除。MUL 32位乘法、MLA 32位乘加
程序状态访问指令:MRS,MSR
MRS Rd PSR ;程序状态寄存器PSR>>通用寄存器
MSR PSR Rd ;通用寄存器>>程序状态寄存器PSR
加载存储类指令:LDR,STR
LDRB字节数据加载、LDRH半字数据加载 格式:LDR Rd,[Rn imm] 或 LDR Rd,=ox1234
STRB字节数据存储、STRH半字数据存储
LDM批量数据加载
STM批量数据存储
4) 跳转指令:BL带返回的跳转、BX带状态切换的跳转、BLX带返回带状态切换的跳转
5) 数据交换指令:SWP字数据交换指令、SWPB字节数据交换
6) 移位指令:LSL逻辑左移,LSR逻辑右移,ASR算数右移,ASL算数左移,ROR循环右移
7) 协处理器指令
CMP LDC MCR MRC STC
异常产生指令
SWI软中断指令 ,BKPT断点中断指令
伪指令
Thumb 关外部中断指令 CPSID I
开外部中断指令 CPSIE I
常见问题:
1.在ARM指令集汇编码中,32位有效立即数是通过循环左移偶数位而间接得到的。
2.MRS 传送CPSR或SPSR的内容到通用寄存器指令
MSR 传送通用寄存器到CPSR或SPSR的指令
3.LDR 字数据加载
4.iOS的前身是UNIX-BSD
5.目前数码相机用于存储相片的大多是Flash存储器
6.Thumb-2指令集,关外部中断:CPSID I,开外部中断:CPSIE I
7.FRAM:铁电随机存储器 MRAM:磁性随机存取器
8.S3C2410的nGGS2的首地址为0x10000000
9.创建事件控制块:OSQCreate()
10.Symbian属于普通实时系统
11.堆栈指针SP:R13 程序链接存储器LR:R14
12.AND:与 ORR:或
9.嵌入式硬件组成与嵌入式处理芯片(组成,特点,类型,AMBA总线,嵌入式处理芯片的选型)
(1)基于ARM内核的典型嵌入式应用系统硬件组成
嵌入式最小硬件系统(电源电路、时钟(晶振)电路、复位电路、JTAG测试接口、存储器、处理器)
前向通道(输入接口)
后向通道(输出接口)
人机交互通道(键盘、触摸屏以及LED或LCD显示输出接口)
相互互联通信通道(CAN通信接口、以太网通信接口、USB通信接口)
(2)基于ARM内核的典型嵌入式芯片的硬件组成
1)存储器及控制器(ARM处理器中MMU和MPU)
MMU存储器管理单元(memory management unit)功能:
1) 虚拟地址到物理地址映射+
2)存储器访问权限受限
3)虚拟存储空间的缓冲特性设置
MPU存储器保护单元(memory protect unit)
2)中断控制器
一般采用向量中断(VIC)或嵌套向量中断(NVIC)。Cortex-M支持嵌套的向量中断。
3)DMA控制器(直接存储器访问控制器)
DMA控制器,可将数据块从外设传输至内存、从内存传输至外设或从内存传输至内存,中间不经过CPU,提高计算机系统效率。
4)电源管理与时钟控制器
电源电路为整个嵌入式系统提供能量,是整个系统工作的基础,具有极其重要的位置。一般来说 ,如果电源电路处理得好,整个系统的故障往往能显著减少。选择设计电源电路是主要考虑以下因素:输出电压电流、输入电压电流(交流还是直流)、安全因素、体积限制、功耗限制、成本限制。
常用的电源模块是交流变直流(AC-DC)模块、直流变直流模块(DC-DC)、低压稳压器(LDO)。稳压器包括普通稳压器和低压差稳压器LDO。78XX系列属于普通稳压器,LM2576/2596为开关稳压芯片,CAT6219/AS2815/1117/2908等属于低压稳压器。稳压器的最大特点就是低噪声、低成本、纹波小、精度高、电路简单。
电源管理模块s3c2440芯片有四种工作模式:正常模式、慢速模式(不使用PLL由外部时钟供给)、休眠模式(内核断点,外部硬件时钟不断电)、掉电模式(内核断点)
5)定时计数组件
WDT看门狗定时器 监视着程序的运行状态
Timer通用定时器 用于一般的定时
RTC可直接提供年月日时分秒,使应用系统具有独立的日期和时间
PWM脉冲宽度调制解调器 用于脉冲宽度的调制,比如电机控制、用于变频调整等
6)模拟通道组件: ADC和DAC
7)互联通信组件:UART,I²C,I²S,SPI,CAN,USB,Ethernet
10.嵌入式系统的存储器(层次结构,分类,性能指标;片内存储器,片外存储器,外部存储设备等)
1)RAM(随机读取存储器)与ROM区别(只读存储器)
RAM读写方便,使用灵活,但不能长期保存信息,一旦掉电,信息丢失;应用二进制信息的临时存储或缓冲存储。ROM断点数据保存,但只能读数据;一般用来存放系统软件(如BIOS)等不随时间改变的代码或数据。
SRAM与DRAM区别
RAM主要有两大类存储设备,即静态RAM(SRAM)和动态RAM(DRAM)。两者都是易失性存储器,它们之间的最大差别是存储于其中的数据的寿命。 SRAM的存储单元电路是以双稳态电路为基础的,因此状态稳定,只要不掉电,信息就不会丢失。DRAM的存储单元是以电容为基础的,电路简单,集成度高,功耗小,但DRAM即使不掉电也会因电容放电而丢失信息,需要定时刷新。
2) NVRAM
NVRAM通常就是带有后备电池的SRAM。当电源接通的时候,NVRAM就像任何其他SRAM一样,但是当电源切断的时候,NVRAM从电池中获取足够的电力以保持其中现存的内容。NVRAM在嵌入式系统中使用十分普遍,它最大的缺点是价格昂贵,因此,它的应用被限制于存储仅仅几百字节的系统关键信息。
3)Flash
Flash(闪速存储器,简称闪存)是不需要Vpp电压信号的EEPROM,一个扇区的字节可以在瞬间(与单时钟周期比较是一个非常短的时间)擦除。Flash比EEPROM优越的方面是,可以同时擦除许多字节,节省了每次写数据前擦除的时间,但一旦一个扇区被擦除,必须逐个字节地写进去,其写入时间很长。
NOR Flash与NAND Flash区别
或非型NOR Flash:以字节为单位存取,容量小,写入和擦除速度慢,读取快。与非型NAND Flash:以页(行)为单位存取,容量大,改写速度快,读出较慢,编程复杂,使用寿命长。U盘、存储卡都是使用NAND Flash技术
4)新型存储器
FRAM:铁电随机存取存储器,拥有ROM非易失性,RAM快速随机读写,且速度快功耗低
MRAM:磁性随机存取存储器,拥有SRAM高速存储能力及DRAM高集成度
5)存储器的性能指标:
1)容量 内存容量=单元总数*数据位数/单元
假设单元个数为L,数据线为n,地址线为m,则m=㏒₂L,因此,存储容量V=2^m*n
2)存取时间,从CPU给出有效的存储地址开始到存储器读出或写入所需要的时间。
3)带宽,每秒可传输的最大数据量。
6)总结
片内存储器:Cache,Flash ROM,E²PROM,SRAM
片外存储器:片外程序存储器 NOR Flash ROM,NAND Flash ROM
片外数据存储器 SDRAM,DDR3
外部辅助存储器:SM卡,SD卡,U盘
11. I/O设备通信接口(GPIO、I2C、SPI、UART、USB、HDMI、RS-232/RS-485、CAN、以太网和常用无线通信接口等)
(1)GPIO(General Purpose Input Output通用输入/输出端口)
可编程并行I/O接口,主要用于数字量, 作为输入时具有缓冲功能,而作为输出是具有锁存功能,GPIO也可以作为双向I/O使用。在ARM处理芯片中,GPIO引脚通常是多功能的,以减少引脚数,减少功耗。GPIO一般有三态:0态、1态、高阻状态。
(2)ARM的AMBA总线
先进系统总线(ASB)用于连接高性能系统模块,先进外围总线(APB)支持低性能的外围接口,先进高性能总线(AHB)用于连接高性能系统组件和高带宽组件。
AMBA1—ASB+APB AMBA2—AHB+APB
AMBA3 —AHB+ATB+AXI+APB AMBA4 —ACE+ATB+AXI+APB
(3)串行外设接口SPI
全双工的同步串行外设接口。使用4条线:串行时钟线SCK,主机输入/从机输出数据线MISO,主机输出/从机输入数据线MOSI,低电平有效的从机选择线SSEL。支持一主一从,互为主从,一主多从,多主多从式连接。基于此接口的外部设备有Flash ROM,RAM,A/D转换器,网络控制器,MCU等。
(4)集成电路互连总线接口IIC
集成电路互连总线用于连接嵌入式处理器及外围器件,采用同步串行半双工串行传输的总线标准。
IIC总线具有的接口线少,控制方式简单,器件封装紧凑,通信速率较高(100kb/s,400kb/s,高速模式可达3.4Mb/s)等优点。
【IIC总线的操作时序】
IIC总线只有两条信号线,一条是数据线SDA(双向三态),另一条是时钟线SCL,所有的操作均通过这两条信号线完成。数据线SDA上的数据必须在时钟的高电平周期保持稳定,它的高/低电平状态只有在SCL时钟信号线是低电平时才能改变。
1)启动和停止条件
总线上的所有器件都不使用总线时,SCL线和SDA线各自的上拉电阻把电平拉高,使它们均处于高电平。主控制器启动总线操作的条件是当SCL线保持高电平时SDA线有高电平转为低电平,此时主控制器在SCL产生时钟信号,SDA线开始传输数据。若SCL线为高电平时SDA由低转为高,则总线工作停止,恢复空闲状态。
2)数据传送格式
数据传送时高位在前,低位在后,每个字节都是八位,每次能传送的字节数目不定。传输操作启动后,主控器件传送首字节是地址,其中前七位指出与哪个器件通信,第八位指出数据传输的方向(发送还是接收)
3)应答(ACK)信号传送
主控器件在接收从器件字节后,如果不准备终止传输,会发送一个ack信号给从器件;从器件接收到主控器件的字节后,总是发送一个ack信号给主控器件;如果他没有准备好再次接受,它可以保持scl为低电平。
4)读/写操作
5)总线仲裁
只要检测到电平与自己发出的电平相同,就会继续占用总线。总线控制遵循“低电平优先”的原则,即谁发送低电平谁就掌握对总线的控制权。
(5)以太网接口(Ethernet)
由以太网媒体接入控制器(MAC)和物理收发器(PHY)组成,MAC与PHY通信采用MII接口或RMII接口。数据传输速率高达10Mbps——10Gbps,延时时间短,采用分组交换技术。
(6)UART通用异步收发器
全双工串行异步通信。由发送器,接收器,控制单元,波特率发生器构成。
起始位(1) 数据位(5-8) 奇偶校验位(1) 停止位(1-2)
UART按位传送,字符总是以起始位开始(标识符为逻辑0)停止位结束(标识符为逻辑1),数据可以是5-8位,并且总是以低位在前高位在后的次序传送,接受采用中断方式,发送采用查询方式。
【基于UART的RS—232/RS—485总线接口 】
UART外接逻辑电平转换芯片,可构成RS—232/RS—485接口来进行近距离或远距离通信
RS—232采用负逻辑传输方式,即-3~-15v定义为逻辑1,,3~15v定义为逻辑0。缺点:无法消除共模干扰,传输距离小于15米
RS—485 采用差分信号传输方式,有很强的抗共模干扰的能力,当A比B的电位高200mV时逻辑电平为1;当B比A的电位高200mV时逻辑电平为0,传输距离长达1200米。
(7)CAN控制器局域网络
采用差分信号传输方式,仅有CANH和CANL两根信号线,可以进行远距离多机通信。CAN是目前唯一有国际标准的现场总线,主要用于要求抗干扰能力强的工业控制领域,可组成多主从系统。
(8) USB
支持热拔插和即插即用,可以支持异步传输和同步传输两种传输方式,可以扩展127个菊花链,支持USB总线供电提供最大5V和最多500mV的电源
(9) 以太网通信接口常用无线通信接口(GPS模块、GPRS模块、WiFi模块、蓝牙模块、射频无线收发模块)
以太局域网:数据传输速率高10Mb/s~10Gb/s,延迟时间短,以MAC地址标识设备,采用分组交换技术,帧传送。
常用无线通信接口
(1)GPS模块
(2)北斗模块
(3)GPRS模块
(4)WiFi模块
(5)蓝牙模块
无线局域网(WLAN):WLAN是以太网与无线通信技术结合的产物,他借助无线电波进行数据传输,协议IEEE802.11,通常也称WiFi,传输速率11Mb/s,54Mb/s,108Mb/s(802.11n)。所谓的WiFi热点正式的名称为“无线接入点”,它实际上是一个无线交换机或无线路由器,室内覆盖距离一般30米左右,室外100—300米。另一种是蓝牙技术,它是一种短距离、低成本、低速率的无线通信技术,其最高传输速率为1Mbps,传输距离为10米。蓝牙模块主要由三部分组成:无线传输收发单元、基频处理单元以及数据传输接口。
(10)高清多媒体接口(HDMI)、 不对称数字用户线(ADSL)
12. 其他硬件组件(键盘、LED、LCD、触摸屏、传感器等)
(1)常用简单输入设备(键盘、触摸屏、传感器)
在嵌入式应用系统中,目前使用的触摸屏主要有两种:一种是电阻式触摸屏(俗称软屏),结构简单,价格较低;另一种是电容式触摸屏(俗称硬屏),其结构相对复杂,价格较高。
触摸屏类型 |
工作原理 |
触摸方式 |
安装方式 |
透明度 |
易用性 |
电阻式 |
电压测量 |
笔、手指点压 |
显示屏前 |
一般 |
好 |
电容式 |
电容耦合 |
金属笔尖、手指接触 |
显示屏前 |
比电阻式好 |
一般 |
电感式 |
电磁谐振 |
笔尖接近感应 |
显示屏后 |
好 |
好 |
(2) 常用简单输出设备(LED、数码管、LCD、)
嵌入式系统中多数采用液晶显示器(LCD,Liquid Crystal Display),LCD是一种低成本、低功率的器件,既可显示文字,又可显示图像。LCD显示器根据其工作原理可分为反射式、吸收式(又称透视式)LCD显示器。
13.典型嵌入式处理芯片S3C2410
1).S3C2410的硬件组成
内部具有分离的16KB大小的指令Cache和16KB大小的数据Cache。同时由于采用哈佛体系结构,程序存储器与数据存储器分开,分别有各自的存储管理器件MMU。采用五级指令流水线。使用ARM公司特有的AMBA总线,对于高速组件采用AHB总线,而对于低速外设接口则采用APB总线。AHB通过桥接器连接APB。
芯片内部集成了许多硬件组件,包括了连到系统总线AHB上的系统总线控制器,电源管理单位,PLL(锁相环)时钟发生器,内部SRAM,外部存储器控制器……等等。
2).S3C2410的存储控制组件
包括存储控制器,总线控制器,外部主控器,NAND Flash控制器等。
存储器控制器提供访问外部存储器所需存储器控制器,支持大/小端模式,地址空间共1GB(8个BANK,每个BANK大小为128MB)。
3).S3C2410的时钟电源组件功能及组成
14.嵌入式软件组成结构
嵌入式软件是针对特定应用以及相应的硬件平台,为完成用户预期任务而设计的计算机软件。
嵌入式软件具有四层结构。最低层是BSP/HAL, 称之为板级支持包或者是硬件抽象层, 其功能是提供基本的硬件支持;再上一层是OS,操作系统,负责对于任务资源的分配与管理,接着是中间件,例如我们最为熟知的JVM,其是跨平台中间件的使用,到了最上层就是应用软件。
实时操作系统(RTOS)体系结构
在实时操作系统中,操作系统负责的基本任务就是对于内存、文件的管理,以及进程的调度,扩展功能就是对于网络模块等的调度以及使用。
1. 实时系统
实时系统是必须在有限和确定的时间内对外部事件作出响应的信息系统。IEEE对实时系统的定义:正确性不仅取决于计算的结果,而且取决于产生结果的时间的计算系统。
关键特性:时间约束性,可预测性,可靠性,交互性。
实时性指标:中断延迟时间,任务切换时间,任务抢占时间。
2.嵌入式操作系统的特点和分类
(1)嵌入式操作系统特点
①代码固化存储
②可裁剪性
③实时性
④强稳定性
⑤硬件适应性
(2)嵌入式操作系统分类
实时性:硬实时性系统,软实时性系统。
开发方式:专门用嵌入式环境开发的嵌入式操作系统,从通用计算机操作系统移植而来的嵌入式操作系统。
商业模式:免费的嵌入式操作系统,商业嵌入式操作系统。
3.嵌入式系统的内核结构
单内核结构:把内核的各个功能模块整合在一起,模块间的交互通过直调用其他模块中的函数来实现。
微内核结构:操作系统仅将必须的基本功能放入内核,它们运行在核心态,其他功能都在内核之外,由在用户态运行的服务来完成。
4.硬件抽象层(HAL)和板级支持包(BSP)
HAL是在操作系统层与硬件之间设置的独立的接口软件层,是所有直接依赖于硬件的软件,包括引导程序,硬件配置程序和硬件访问代码等。
BSP的特点是硬件和操作系统都关系紧密,既有硬件相关性,又有操作系统相关性。
5.引导加载程序(bootloader)
bootloader负责系统的上电自检,硬件初始化,建立存储空间映射,配置系统参数,建立上层软件的运行环境,并加载和启动操作系统。
6.设备驱动程序(device driver)
设备驱动程序是指直接与硬件相互作用并控制硬件的软件。
7. 1).μC/OS-Ⅱ操作系统内核的基本特征
(1)公开源码的高质量实时内核
(2)可移植
(3)可裁剪,可固化
(4)时间确定性
(5)多任务
(6)抢占式内核
(7)多种系统服务
2).μC/OS-Ⅱ的任务结构
(1)任务的程序代码
(2)任务堆栈
(3)任务控制块
3).μC/OS-Ⅱ的任务状态
(1)休眠态
(2)就绪态
(3)运行态
(4)等待态
(5)被中断态
4).μC/OS-Ⅱ的任务调用
μC/OS-Ⅱ可以管理64个任务每个任务都被赋予一个不同于其他任务的优先级,共有64个优先级别。
μC/OS-Ⅱ预定义了两个系统任务为应用程序服务:
(1)空闲任务(idle task)
(2)统计任务
μC/OS-Ⅱ采用基于优先级的调度算法,任务调度时,内核总是选择当前所有就绪任务中最高优先级的任务转入运行态。
在当前程序进入临界区时,并不希望系统进行任务调度,也不希望处理器转入中断服务程序。在μC/OS-Ⅱ中有两种解决方法:
(1)利用宏OS_ENTER_CRITICAL和OS_EXIT_CRITICAL实现关中断和开中断。
(2)利用函数OSSchedLock()和OSSchedUnlock()给任务调度开锁和上锁。
5).μC/OS-Ⅱ的中断处理
在μC/OS-Ⅱ系统中,中断服务程序的执行步骤大致如下:
(1)保存全部CPU寄存器
(2)调用OSIntEnter()或OSIntNesting直接加1
(3)执行用户中断服务代码(调用中断处理函数)
(4)调用OSIntExit()
(5)恢复所有CPU寄存器
(6)执行中断返回指令
6).μC/OS-Ⅱ的任务管理服务
(1)任务创建:OSTaskCreate()或OSTaskCreateExt()
(2)任务删除:OSTaskDel()
(3)任务挂起和任务恢复:OSTaskSuspend()和OSTaskResume()
7).μC/OS-Ⅱ的时钟节拍与时间管理服务
OSTimeTick()检查啊等待超时或等待时间的任务是否超时
OSTimeSet()改变tick计数器的当时值
OSTimeDly()和OSTimeDlyHMSM()延时一段时间