本节书摘来自异步社区《嵌入式 Linux C 语言应用程序设计(修订版)》一书中的第1章,第1.2节,作者 华清远见嵌入式培训中心,孙琼,更多章节内容可以访问云栖社区“异步社区”公众号查看。
嵌入式系统主要由嵌入式微处理器、外围硬件设备、嵌入式操作系统以及用户应用软件等部分组成,其体系结构如图1.2所示。
从该图中可以清楚地看到嵌入式系统体系结构上下层之间的关系。
其中,硬件平台包括嵌入式处理器和外围设备,它们位于嵌入式系统结构中的最底层;嵌入式操作系统与通用操作系统的功能类似,为用户屏蔽硬件底层的具体细节,提供一个透明的操作空间;而应用软件则是位于嵌入式操作系统之上的,当然,用户也可以直接在嵌入式操作系统之上进行开发。
下面,将通过该体系结构中的每一层,来详细讲解嵌入式系统的组成。
1.嵌入式处理器
嵌入式处理器是各嵌入式系统的核心部件,其功耗、体积、成本、可靠性、速度、处理能力、电磁兼容性等方面均受到应用要求的制约,嵌入式处理器包含以下部分:
处理器内核;地址总线;数据总线;控制总线;处理器本身的辅助支持电路,如时钟、复位电路等;片上I/O接口电路。嵌入式处理器可以分为3类:嵌入式微处理器、嵌入式微控制器和嵌入式DSP(Digital Signal Processor)。
嵌入式微处理器就是和通用计算机的微处理器对应的CPU。在应用中,一般是将微处理器装配在专门设计的电路板上,母板上只保留与嵌入式相关的功能即可,这样可以满足嵌入式系统体积小、功耗低的要求。
嵌入式微控制器又称单片机,它将CPU、存储器(少量的RAM、ROM或两者都有)和其他外设封装在同一片集成电路里。
嵌入式DSP专门用来对离散时间信号进行极快地处理计算,提高编译效率和执行速度。DSP正在大量进入数字滤波、FFT、谱分析、图像处理等领域。
本书所讲的嵌入式处理器主要指嵌入式微处理器。
嵌入式微处理器与通用微处理器既有相似之处,也有不少的区别,其比较如下。
相似点有以下两项。
对外的接口:各类总线及辅助电路接口。处理功能:相似的指令功能分类。不同点也有以下几项。
指令系统中指令的个数:嵌入式微处理器的指令个数与通用处理器有很大的区别,嵌入式微处理器的指令系统往往由于成本等原因而有所精简,比如有些嵌入式处理器无浮点功能等。指令的形式:嵌入式微处理器一般都使用精简指令集(RISC),而通用处理器则使用复杂指令集(CISC)。处理器的结构设计:嵌入式微处理器与通用处理器在结构设计上有较大的区别,如流水线结构的设计。处理器的工艺和应用指标:由于嵌入式系统通常应用在特殊的场合,因此,对处理器的工艺及应用指标(如工作的温度条件等)也有不同的要求。
小知识 常见的CPU指令集分为CISC和RISC两种。 CISC(Complex Instruction Set Computer)是“复杂指令集”。自PC机诞生以来,32位以前的处理器都采用CISC指令集方式。这种指令系统的指令不等长,指令的数目非常多,编程和设计处理器时都较为麻烦。但是基于CISC指令架构系统设计的软件已经非常普遍了,所以包括Intel、AMD在内的众多厂商至今使用的仍为CISC。 RISC(Reduced Instruction Set Computing)是“精简指令集”。研究人员在对CISC指令集进行测试时发现,各种指令的使用频度相当悬殊,其中最常使用的是一些比较简单的指令,它们仅占指令总数的20%,但在程序中出现的频度却占80%。RISC正是基于这种思想提出的。采用RISC指令集的微处理器处理能力强,并且采用超标量和超流水线结构,大大增强了并行处理能力。嵌入式微处理器的种类极为丰富,32位的嵌入式微处理器就有10多种。从图1.3中可以看出,全球仅有4%的计算机处理芯片用于通用计算机中,而更多的则是用于嵌入式系统中。
嵌入式微处理器内核按体系结构分类,可以分为以下几个系列。
ARM系列:只设计内核的英国公司(在1.3节会有详细介绍)。MIPS系列:只设计内核的美国公司。PowerPC:为IBM公司和Motorola公司共有的内核。68K/COLDFIRE:Motorola公司独有内核,有Motorola 68K等。各内核的特点及应用如表1.2所示。
2.外围设备
外围设备是指嵌入式系统中用于完成存储、通信、调试、显示等辅助功能的其他部件。目前常用的嵌入式外围设备按功能可以分为:存储设备(如RAM、SRAM、Flash等)、通信设备(如RS-232接口、SPI接口、以太网接口等)和显示设备(如显示屏等)。
常见的存储设备有RAM、SRAM、ROM、Flash等,这些存储设备在嵌入式系统开发过程中是非常重要的。
(1)RAM、SRAM、DRAM
根据掉电数据是否丢失,存储器可以分为RAM(随机存取存储器)和ROM(只读存储器),其中RAM的访问速度比较快,但掉电后数据会丢失,而ROM掉电后数据不会丢失。人们通常所说的内存即指系统中的RAM。
RAM又可分为SRAM(静态存储器)和DRAM(动态存储器)。
SRAM是利用双稳态触发器来保存信息的,只要不掉电,信息是不会丢失的。
DRAM是利用MOS(金属氧化物半导体)电容存储电荷来储存信息的,因此必须通过不停地给电容充电来维持信息。DRAM的成本、集成度、功耗等明显优于SRAM。
通常人们所说的SDRAM是DRAM的一种,它是同步动态存储器,利用单一的系统时钟同步所有的地址数据和控制信号。使用SDRAM不但能提高系统表现,还能简化设计、提供高速的数据传输,在嵌入式系统中经常使用。
(2)ROM、Flash
Flash是一种非易失闪存技术,由于它具有和ROM一样掉电数据不会丢失的特性。Flash主要分为NOR Flash和NAND Flash两种。
NOR Flash的特点是在芯片内执行(Execute In Place),这样应用程序可以直接在Flash内运行,不必再把代码读到系统RAM中。
NAND Flash能提供极高的单元密度,可以达到高存储密度,NAND读和写操作采用512字节的块,单元尺寸几乎是NOR器件的一半,同时由于生产过程很简单,大大降低了生产的成本。NAND Flash中每个块的最大擦写次数是100万次,是NOR Flash的10倍,这些都使得NAND Flash越来越受到人们的喜爱。
它们之间的关系如图1.4所示。
1.嵌入式Linux
嵌入式Linux(Embedded Linux)是标准Linux经过小型化裁剪处理之后的专用Linux操作系统,能够固化于容量只有几KB或者几MB的存储器芯片或者单片机中,适合于特定嵌入式应用场合。目前已经开发成功的嵌入式系统中,大约一半的系统使用嵌入式Linux。
这与它的父辈——Linux自身的优良特性是分不开的。
首先,Linux系统具有鲜明的层次结构且内核完全开放。Linux由很多体积小且性能高的微内核和系统组成。在内核代码完全开放的前提下,不同领域和不同层次的用户可以根据自己的应用需要很容易地对内核进行裁剪,在低成本的前提下,设计和开发出真正满足自己需要的嵌入式系统。
其次,Linux具有强大的网络支持功能。Linux诞生于因特网并具有UNIX的特性,这就保证了它支持所有标准因特网协议,并且可以利用Linux的网络协议栈开发出嵌入式TCP/IP网络协议栈。
再次,Linux具备一套完整的工具链,容易自行建立嵌入式系统的开发环境和交叉运行环境,并且可以跨越嵌入式系统开发中仿真工具的障碍。一般,嵌入式操作系统的程序调试和跟踪都是使用仿真器来实现的,而使用Linux系统做原型的时候就可以绕过这个障碍,直接使用内核调试器来进行操作系统的内核调试。
最后,Linux具有广泛的硬件支持特性。无论是RISC还是CISC,无论是32位还是64位处理器,Linux都能在其上运行。Linux最通常使用的微处理器是Intel X86芯片家族,但它也能运行于嵌入式处理器上,这意味着嵌入式Linux将具有更广泛的应用前景。
嵌入式Linux同Linux一样,具有低成本、多种硬件平台支持、优异的性能和良好的网络支持等优点。另外,为了更好地适合嵌入式领域的开发,嵌入式Linux还在Linux基础上做了部分改进,如将其内核结构由整体式结构改为微内核结构,并且还提高了系统的实时性。
嵌入式Linux同Linux一样,也有众多的版本,不同的版本针对不同的需要在内核等方面加入了特定的机制,嵌入式Linux的主要版本如表1.3所示。
为了不失一般性,本书所用的嵌入式Linux是标准内核裁剪的Linux,而不是上表中的任何一种。
2.VxWorks
VxWorks操作系统是美国WindRiver公司于1983年设计开发的一种嵌入式实时操作系统(RTOS),VxWorks具有以下优点。
实时性好。其系统本身的开销很小,进程调度、进程间通信、中断处理等系统公用程序精练而有效,使得它们产生的延迟很短。另外VxWorks提供的多任务机制中对任务的控制采用优先级抢占和轮转调度机制,充分保证了可靠的实时性。可靠性高,从而保证了用户工作环境的稳定。集成开发环境完备、强大,方便了用户的使用。但是,由于VxWorks源码不公开,它部分功能的更新(如网络功能模块)滞后。VxWorks的开发和使用都需要交高额的专利费,这就大大增加了用户开发的成本。
3.QNX
QNX由加拿大QNX软件系统有限公司开发,广泛应用于自动化、控制、机器人科学、电信、数据通信、航空航天、计算机网络系统、医疗仪器设备、交通运输、安全防卫系统、POS机、零售机等任务关键型应用领域。
QNX独特的微内核和消息传递结构使其运行和开发时非常方便。QNX具有非常好的伸缩性,用户可以把应用程序代码和QNX内核直接编译在一起,使之为简单的嵌入式应用生成单一的映像。
4.Windows CE
Windows CE是微软公司开发的一个开放的、可升级的32位嵌入式操作系统,是基于掌上型电脑类的电子设备操作系统。Windows CE的图形用户界面相当出色,Windows CE具有模块化、结构化、基于Win32应用程序接口以及与处理器无关等特点。
Windows CE继承了传统的Windows图形界面,用户在Windows CE平台上可以使用Windows 95/98上的编程工具(如Visual Basic、Visual C++等),使用同样的函数,使用同样的界面风格,Windows上的绝大多数应用软件只需简单修改和移植就可以在Windows CE平台上继续使用。但是Windows CE开发平台较为昂贵,在一定程度上限制了其发展。
5.Palm OS
Palm OS在PDA领域有着很大的用户群,一度占领PDA操作系统90%以上市场份额。Plam OS最明显的特点是精简,它的内核只有几千个字节,同时用户也可以方便地开发、定制,具有较强的可操作性。
6.C/OS
源代码公开,代码结构清晰、明了,注释详尽,组织有条理,可移植性好,可裁剪,系统短小精悍,是研究和学习实时操作系统的首选,但在工程应用领域使用较少。
嵌入式系统上的应用软件与通用操作系统上的应用软件相比有较大的区别,这也是由嵌入式的特殊要求所决定的,其特点如下所示。
1.嵌入式软件具有独特的实用性
嵌入式软件是为嵌入式系统服务的,这就要求它与外部硬件和设备联系紧密。嵌入式系统以应用为中心;而嵌入式软件则是应用系统,根据应用需求定向开发,面向产业、面向市场,需要特定的行业经验。每种嵌入式软件都有自己独特的应用环境和实用价值。
2.嵌入式软件具有灵活性和适用性
嵌入式软件通常可以认为是一种模块化软件,它能够非常方便、灵活地运用到各种嵌入式系统中,而不破坏或更改原有的系统特性和功能。
3.嵌入式软件资源有限性
由于嵌入式系统资源受限,因此对在其上的应用软件也有较高的要求,不仅要求小巧、不占用大量资源,而且要使用灵活、尽量优化配置,减小对系统的整体继承性,升级更换灵活方便。
相关资源:敏捷开发V1.0.pptx