第1章嵌入式系统概述.docx
《第1章嵌入式系统概述.docx》由会员分享,可在线阅读,更多相关《第1章嵌入式系统概述.docx(18页珍藏版)》请在冰豆网上搜索。
第1章嵌入式系统概述
第1章嵌入式系统概述
嵌入式系统(EmbeddedSystem)是嵌入式计算机系统的简称,出现于20世纪60年代。
随着微电子技术的飞速发展,嵌入式系统产品已渗透到各个行业。
而新一轮的汽车、通信、信息电器、医疗等行业巨大的智能化设备需求,进一步促进了嵌入式系统的发展。
由于嵌入式系统是针对特定行业应用、在特定环境下设计的专用计算机系统,还没有一个统一的定义。
目前,国内普遍认同的嵌入式系统的定义可表述为:
以应用为中心,以计算机技术为基础,软件硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗等严格要求的专用计算机系统。
由此可以看出,嵌入式系统是面向用户、面向产品、面向应用的。
与通用计算机系统相比,具有较强的专用性,可根据用户需求进行软硬件剪裁,满足应用系统的功能、可靠性、成本、体积等要求。
因此,嵌入式系统实际上是一个以高性能微处理器为硬件基础,多任务操作系统为软件基础的综合平台。
本章主要介绍嵌入式系统的基本概念,搭建嵌入式最小系统所需的基础知识和基本技能。
●嵌入式系统的组成
●常用嵌入式微处理器
●常用嵌入式操作系统
●嵌入式最小系统
1.1嵌入式系统的组成
嵌入式系统与传统PC机一样,也是一种计算机系统,由嵌入式系统硬件和嵌入式系统软件组成,如图1.1所示。
其中,嵌入式系统硬件用于运行所有的软件、处理外部设备信号,嵌入式系统软件负责管理系统的软硬件资源,满足用户的特定需求。
图1.1嵌入式系统组成框图(驱动层改为中间层)
1.1.1嵌入式系统硬件
嵌入式系统硬件主要由嵌入式微处理器、存储器、总线及输入/输出接口等组成。
其中:
微处理器是嵌入式系统的指挥控制中心,存储器用来存放程序和数据;总线是把各部件连接起来,实现彼此信息交换的公共传输线,有传送数据的数据总线(双向)、传送地址码的地址总线(单向)和传送或接收各种控制命令的控制总线三类;输入/输出接口是低速设备和高速微处理器连接的桥梁。
1.嵌入式系统硬件结构
在实际应用中,嵌入式系统硬件有两种结构形式,一种是单片系统,另一种是多片系统,如图1.2所示。
(a)单片系统(b)多片系统
图1.2单片系统和多片系统
单片系统的特点是微处理器核、只读存储器(ReadOnlyMemory,简称ROM)、随机存储器(ReadAccessMemory,简称RAM)和输入/输出(I/O)接口等集成在一块芯片上,电路设计简洁。
多片系统中,微处理器核、只读存储器、随机存储器、输入输出(I/O)接口等是一个个独立的组件,电路设计工作量增大,但功能扩展灵活。
2.嵌入式微处理器
嵌入式微处理器是一种专用的微处理器,与通用微处理器相比,具有如下特点。
(1)集成度高、体积小、重量轻
通用微处理器芯片内通常只包括微处理器核、缓存(cache)、存储管理单元(MMU)和总线等,附加的功能独立在其他芯片和电路内。
嵌入式微处理器除了集成微处理器核、cache、MMU和总线等部分外,通常还包括:
中断控制器、定时器、DMA控制器、A/D和D/A转换器;片内存储器;外部存储器的控制器;LCD控制器;USB控制器;外设接口及其他标准接口等。
(2)可靠性高、成本低
价格是设计嵌入式系统关心的一个问题,特别是对使用量大的系统,价格至关重要。
为降低价格,需要考虑不同的折衷方案。
影响处理器的价格因素有:
处理器功能块的数目、总线类型等;片上存储器的容量大小;芯片的引脚和封装形式;芯片的大小;代码密度等。
嵌入式微处理器可采用两种指令集系统,一种是精简指令集系统RISC(ReducedInstructionSetComputer),另一种是复杂指令集系统CISC(ComplexInstructionSetComputer)。
一般来说,CISC芯片代码密度高,但结构复杂,其额外的控制逻辑单元使价格变的很高。
RISC芯片拥有简单的结构,但代码密度低。
在实际应用中,RISC芯片代码密度低的问题可采用不同的策略来解决。
例如,ARM系列嵌入式微处理器,通过Thumb扩展提供一种指令压缩的方法,将32位ARM指令集压缩为16位的Thumb子集,在执行以前,通过芯片上的逻辑块,再解压为32位等同的指令。
因此,通常以精简指令集的嵌入式微处理器应用较多。
(3)功耗低、工作温度范围宽
大多数嵌入式系统有功耗的限制,它们不支持使用风扇及其他冷却设备。
嵌入式微处理器采用不同的技术来降低功耗。
常用的有:
降低工作电压,如1.8V、1.2V,甚至更低;提供不同的时钟频率,即通过软件设置不同的时钟分频;关闭暂时不用的功能块;提供功耗管理机制,使微处理器可以在运行模式(微处理器处于全速运行)、待命模式(微处理器不执行指令,所有存储的信息是可用的,能在几个周期内返回运行模式)或时钟关闭模式(时钟完全停止,要退出这个模式,系统需要重新启动)下运行。
3.存储器
嵌入式系统存储结构如图1.3所示,分为缓存(片内)、主存储器(片内、片外)和外存储器(片外)三种类型。
根据具体的应用需要,可灵活选择系统中是否包含缓存、片内主存储器和外存储器。
图1.3存储器结构
(1)缓存
缓存(Cache)中存放的是当前使用最多的程序代码和数据,即主存中部分内容的副本。
Cache的容量直接影响嵌入式微处理器的性能和价格。
在相同主频下,Cache容量越大,嵌入式微处理器的性能越好,价格也越高。
当微处理器读取指令或数据时,首先访问Cache。
若有关信息已在Cache中,称为读命中,可直接从Cache中取用。
若没有命中,则从主存中取出,同时取出与该指令或数据地址相邻的若干单元内容写入Cache。
由于局部访问原理的存在,当微处理器下次访问Cache时,就会命中。
由于采用了LRU(最近最小使用)算法自动更新Cache,将最近使用过的指令和数据保留,而长期未用的被自动替换,大大提高了命中率。
当微处理器向Cache写入数据时,有以下几种方法:
在微处理器访问命中时,将数据同时写入Cache和主存,即遍写;在微处理器访问命中时,将数据只写入Cache,在规定的时间才将数据写入主存,即回写;写未命中时,直接写主存。
(2)主存储器
主存储器简称为主存,是微处理器能直接访问的存储器,用来存放系统和用户的程序及数据。
嵌入式系统的主存可分为片内存储器和片外存储器。
片内存储器与嵌入式微处理器核做在同一个芯片内,速度快,由于成本较高,通常在要求比较高的应用中使用,并且存储容量一般较小。
片外存储器的存储容量较大,速度比片内存储器慢。
可做主存的存储器有:
NorFlash、SRAM、DRAM、SDRAM等。
①NorFlash。
NorFlash是FlashMemory(闪存)的一种,属于电可擦除可编程ROM,其特点是:
断电后,仍能长期保存存储的信息,具有很高的存取速度,功耗很小,集成度高,易于擦写,支持在线刷新,升级非常方便。
②SRAM。
SRAM(StaticRAM,静态随机存储器)是RAM的一种,其特点是:
一旦断电,存储的信息将全部丢失。
SRAM使用方便、速度快,使用过程中不必周期性地刷新就可以保持数据,但功耗较大、集成度低、成本高。
③DRAM。
DRAM(DynamicRAM,动态随机存储器)是另一种RAM,其特点也是:
一旦断电,存储的信息将全部丢失。
DRAM使用时,需要周期性地刷新才能保持数据,速度较慢,但集成度高,成本相对较低。
④SDRAM。
SDRAM(SynchronousDRAM,同步动态随机存储器)本质上是DRAM,采用双存储体结构,也就是有两个储存阵列,一个被微处理器读取数据的时候,另一个已经做好被读取数据的准备,两者相互自动切换,使得存取效率成倍提高。
(3)外存储器
外存储器简称为外存,是微处理器不能直接访问的存储器,用来存放用户的各种信息,存储容量大,存取速度相对主存而言要慢的多,但可用来长期保存信息。
可做外存的存储器有NandFlash、CF(CompactFlash)卡、MMC(MultiMediaCard)、SD(SecureDigital)卡等。
①NandFlash。
NandFlash也是FlashMemory的一种,属于电可擦除可编程ROM,断电后能长期保存存储的信息。
NandFlash强调低成本、高性能,并像磁盘一样可以通过接口轻松升级,具有容量大、回写速度快和芯片面积小等特点。
②CF卡
CF卡的大小为43mm×36mm×3.3mm,50针接口,存储单元和控制器一同做在卡上,在数码相机中用的较多。
③MMC
MMC是一种通用的、低成本数据存储卡,具有广泛的应用空间,如:
PDA,电子玩具等。
MMC的尺寸为32mm×24mm×1.4mm,接口只有7针。
MMC的存储单元和控制器也一同做在卡上,智能的控制器使得MMC保证了兼容性和灵活性。
④SD卡
SD卡的数据传送和物理规范由MMC发展而来,接口除了保留MMC的7针外,还在两边多加了2针作为数据线。
因此,MMC可以被新的SD设备存取,其兼容性取决于应用软件。
但SD卡却不可以被MMC设备存取。
4.I/O接口
嵌入式系统中常用的I/O接口有:
通用输入输出端口(GeneralPurposeInput/OutputPorts,简称GPIO)、USB接口、以太网接口、LCD接口等。
每一种接口都对应一个控制器,在控制器控制下实现外部设备与嵌入式微处理器之间的数据通讯。
(1)GPIO
在嵌入式系统中,经常需要控制许多结构简单的外部设备。
这些外部设备有的需要通过微处理器控制,有的需要微处理器提供输入信号,并且许多设备只要求有开或关两种状体就够了,如LED的亮与灭。
对这些外部设备的控制,使用传统的串口或者并口就显得比较复杂,所以,在嵌入式微处理器上通常提供了一种通用的可编程I/O端口,也就是GPIO。
每个GPIO至少需要两个寄存器,一个做控制用的“通用I/O端口控制寄存器”,另一个是存放数据的“通用I/O端口数据寄存器”。
数据寄存器的每一位是和GPIO的硬件引脚对应的,而数据的传递方向是通过控制寄存器设置的。
即,通过对控制寄存器进行编程可以设置每一位引脚的数据流向。
②USB接口
USB(UniversalSerialBus)是一个外部总线标准,用于规范计算机系统与外部设备的连接和通讯。
USB接口在USB控制器控制下工作,以其方便、传输速率高、支持设备的即插即用和热插拔功能,成为大量智能设备必配的接口之一。
USB接口有USB1.1、USB2.0、USB3.0等规范。
其中:
USB1.1的数据传输速率为12Mbps(高速外设)或1.5Mbps(低速外设),USB2.0的最高传输速率可达480Mbps,而USB3.0的理论传输速率可达5Gbps。
USB接口的连接端口有A、B两种形式,如图1.4所示。
每种形式都是4个引脚,分别为电源(VCC)、数据正(D+)、数据负(D-)、地(GND)。
接口连接时,需要选用相应公口的连接线。
(a)A型(b)B型
图1.4USB接口的物理定义
③以太网接口
以太网接口需要在以太网控制器控制下工作,主要应用于数据终端设备(DTE)、数据通信设备(DCE)两大类。
以太网接口采用RJ45标准,连接端口有两种形式,一个适用于数据终端设备,如图1.5(a)所示;另一个适用于数据通信设备,如图1.5(b)所示。
(a)适用于DTE(b)适用于DCE
图1.5以太网接口的物理定义
接口连接时,需要采用RJ45水晶头的双绞线。
水晶头与双绞线的连接方式也有两种,分别是T568A线序和T568B线序。
当连接两个同类设备时,双绞线两端的水晶头一个按T568A线序连接,另一个按T568B线序连接。
当连接两个不同类设备时,双绞线两端的水晶头均按T568B线序连接。
④LCD接口
LCD接口需要在LCD控制器控制下工作,目前还没有统一的标准。
就彩色LCD而言,其连接方式有MCU模式、RGB模式、MDDI(MobileDisplayDigitalInterface)模式等。
其中:
MCU模式的数据位宽为8位、9位、16位或18位可选(默认为8位),常用于小屏幕;RGB模式的数据位宽为6位、16位或18位可选,常用于大屏幕;MDDI模式常用于移动领域的显示。
1.1.2嵌入式系统软件
嵌入式系统软件由嵌入式系统中间层、嵌入式操作系统、嵌入式应用软件组成。
嵌入式系统中间层介于硬件层与软件层之间,也称为硬件抽象层(HardwareAbstractLayer,简称HAL)或板极支持包(BoardSupportPackage,简称BSP),它把系统软件与底层硬件部分隔离,使系统的底层设备驱动程序与硬件无关。
嵌入式操作系统是软硬件的接口,负责管理系统的软硬件资源,通过驱动层程序与硬件进行信息交互。
嵌入式应用软件是利用嵌入式操作系统提供的功能开发出来的满足用户某种需求的程序。
1.嵌入式系统中间层
在嵌入式系统中,针对不同的应用,嵌入式系统的硬件组成有不同的选择。
选用嵌入式操作系统时,由于不同的嵌入式操作系统具有各自的软件层次结构,提供的硬件接口形式也不相同。
因此,作为嵌入式操作系统与硬件之间接口的嵌入式系统中间层,具有两个特点:
一是硬件相关性,二是操作系统相关性。
一般来说,中间层有两大功能。
一是系统启动时,完成对硬件的初始化。
例如:
对嵌入式微处理器中的寄存器进行设置,对内存、设备的中断进行设置等。
二是对硬件相关的设备驱动程序进行初始化和调用。
硬件相关设备驱动程序的初始化和调用是一个从高层到底层的过程。
虽然BSP中包含硬件相关设备的驱动程序,但是这些设备驱动程序通常不直接由BSP调用,而是在系统初始化过程中由BSP把它们与操作系统中通用的设备驱动程序关联起来,通过调用通用设备驱动程序函数包,实现调用硬件相关设备的驱动程序,完成对硬件相关设备的操作。
2.嵌入式操作系统
嵌入式系统应用的迅猛发展,使嵌入式操作系统概念流行起来,以至于很多初学者认为嵌入式开发必须采用嵌入式操作系统。
实际上,一个嵌入式系统是否需采用嵌入式操作系统、采用哪一种操作系统完全由项目的复杂程度、实时性要求、应用软件的规模、目标板硬件资源以及产品成本等因素决定。
早期的嵌入式系统并没有操作系统,只不过有一个简单的控制循环而已。
对很简单的嵌入式系统开发来说,这可能已经满足了开发需求。
随着嵌入式系统在复杂性上的增长,操作系统显得重要起来,有些复杂的嵌入式系统也许是因为设计者坚持不要相应的操作系统才使系统的开发过程非常复杂。
嵌入式操作系统通常是一个实时操作系统(RTOS)。
“实时”是指能在确定的时间内执行其功能并对外部的异步事件做出响应。
其操作的正确性不仅依赖于逻辑设计的正确程度,而且与这些操作进行的时间有关。
“在确定的时间内”是该定义的核心。
也就是说,实时操作系统是对响应时间有严格要求的。
实时操作系统有两种类型:
软实时系统和硬实时系统。
软实时系统仅要求事件响应是实时的,并不要求限定某一任务必须在多长时间内完成。
如果系统负荷较重时,允许发生错过时限的情况不会造成太大的危害,比如液晶屏刷新允许有短暂的延迟。
而在硬实时系统中,不仅要求任务响应要实时,而且要求在规定的时间内完成事件的处理,决不能错过事件处理的时限。
如飞机的起落架,一旦发出打开指令,则必须在规定的时间内打开,否则一旦延迟打开起落架,后果将不堪想象。
3.嵌入式应用软件
嵌入式应用软件一般是基于嵌入式操作系统之上,根据被控对象的功能要求,调用系统的API函数来实现具体的应用目标。
例如:
利用GUI图形系统软件包,用户可以通过编程调用GUI提供的接口函数,提供LCD屏一个高效率的、与处理器和LCD控制器无关的图形用户界面。
1.2常用嵌入式微处理器
嵌入式微处理器种类较多。
按体系结构可分为冯•诺依曼结构、哈佛结构,按位数可分为16位、32位、64位,按用途可分为嵌入式DSP、通用嵌入式微处理器,按产品可分为ARM系列、MIPS系列、PowerPC系列、龙芯系列等。
1.2.1嵌入式微处理器的体系结构
就体系结构而言,嵌入式微处理器有冯•诺依曼结构和哈佛结构两种。
这两种体系结构的主要区别在于程序和数据的存储方式不同。
1.冯•诺依曼结构
将程序和数据存储在同一个存储空间中的结构,称为冯•诺依曼结构,如图1.6所示。
冯•诺依曼结构的主要特点是程序和数据在存储器中没有区别,都是存储器中的数据,具有相同的数据宽度,微处理器根据存储单元的地址对它们进行读写。
指令在存储器中按其执行顺序存放,由程序计数器(ProgramCounter,PC)指明要执行的指令所在的单元地址。
程序计数器只有一个,一般按顺序递增,但执行顺序可按运算结果或当时的外界条件而改变。
指令由操作码和地址码组成,其中操作码指明本指令的操作类型,地址码指明操作数的地址。
图1.6冯•诺依曼结构
2.哈佛结构
将程序和数据存储在不同存储空间中的结构,称为哈佛结构,如图1.7所示。
哈佛结构是一种并行体系结构,它的主要特点是程序和数据分别存储。
即:
程序存储器和数据存储器是两个独立的存储器,每个存储器独立编址、独立访问。
与两个存储器相对应的是系统的4条总线:
程序的数据总线与地址总线,数据的数据总线与地址总线。
这种分离的程序总线和数据总线可允许在一个机器周期内同时获得指令字(来自程序存储器)和操作数(来自数据存储器),从而提高了执行速度。
又由于程序和数据存储在不同的存储器中,指令和数据可以有不同的数据宽度,因此也提高了数据的传输率,为数字信号处理提供了较高的性能。
图1.7哈佛结构
1.2.2ARM微处理器简介
虽然嵌入式微处理器有许多种类,但就市场份额而言,目前占据主导地位的是ARM系列嵌入式微处理器。
ARM(Advanced RISC Machines)是一种微处理器的通称,也是公司的名字,还可以认为是一种技术名称。
1.ARM系列微处理器
ARM公司是一家专门从事芯片设计与授权业务的知识产权公司,本身并不生产芯片,与世界几十家半导体公司合作,授权这些公司制造自己设计的芯片,并提供开发第三方工具、软件支持等服务。
通常,将采用ARM公司授权制造的嵌入式微处理器称为ARM微处理器。
因此,实际应用中会遇到不同厂商制造的ARM微处理器。
ARM微处理器有ARM7、ARM9、ARM10、ARM11、SecurCore等系列,每个系列又有多个型号,如表1.1所示,它们都有各自的特点和应用领域。
ARM系列微处理器型号的命名具有一定的规则,型号中字符的含义如表1.2所示。
表1.1ARM系列微处理器的型号
系列
型号
ARM7
ARM7EJ-S
ARM7TDMI
ARM7TDMI-S
ARM720T
ARM9
ARM920T
ARM926EJ-S
ARM940T
ARM946E-S
ARM968E-S
ARM10
ARM1020E
ARM1022E
ARM1026EJ-S
ARM11
ARM1136J-S
ARM1136JF-S
ARM1156T2(F)-S
ARM1156JZ(F)-S
SecurCore
SC100
SC110
SC200
SC210
表1.2ARM系列微处理器型号的含义
后缀字符
含义
x
系列号,如ARM7、ARM9
y
存储管理/保护单元
z
Cache
T
Thumb16位译码器
D
JTAG调试器
M
快速乘法器
I
嵌入式跟踪宏单元
E
增强指令(基于TDMI)
J
Jazelle加速
F
向量浮点单元
S
可综合版本
2.S3C2440A微处理器
S3C2440A是三星公司制造的16/32位RISC的ARM微处理器,为手持设备和一般类型应用提供了低价格、低功耗、高性能小型微控制器的解决方案,在市场上应用非常广泛。
该微处理器是一个多用途的通用芯片,为了降低系统整体成本,它内部集成了常用的外围组件,具有较高的性价比。
(1)内部结构
S3C2440A采用了ARM920T内核,由ARM9TDMI、存储管理单元(MMU)和高速缓存三部分组成。
其中,MMU可以管理虚拟内存,哈佛体系结构的高速缓存由独立的16KB指令Cache和16KB数据Cache组成。
ARM920T有两个协处理器:
CP14和CP15。
CP14用于调试控制,CP15用于存储系统控制以及测试控制。
S3C2440A还采用了先进微控制器总线结构(AdvancedMicrocontrollerBusArchitecture,简称AMBA),其内部结构示意图如图1.8所示。
图1.8S3C2440A内部结构示意图
(2)片内资源
S3C2440A内部提供了一套完整的通用系统外设,使用时无需配置额外的组件,降低了系统整体的成本。
S3C2440A片内的资源框图如图1.9所示,包括:
1.3V内核,1.8V/2.5V/3.3V储存器,16KB指令Cache(I-Cache),16KB数据Cache(D-Cache);带PLL的片上时钟发生器,外部储存控制器(SDRAM控制盒片选逻辑),含LCD专用DMA的LCD控制器(支持最大4K色STN和256K色TFT),4路外部请求引脚的DMA控制器;3路UART(IrDA1.0,64-ByteTxFIFO,64ByteRxFIFO),2路SPI,IIC总线接口(多主支持),IIS音频编解码器接口,AC`97编解码器接口,摄像头接口(支持最大4096×4096的输入,2048×2048缩放输入),1.0版SD主接口,兼容2.11版MMC接口,2路USB主机控制/1路USB期间控制(ver1.1);4路PWM定时器,看门狗定时器,具有日历功能的RTC,8路10位ADC和触摸屏接口;130个通用I/O端口,24个外部中断源。
图1.9S3C2440片内资源框图
(3)工作电压及频率
实际使用S3C2440A时,必须满足其参数要求。
S3C2440A的工作电压及频率参数如下。
内核频率和电压:
400MHz@1.30V
存储器电压:
1.8V/2.5V/3.0V
I/O电压:
3.3V
时钟频率:
内部时钟(FCLK)为400MHz
高速时钟(HCLK)为136MHz
外设时钟(PCLK)为68MHz
1.3常用嵌入式操作系统
嵌入式操作系统是相对于通用操作系统而言的,除了具备通用操作系统的基本特点外,嵌入式操作系统在系统实时高效性、硬件相关依赖性、软件固态化以及应用的专用性等方面具有较为突出的特点。
1.3.1嵌入式操作系统概念
嵌入式系统应用的迅猛发展,使嵌入式操作系统概念流行起来,以至于很多初学者认为嵌入式开发必须采用嵌入式操作系统。
实际上,一个嵌入式系统是否需要采用嵌入式操作系统、采用哪一种嵌入式操作系统完全由项目的复杂程度、实时性要求、应用软件的规模、目标板硬件资源以及产品成本等因素决定。
早期的嵌入式系统并没有操作系统,只不过有一个简单的控制循环而已。
对很简单的嵌入式系统开发来说,简单的控制循环可能已经满足了开发需求。
随着嵌入式系统在复杂性上的增长,嵌入式操作系统显得重要起来,尤其在功能复杂、系统庞大的应用中显得越来越重要。
1.嵌入式操作系统的特点
与通用操作系统相比,嵌入式操作系统具有以下特点。
(1)可靠性高
嵌入式操作系统小巧简捷,具有很高的可靠性,并且对软件开发人员完全开放。
嵌入式系统的用户可以非常清楚地了解、掌握操作系统内部的情况,从而构建一个性能稳定、可以信赖应用系统。
(2)实时性强
“实时”是指能在确定的时间内执行其功能并对外部的异步事件做出响应。
“在确定的时间内