嵌入式软件基础
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

第1章 嵌入式软件概述

随着计算机技术的发展,嵌入式系统的地位和作用显得越来越重要,嵌入式软件也形成了一个比较完整的体系。本章讨论嵌入式系统和嵌入式软件的一些基本概念。主要内容包括:什么是嵌入式系统、什么是嵌入式软件、嵌入式系统和嵌入式软件的特点、嵌入式软件的组成、嵌入式软件的发展过程、嵌入式软件的应用领域等。

1.1 嵌入式系统的概念与特点

在我们日常的生活和工作中,都会接触和使用到很多嵌入式系统。比如,我们所使用的手机中有一个嵌入式系统,用来听音乐的MP3播放器中也有一个嵌入式系统。各种自动化程度较高的工业设备也都是由嵌入式系统控制的。那么究竟都有哪些东西属于嵌入式系统的范畴呢?一个嵌入式系统又都有哪些特性呢?本节就来回答这些问题。

1.1.1 什么是嵌入式系统

嵌入式系统也叫嵌入式计算机,可对它做如下定义:嵌入式系统是指那些以应用为中心,以计算机技术为基础,为适应应用对功能、可靠性、成本、体积、功耗的严格要求,可对系统的软件和硬件进行配置的专用计算机系统。

嵌入式系统通常会带有一些专用的外部设备,而不像通用计算机那样一般只有显示器、键盘、鼠标、打印机等一些外部设备。这些外部设备是为完成某种特定的功能而设计的,如一些专用的机械装置。

嵌入式系统和嵌入式系统所控制的对象是两个不同的概念。嵌入式系统只是一台专用的计算机,而嵌入式系统所控制的对象则是一个有某种特定用途的设备或系统。在嵌入式系统所控制的对象规模很大时这两个概念不会发生混淆。例如,我们只会把控制电梯的专用计算机称为嵌入式系统,而不会把整部电梯称为嵌入式系统。但当嵌入式系统所控制的对象规模很小时,两者间的界限常常会变得模糊不清。例如,在一部手机中我们很难说清楚哪些部分应当属于控制手机的嵌入式系统的范围,而哪些部分又不属于其范围。手机中的通信部件,可以认为是嵌入式系统的外部设备,也可以认为是另外一个独立的通信系统的一部分。即使在某些情况下难以区分,我们也不能把嵌入式系统和嵌入式系统所控制的对象这两个概念混为一谈。

嵌入式系统的应用面非常之广,在数量上远远超过了通用计算机。例如,在一台现代化程度较高的汽车上就包含有很多个嵌入式系统。汽车的发动机、ABS、安全气囊、音响、导航器就都是由嵌入式系统控制的。通用计算机的外部设备中也离不开嵌入式系统,键盘、鼠标、软驱、光驱、硬盘、显示卡、显示器、网卡、调制解调器、声卡、打印机、扫描仪、USB集线器等设备中都包含有嵌入式系统。

如图1.1所示,嵌入式系统由中央处理器、存储器、外部接口与设备、软件4个部分所组成。

中央处理器是嵌入式系统的核心,与通用计算机不同,嵌入式系统的中央处理器必须解决提高集成度和降低功耗等一系列问题。在实际应用中,嵌入式系统的处理器可以分成嵌入式微处理器、微控制器、嵌入式DSP处理器、片上系统等不同的类型。

外部接口与设备是嵌入式系统与外部相连接的通道。在嵌入式系统中,常见的外部接口有RS-232、RS-422、RS-485、USB、IrDA、I2C、以太网、IEEE1394等。常见的外部设备有闪存卡之类的外部存储设备和单手键盘、输入笔、LCD之类的输入/输出设备。在很多嵌入式系统中还带有与系统用途紧密相关的专用外部接口与设备。

存储器用于存储系统中的程序代码和数据。在嵌入式系统中,存储器有3种类型:RAM、ROM及可在线写入非易失存储器。RAM家族中有两个成员:静态RAM(SRAM)和动态RAM(DRAM)。ROM家族中有3个成员:掩膜ROM、可编程ROM(PROM)、擦写可编程ROM(EPROM)。可在线写入非易失存储器的主要成员有:EEPROM、NVRAM(Non Volatile RAM)和闪存。可在线写入非易失存储器的特点是既能随意写入、擦除,又能在断电后保持数据不丢失。

嵌入式系统中的软件分为3个层次:操作系统、支撑软件和应用软件。其中操作系统和支撑软件是基础,应用软件则是最能体现整个嵌入式系统的特点和功能的部分。

图1.1 嵌入式系统的组成

1.1.2 嵌入式系统的特点

从嵌入式系统定义可以看到,嵌入式系统实际上是一种专用的计算机系统。与通用计算机系统相比,它主要有系统专用性强、系统实时性高、硬件与软件的互相依赖性强、采用专用的嵌入式CPU、多种技术间结合更加紧密、系统对用户透明、系统资源有限等一系列特点。

1. 系统专用性强

嵌入式系统是针对具体应用专门设计的计算机系统。系统中的硬件和软件与具体应用密切相关。应用需求略有变化,往往就需要对系统的硬件和软件进行较大更改。解决不同应用问题的嵌入式系统更是有很大的差别。

2. 系统实时性高

实时系统指对外部事件能在限定的时间内进行处理的系统。嵌入式系统中的相当一部分是实时系统,高实时性是这些系统的基本要求。

3. 硬件与软件的互相依赖性强

嵌入式系统的专用性决定了它的硬件与软件的相互依赖性很强。两者应共同进行设计,以求达到共同完成预定功能的目的,并满足性能、成本和可靠性方面的要求。

4. 采用专用的嵌入式CPU

嵌入式系统的CPU与通用计算机的CPU的最大不同之处是嵌入式系统的CPU一般是为某一特定用户集合专门设计的。它通常都具有功耗低、体积小、集成度高等特点,能够把许多在通用计算机上由板卡完成的功能集成在芯片内部,从而有利于嵌入式系统的小型化和增强系统的可移植能力。

5. 多种技术结合更加紧密

嵌入式系统是计算机技术、半导体技术、电子技术、机械技术与各个行业的具体应用相结合的产物。通用计算机系统虽然也离不开上述这些技术,但它们相互结合的紧密程度不如嵌入式系统。

6. 系统对用户透明

嵌入式系统的外形与通用计算机系统有很大的不同。它的输入装置可能不是键盘、鼠标之类的设备。有的嵌入式系统可能就没有用来输出的显示装置。用户可能根本不知道他所使用的设备中有一个嵌入式计算机系统存在。即使知道用户也不会去关心这个计算机系统的设计细节,更不会、也不能去改变它。

7. 系统资源有限

嵌入式系统为了达到结构紧凑、坚固可靠和尽可能降低系统成本的目的,导致其存储容量和CPU的处理速度都比较有限。

1.1.3 计算机技术的两大分支

计算机系统可分为通用计算机系统和嵌入式系统两类,与此相对应计算机软件也分成了通用软件和嵌入式软件两类。通用软件指运行于通用计算机系统之上的软件。嵌入式软件指运行于嵌入式计算机系统之上的软件。

通用计算机系统和嵌入式系统是现代计算机技术发展的两个分支。这两个分支有着不同的技术要求与技术发展方向。通用计算机系统的技术要求是高速的数值计算能力、海量的存储能力;技术发展方向是速度的无限提升,存储容量的无限扩大。而嵌入式计算机系统的技术要求则是对嵌入对象进行智能控制的能力;技术发展方向是提升满足与嵌入对象密切相关的性能要求与可靠性要求能力。

通用计算机系统和嵌入式系统两个技术分支的形成经历了一个逐渐演变的过程。在嵌入式系统发展的初期,这种态势并不明显。那时专门用于研发嵌入式系统及其技术的费用比较有限。嵌入式系统主要是应用在工业控制、军事等少数领域,使用量不多,创造的产值相对于通用计算机系统来说很少,离普通人的日常生活很远,对社会生产和生活产生的影响比较有限。因此在整体上难以与通用计算机系统相匹敌。

自从20世纪90年代中期以来,对嵌入式系统的研究与应用得到了长足的发展。专门用于研发嵌入式系统及其技术的费用已经相当可观。嵌入式系统在广泛的领域中得到了应用,使用数量已经远超过通用计算机系统,创造的产值也与通用计算机系统不相上下。这时它已不再仅仅与少数专业人员有联系,而是与普通人的日常生活息息相关。我们每天使用的手机、MP3播放器都与嵌入式系统密不可分。嵌入式系统已经对社会生产和生活产生了巨大的影响,在整体上已经完全可以与通用计算机系统相匹敌。

1.1.4 嵌入式系统的类型

与通用计算机系统相比,嵌入式系统的用途更加广泛,系统的形态也更加多样化。因此嵌入式系统的分类方法也是多样的。可以按照嵌入方式、嵌入程度、实时性和系统复杂程度等多种不同的准则进行分类。

根据嵌入式系统的嵌入方式,可以将嵌入式系统分为整机式嵌入的嵌入式系统、部件式嵌入的嵌入式系统、芯片式嵌入的嵌入式系统三类。

(1)整机式嵌入的嵌入式系统

整机式嵌入是将一个带有专用接口的计算机嵌入到一个系统中,使其成为这个系统的核心部分。一般来说,这种计算机系统的功能完整且强大,有较完善的人机界面和外部设备,作用是完成系统中的关键工作。例如,一些大型设备的控制计算机就属于这一类。

(2)部件式嵌入的嵌入式系统

部件式嵌入将计算机以部件(经常是一块板卡)的方式嵌入到一个系统中,用以完成某种处理功能。它使计算机部件与其他硬件耦合的更加紧密,功能更专一。例如,雷达的数字信号处理部件采用的就是这种嵌入方式。

(3)芯片式嵌入的嵌入式系统

芯片式嵌入是将一个具有完整计算机功能的芯片嵌入到一个设备中。这种芯片上具有存储器和完整的输入/输出接口,能完成专门的功能。例如,显示控制器、微波炉控制器等采用的就是这种嵌入方式。

根据嵌入式系统的嵌入程度,可以将嵌入式系统分为深度嵌入的嵌入式系统、中度嵌入的嵌入式系统、浅度嵌入的嵌入式系统三类。

(1)深度嵌入的嵌入式系统

深度嵌入的嵌入式系统在运行的过程中不与用户进行交互,用户也不易察觉系统中有计算机存在。这种嵌入式系统对于资源和性能有严格的要求。例如,控制汽车发动机的嵌入式计算机就属于深度嵌入的嵌入式系统。

(2)中度嵌入的嵌入式系统

中度嵌入的嵌入式系统在形态上与通用计算机已没有共同之处。在这类系统上没有键盘和鼠标等输入装置,也没有普通的显示器,但嵌入式系统的使用者可以明显地感觉到设备中有起控制作用的计算机部件。例如,数控机床中的嵌入式计算机就属于中度嵌入的嵌入式系统。

(3)浅度嵌入的嵌入式系统

浅度嵌入的嵌入式系统与通用计算机有很多相似之处,具有一定的通用性。其外表也很像一台通用计算机,在系统之中有类似于键盘或鼠标的输入装置和类似于显示屏幕的输出装置,具有人机交互能力。例如,PDA就是一种典型的浅度嵌入的嵌入式系统。

根据嵌入式系统是否为实时系统,可以将嵌入式系统分为实时嵌入式系统和非实时嵌入式系统两类。

(1)实时嵌入式系统

实时嵌入式系统指那些产生系统输出的时间对于系统来说至关重要的嵌入式系统。这种系统必须能对输入事件在限定的时间内做出处理。对于实时嵌入式系统来说,如果在一定的时间之内未能对某个输入及时地予以处理,就会导致系统失效,甚至全面崩溃。例如,控制汽车上的ABS的嵌入式系统就必须是一个实时系统。当汽车驾驶员刹车时,如果这个系统不能及时地响应,必然出现严重的交通事故。

(2)非实时嵌入式系统

非实时的嵌入式系统对输入事件是否能在限定的时间内予以处理要求不严格,甚至根本没有要求。

根据嵌入式系统的复杂程度,可以将嵌入式系统分为单微处理器嵌入式系统、组件式嵌入式系统、分布式嵌入式系统三类。

(1)单微处理器嵌入式系统

单微处理器嵌入式系统的规模一般很小,它所控制的对象比较简单。控制这些对象既不需要很强的处理能力,也不需要复杂的算法,因此控制部件可以采用较低档的处理器和存储器,价格低廉。例如,MP3播放器和PDA中的嵌入式系统都属于单微处理器嵌入式系统。

(2)组件式嵌入式系统

组件式嵌入式系统一般处于一个规模很大的系统之中。在这个系统中起控制作用的计算机是整个系统的一个局部组件。它输入系统传感器收集到的数据,并进行处理,然后输出用于对系统进行控制的信号,或将输出传递给系统的操作人员。在组件式嵌入式系统中,计算机装置处理能力一般比较强,而且还经常用到一些比较复杂的控制算法和数据库等一些功能很强的支撑软件。例如,电话交换机、电梯、数据采集系统、医疗监视系统中的嵌入式计算机就都属于组件式嵌入式系统。

(3)分布式嵌入式系统

分布式嵌入式系统由多个各自都具有处理能力的嵌入式计算机组成,每个嵌入式计算机控制一个独立的子系统或设备。各个嵌入式计算机用通信线路连接起来,连接方式可以是通过高速线路所构成的紧耦合型,或通过低速线路所构成的松耦合型。例如,自动仓储系统就需要由一个分布式嵌入式系统来控制。

1.1.5 嵌入式系统的处理器

嵌入式系统的核心部件是各种类型的处理器。现在几乎每个半导体制造商都在生产用于嵌入式系统的处理器。据不完全统计,用于嵌入式系统的处理器已经超过了1000种。比较流行的也有30几个系列。其中,8051系列的处理器使用最多,在数量上几乎占到了一半。根据目前的现状,可将使用在嵌入式系统上的处理器分成嵌入式微处理器、微控制器、嵌入式DSP处理器、片上系统4类。

1. 嵌入式微处理器

嵌入式微处理器(Embedded Micro Processor Unit,EMPU)由通用计算机的CPU演变而来,但与通用计算机的CPU所不同的是,它有体积小、功耗低、重量轻、成本低的特点。嵌入式微处理器和ROM、RAM、总线接口、外设接口等部件安装在一块电路板上。这种电路板只保留了和嵌入式应用有关的功能,而去掉了那些不必要的部分,这样可以大幅度缩小系统的体积和功耗。

目前,嵌入式微处理器主要有ARM系列、MIPS系列、XScale系列和PowerPC系列等。

ARM的意思是Advanced RISC Machine。可以看出ARM系列是一种RISC结构的微处理器。不过从严格意义上讲,ARM并不是一种微处理器芯片,而是一种微处理器体系架构技术。这种技术不涉及芯片的生产工艺。ARM的技术拥有权属于ARM公司,但ARM公司本身并不生产芯片,而是将技术授权给其他公司进行生产。在ARM的内核中有多个可供选择的功能模块。被授权的公司在生产ARM系列微处理器芯片时,可以采用不同的半导体技术,并针对不同的应用需求配置和选择芯片中所包含的功能模块。目前全世界有几十家大的半导体公司都在使用ARM公司的技术授权,生产基于ARM架构的微处理器芯片。

早期的ARM系列芯片(包括ARM1、ARM2、RAM3等)都是准32位的微处理器,其数据总线是32位的,但地址总线却是26位的。到ARM6,才成为了完全的32位微处理器。从ARM7开始,ARM系列的芯片开始支持DPS模块,所以可以认为ARM是一种嵌入式DSP处理器。目前经常使用的ARM系列芯片有ARM7、ARM9和ARM10。

MIPS系列芯片也是一种RISC结构的微处理器。MIPS(Microprocessor without Interlocked Piped Stages)的意思是“无内部互锁流水级的微处理器”,它的研发者是MIPS公司。该公司成立于1984年,早期主要的方向是研发用于图形工作站的处理器芯片,后来逐步转向了研发嵌入式系统处理器芯片。MIPS公司的芯片主要有两个架构体系:一个是适用于通用计算机的架构体系,如MIPS I、MIPS II、MIPS III、MIPS IV、MIPS V等;另一个是适用于嵌入式计算机的架构体系,如MIPS16、MIPS32到MIPS64等。除了MIPS公司之外,其他一些公司也在研发和生产基于MIPS架构的处理器芯片。

XScale是英特尔公司推出的一个用于嵌入式系统的处理器系列。XScale系列处理器采用ARM体系架构,相当于ARM体系结构处理器芯片的一套实际解决方案。到目前为止,英特尔公司已经推出了PXA25x、PXA26x和PXA27x三代XScale系列嵌入式处理器。

PowerPC(Performance Optimized With Enhanced RISC)是IBM公司、Apple公司和摩托罗拉公司联合研发的一个处理器系列。按照PowerPC的体系架构规范,PowerPC系列是一种64位的处理器。其体系架构规范还定义了一个32位的子集,而且目前常用的PowerPC处理器也都是32位的(只有少数PowerPC处理器是64位的,如IBM RS/6000小型机和IBM P系列服务器上使用的处理器)。PowerPC系列处理器有PowerPC 400、PowerPC 600、PowerPC 700、PowerPC 900等一些子系列。它有非常广的使用范围,从小型机、高端服务器到嵌入式系统都在使用PowerPC系列的处理器做CPU。其中PowerPC 400系列适用于嵌入式系统。

2. 微控制器

微控制器(Micro Controller Unit,MCU)又称单片机,顾名思义,就是将整个计算机系统集成到一块芯片中。微控制器一般以处理器为核心,芯片内部集成有ROM/EPROM、RAM、总线逻辑、定时/计数器、看门狗计数器、串行口、A/D、D/A、闪存、EEPROM等各种必要功能逻辑、存储器和外设接口。

与嵌入式微处理器相比,微控制器的最大特点是单片化,从而使体积减小,功耗和成本下降,可靠性提高。它上面外设接口资源一般比较丰富,适合用于控制方面,因此称为微控制器。微控制器是目前在嵌入式系统中使用最多的处理器,有很多个系列,生产微控制器的厂商也很多。为适应不同的应用需求,一个系列的微控制器一般都有多个衍生产品。每个衍生产品的内核都是一样的,不同的是存储器和外设接口的配置及封装。这样可以使微控制器的功能最大限度地和应用需求相匹配,从而减少功耗和降低成本。

典型的微控制器产品有以下一些:

● 摩托罗拉公司:8位机M6805、M68HC05,16位机M68HC16,32位机M68300系列。

● 爱普生公司:4位机SMC62系列、SMC63系列、SMC60系列,8位机SMC88系列,32位机S1C33系列。

● Toshiba公司:4位机TMP47C系列,8位机870系列、90系列。

● 英特尔公司:8位机MCS-51系列,16位机MCS-96系列。

● 美国国家半导体公司:8位机COP8。

3. 嵌入式DSP处理器

DSP(Digital Signal Processor)是一种专门用于信号处理的处理器。这种处理器对系统结构和指令进行了特殊设计,使它更适合于执行DSP算法,编译的效率和指令执行的速度也较高。

DSP算法的理论在20世纪70年代就已基本成熟,但由于那时专门的DSP处理器还未出现,所以只能在通用的微处理器上实现DSP算法,因而效率很低。1982年世界上诞生了第一枚DSP处理器。在信号处理方面,它的运算速度比一般的处理器高出几十倍。目前DSP处理器在嵌入式系统中的应用已很广泛。例如,进行数字滤波和快速傅里叶变换(Fast Fourier Transform,FFT)等。

用于嵌入式系统的DSP处理器有两个发展来源:一是对DSP处理器进行单片化,增加片上外设接口,使之成为嵌入式DSP处理器。二是在通用单片机或SOC上增加DSP协处理器,使之成为嵌入式DSP处理器。

嵌入式DSP处理器的代表性产品是德州仪器公司的TMS320系列和摩托罗拉公司的DSP56000系列。TMS320系列又分为若干子系列,包括C2000系列,经常用于移动通信设备的C5000系列,以及性能更高的C6000和C8000系列。DSP56000系列则分为DSP56000、DSP56100、DSP56200和DSP56300等几个不同的子系列。

4. 片上系统

片上系统(System On Chip,SOC)是一种在一块硅片上实现一个复杂系统的芯片。在一个片上系统中可以集成许多功能单元,比如集成微处理器核心、USB、TCP/IP、GPRS、GSM、IEEE 1394、蓝牙接口等单元。以往这些单元都是做成一个个独立的芯片,比如,一个带蓝牙接口的系统,就是将蓝牙接口芯片和嵌入式微处理芯片器做在一个电路板上。这种方法会耗费许多的电路空间,而且经济成本也比较高。若是将嵌入式微处理器与蓝牙接口单元做在同一个芯片之中,构成一个片上系统,就会大幅度地缩小整个系统所占的体积和降低系统的复杂度。在大量生产的情况之下,生产成本也会远低于原本需要使用几个芯片组成的电路系统。

片上系统可以分为通用和专用两类。通用类产品有摩托罗拉公司的M-Core,以及基于ARM7、ARM9微处理器核心开发的某些芯片。专用类片上系统一般是针对于某种特定需求而设计的,一般的用户对它们了解较少。