- 嵌入式系统及其开发应用
- 沈连丰 许波 夏玮玮等编著
- 10字
- 2020-08-27 13:29:51
第1章 嵌入式系统概述
1.1 嵌入式系统的定义
在信息技术和网络技术高速发展的后PC(Post-PC)时代,嵌入式系统(ES,Embed System)已经广泛地渗透到科学研究、工程设计、军事技术等众多领域。随着各种嵌入式产品的开发和推广,嵌入式技术和人们的生活将会越来越密切。在 PC 时代,可能有人从来没有接触过计算机;但是在Post-PC时代,他就不可能不接触嵌入式系统,因为嵌入式系统存在于生活的方方面面,从洗衣机、电冰箱等家用电器,到自行车、汽车等交通工具,以及办公室里的几乎每一个电气设备,其中可能都有嵌入式系统,或者都属于嵌入式技术开发和改造的对象。
嵌入式系统是指以应用为中心,以计算机技术为基础,并且软、硬件可裁剪,适用于应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。它一般由嵌入式微处理器、外围硬件设备、嵌入式操作系统及用户的应用程序4部分组成,用于实现对其他设备的控制、监视或管理等功能。
嵌入式系统一般指非 PC 系统,它包括硬件和软件两部分。硬件包括处理器(或微处理器)、存储器、外设器件、I/O端口和图形控制器等。软件部分包括操作系统(OS,Operation System)和应用程序编程。操作系统控制着应用程序编程与硬件的交互作用,完成实时和多任务操作;应用程序控制着系统的运作和行为,完成各种设计功能。有时,设计人员会把这两种软件组合在一起。
实际上,嵌入式系统这个概念很早就已经存在了。在通信方面,它在1960年就被用于对电话交换的控制,当时称之为存储式程序控制系统(SPCS,Stored Program Control System)。那时,计算机一词还不是很普遍,而存储式程序主要是指用于存储程序及日常信息的内存部分,用它来存储逻辑数据,而不是将其写入硬盘。那时也还没有出现操作系统的概念,对每一个应用都需要提供整个计算机的完整设计。后来微处理器出现了,利用它组成一个基于由总线连接起来的计算机硬件体系结构,并且提供了一个通用功能的编程模型,从而简化了编程。
嵌入式系统的概念是在1970年左右提出的。当时,大部分软件都是由汇编语言完成的,而且还只能用于某一种固定的微处理器,一旦该微处理器过时,这种嵌入式系统就没有用了,对新的微处理器必须使用新的汇编语言。
当时的嵌入式系统大部分还没有使用操作系统,它们只用于实现某个控制功能,通常仅使用一个简单的循环控制来处理外界的控制请求。这对一些简单的系统而言是足够的,但是当系统越来越复杂、使用范围越来越广泛的时候,没有操作系统就成为一个不能容忍的缺点,因为人们不可能为了添加一项新功能而再从头开始设计。
C语言的出现使得操作系统的开发变得较为简单,人们可以利用它很快写出一个小型的、稳定的操作系统。众所周知,C语言的作者Dennis M. Ritchie 和Brian W. Kernighan利用C语言写出了著名的UNIX操作系统,直接影响了近几十年计算机业的发展,同时对开发嵌入式系统来说,在效率和速度上都提高了很多。
从20世纪80年代开始,出现了各种各样的商用嵌入式操作系统,这些操作系统大部分都是为专用系统开发的,从而形成了现在商用嵌入式操作系统百家争鸣的局面,如VxWorks、pSOS、Neculeus和Windows CE等。
随着网络的广泛应用,嵌入式系统能够使用网络特别是因特网(Internet)已成为基本要求,把网络的协议栈(PS,Protocol Stack)移植到嵌入式系统中极有意义。利用嵌入式系统中的网络功能,可以实现所谓信息电器这一可能取代PC而在后PC时代占据市场主体的商品。简单比较可知,如果在前面所说的那种采用循环控制的嵌入式系统中加入网络协议栈,其复杂度将会呈指数级增长,而如果在嵌入式操作系统中增加网络协议栈则要方便得多,它使各种网络应用程序在不同平台间移植变得容易。
1.2 嵌入式系统的基本组成
与普通的计算机系统一样,嵌入式系统也是由硬件和软件两大部分组成的。前者是整个系统的物理基础,它提供软件运行平台和通信接口;后者实际控制系统的运行。
嵌入式系统的硬件可分成三部分:核心处理器、外围电路和外部设备,如图1.1所示。
图1.1 嵌入式系统的硬件组成
图1.1中,CPU是嵌入式系统的核心处理器,又称为嵌入式微处理器,负责控制整个嵌入式系统的执行;外围电路包括嵌入式系统的内存、I/O端口、复位电路、ADC/DAC(模数转换器/数模转换器)和电源等,与核心处理器一起构成一个完整的嵌入式目标系统,其中, SRAM(Static Random Access Memory)为静态随机存储器,DRAM(Dynamic Random Access Memory)为动态随机存储器,Flash为闪存器;外部设备指嵌入式系统与真实环境交互的各种设备,包括通用串行总线USB(Universal Serial Bus)、存储设备、鼠标、键盘、液晶显示器(LCD,Liquid Crystal Display)、红外线数据传输(IrDA,Infrared Data Association)和打印设备等。
微处理器是嵌入式系统硬件的核心,它一般具备以下4个特点。
① 对实时多任务有很强的支持能力,能完成多任务并且有较短的中断响应时间,从而使内部的代码和实时内核的执行时间减少到最低限度。
② 具有很强的存储区保护功能。这是由于嵌入式系统的软件结构已模块化,为了避免在软件模块之间出现错误的交叉作用,需要设计强大的存储区保护功能,同时也有利于软件诊断。
③ 可扩展的结构。
④ 功耗很低,尤其用于便携式无线及移动设备中靠电池供电的嵌入式系统更是如此,很多只允许mW量级甚至μW量级。
嵌入式系统的软件可分成设备驱动接口(DDI,Device Driver Interface)、实时操作系统(RTOS,Real Time Operation System)、可编程应用接口(API,Application Programmable Interface)和应用软件4个层次。其中,DDI负责嵌入式系统与外部设备的信息交互;RTOS分成基本和扩展两部分,前者是操作系统的核心,负责整个系统的任务调度,存储分配、时钟管理和中断管理,提供文件、图形用户界面(GUI,Graphics User Interface)等基本服务,后者是为用户提供操作系统的扩展功能,包括网络、数据库等;API也称为编程中间件、应用中间软件,是为编制应用程序提供的各种编程接口库,它针对不同应用领域、不同的安全要求分别构建,从而减轻应用开发者的负担;应用软件是针对不同应用而由开发者自己编写的软件。
1.3 嵌入式系统的特点
从前面简单的介绍可以看出,嵌入式系统与通用型计算机系统相比具有以下特点。
① 嵌入式系统通常含有面向特定应用的嵌入式 CPU。与通用型的最大不同就是,嵌入式CPU大多工作在为特定用户群设计的系统中,通常具有低功耗、体积小、集成度高等特点,能够把通用CPU中许多由板卡完成的任务集成在芯片内部,从而有利于系统设计的小型化,移动能力大大增强,跟网络的耦合也越来越紧密。
② 嵌入式系统是将先进的计算机技术、半导体技术和电子技术与各个行业的具体应用相结合的产物。
③ 嵌入式系统的硬件和软件都必须高效率地设计,量体裁衣、去除冗余,力争在同样的硅片面积上实现更多的功能和更高的性能。
④ 嵌入式系统和具体应用有机地结合在一起,它的升级换代也是和具体产品同步进行的,因此嵌入式系统产品一旦进入市场,将具有较长的生命周期。
⑤ 为了提高执行速度和系统可靠性,嵌入式系统中的软件一般都固化在存储器芯片或单片机中,而不是存储于磁盘等载体中。
⑥ 嵌入式系统本身不具备自举开发能力,设计完成以后,用户通常不能对其中的程序功能进行修改,必须有一套开发工具和环境才能进行开发。
下面再从嵌入式系统的运行环境和应用场合等方面来看它的特点。
1. 嵌入式处理器
嵌入式处理器可以分为三类:嵌入式微处理器(MPU,Micro Processing Unit)、嵌入式微控制器(MCU,Micro Control Unit)和嵌入式数字信号处理器(DSP,Digital Signal Processor)。
嵌入式微处理器就是与通用计算机的微处理器对应的CPU。在应用中,一般将微处理器装配在专门设计的电路板上,在母板上只保留和嵌入式相关的功能即可,这样可以满足嵌入式系统体积小和功耗低的要求。目前的嵌入式处理器主要包括:PowerPC、Motorola 68000、ARM系列等。
嵌入式微控制器又称为单片机,它将CPU、存储器(少量的RAM、ROM或两者都有)和其他外设封装在同一片集成电路里,如最常见的8051系列。
嵌入式DSP专门用来对离散时间信号进行极快的处理计算,提高编译效率和执行速度,在数字滤波、快速傅里叶变换(FFT,Fast Fourier Transfer)、功率谱分析、图像处理和分析等领域,DSP正在大量进入嵌入式市场。
2. 微内核结构
大多数操作系统至少被划分为内核层和应用层两个层次。内核只提供基本的功能,如建立和管理进程、提供文件系统、管理设备等,这些功能以系统调用方式提供给用户。一些桌面操作系统,如 Windows、Linux 等,将许多功能引入内核中,操作系统的内核变得越来越大。内核变大使得占用的资源增多,裁剪起来很麻烦。大多数嵌入式操作系统采用了微内核结构,内核只提供基本的功能,例如,任务的调度、任务之间的通信与同步、内存管理、时钟管理等。其他的应用组件,例如,网络功能、文件系统、GUI系统等均工作于用户态,以系统进程或函数调用的方式工作。因而系统都是可裁剪的,用户可以根据自己的需要选用相应的组件。
3. 任务调度
在嵌入式系统中,任务即进程或线程。大多数的嵌入式操作系统支持多任务。多任务运行实际是靠CPU在多个任务之间切换、调度实现的。每个任务都有其优先级,不同任务的优先级可能相同也可能不同。任务的调度有三种方式:可抢占式、不可抢占式和时间片轮转。不可抢占式调度是指一个任务一旦获得CPU就独占其运行,除非由于某种原因使它决定放弃CPU的使用权;可抢占式调度是基于任务优先级的,当前正在运行的任务可以随时让位给优先级更高的处于就绪态的其他任务;当两个或两个以上任务有同样的优先级时,不同任务轮转使用 CPU,直到系统分配的 CPU 时间片用完,这就是时间片轮转调度。目前,大多数嵌入式操作系统对不同优先级的任务采用基于优先级的可抢占式调度法,对相同优先级的任务则采用时间片轮转调度法。
4. 硬实时和软实时
有些嵌入式系统对时间的要求较高,称为实时系统。实时有两种类型:硬实时和软实时。软实时系统并不要求限定某一任务必须在一定的时间内完成,只要求各任务运行得越快越好;硬实时系统对响应时间有严格的要求,一旦系统响应时间不能满足,就可能引起系统崩溃或致命的错误,一般在工业控制中应用较多。
5. 内存管理
针对有内存管理单元(MMU,Memory Management Unit)的处理器而设计的一些桌面操作系统,如Windows、Linux,使用了虚拟存储器的概念。虚拟内存地址被送到MMU。在这里,虚拟地址被映射为物理地址,实际存储器被分割为相同大小的页面,采用分页的方式载入进程。一个程序在运行之前,没有必要全部装入内存,而是仅将那些当前要运行的部分页面装入内存运行。
大多数嵌入式系统针对没有MMU的处理器设计,不能使用处理器的虚拟内存管理技术,而是采用实存储器管理策略,因此对于内存的访问是直接的,它对地址的访问不需要经过MMU,而是直接送到地址线上输出,所有程序中访问的地址都是实际的物理地址。而且,大多数嵌入式操作系统对内存空间没有保护,各个进程实际上共享一个运行空间。一个进程在执行前,系统必须为它分配足够的连续地址空间,然后全部载入主存储器的连续空间。
由此可见,对于没有MMU的嵌入式系统,开发人员不得不参与系统的内存管理。从编译内核开始,开发人员必须告诉系统这块开发板到底拥有多少内存;在开发应用程序时,必须考虑内存的分配情况并关注应用程序需要运行空间的大小。另外,由于采用实存储器管理策略,用户程序同内核以及其他用户程序在一个地址空间中,程序开发时要保证不侵犯其他程序的地址空间,以使程序不至于破坏系统的正常工作,或导致其他程序的运行异常。因此,嵌入式系统的开发人员对软件中的一些内存操作要格外小心。
6. 内核加载方式
嵌入式操作系统内核可以在Flash上直接运行,也可以加载到内存中运行。Flash的运行方式是,把内核的可执行文件烧写到Flash上,系统启动时从Flash的某个地址开始执行。这是很多嵌入式系统所采用的方法。内核加载方式是,把内核的压缩文件存放在 Flash 上,系统启动时读取压缩文件并在内存(RAM)里解压,然后开始执行。这种方式相对复杂一些,但是运行速度快,因为RAM的存取速率比Flash的高。
根据嵌入式系统的内存管理机制,嵌入式操作系统对用户程序一般采用静态链接的形式。在嵌入式系统中,应用程序和操作系统的内核代码经过编译、链接生成一个二进制文件来运行。
1.4 嵌入式系统的主要应用领域
后PC时代的到来,使得人们越来越多地接触到嵌入式产品。例如,手机、商务通(PDA, Personal Digital Assistant,又称为个人数字助理)均属于手持的嵌入式产品,VCD机、机顶盒等也属于嵌入式产品,而像全球定位系统(GPS,Global Position System)、数控机床、网络冰箱等同样也采用嵌入式系统。形式多样的数字化设备正努力把 Internet 连接到人们生活的各个角落,仅就我国内需来说,数字化设备的潜在消费数量将是以亿台为单位的。嵌入式软件是数字化产品的核心。如果说 PC 的发展带动了整个桌面软件的发展,那么数字化产品的广泛普及必将为嵌入式软件产业的蓬勃发展提供无穷的推动力。
在未来社会,使用嵌入式系统的情形会越来越多。人可以不接触计算机,但不可能不接触嵌入式设备。嵌入式系统可能存在于人们生活的各个角落:在温馨的家中可以用一个嵌入式控制器来管理家里的所有家电,控制家庭和外界网络的连接;出门旅行的时候,嵌入式智能系统利用GPS判断用户的具体位置,告知用户走哪条路比较方便;如果用户生病住了院,医院的仪器设备里大多数都有嵌入式系统,它们使得诊断更准确,让用户康复更迅速。
中国有世界上最大的家用电子产品消费市场,彩电、VCD机等拥有量都居世界第一。随着消费结构的改变,人们对家电的灵活性和可控性提出了更高的要求,这些只能通过家电的数字化和网络化来实现。随着电话通信费用和通信类电子产品的价格不断降低,PDA结合数字手机将成为今后个人数据通信和事务处理的最佳选择之一。同时,现代化的医疗、测控仪器和机电产品也需要有专用的嵌入式系统的支持。这些需求都极大地刺激了嵌入式系统的发展和产业化的进程。
嵌入式系统将会在如下领域迅速得到应用。
1. 家庭信息化网络
家庭信息化网络在很大程度上是针对信息家电的,包括所有能提供信息服务或通过网络系统交互信息的消费类电子产品,能够提供诸如网络浏览、视频点播、文字处理、电子邮件、个人事务管理等信息服务功能,同时简单易用、价格低廉、维护简便。
家用电器向数字化和网络化发展的趋势越来越明显。电视机、冰箱、微波炉、电话等都将装备上嵌入式系统,并通过家庭控制中心与 Internet连接,转变为智能网络家电,还可以实现远程医疗、远程教育等。目前,智能小区的发展为机顶盒打开了市场,机顶盒将成为网络终端,它不仅可以使现有的模拟电视机接收数字电视节目,而且可以上网、炒股、点播电影、实现交互式电视等,依靠网络服务器提供各种服务。据估计,信息家电(包括网络冰箱、网络空调、家庭网关、数字机顶盒等)未来10年间总量可达到数亿台,成为国民经济新的增长点。信息家电市场的成倍增长将带动嵌入式操作系统和设备的发展,其市场十分巨大。
2. 移动计算设备
手机、PDA、掌上电脑等各种移动设备具有移动计算功能已成为一种趋势。中国的手机用户数已达全球第一,而掌上电脑或 PDA 由于易于使用、携带方便、价格便宜,预计未来几年将得到快速发展。PDA与手机相融合的趋势已经越来越明显,人们将越来越习惯于用掌上电脑或PDA上网,从而“将网络随身携带”。
将手机、掌上电脑和 PDA 进行整合,为移动计算设备提供语音、数据、图像等多媒体传输功能,市场潜力巨大,技术上将是大势所趋。
3. 网络设备
网络设备包括路由器(Router)、交换机(Switching)、网络服务器(Web Server)、网络接入点(AP,Access Point)等。基于嵌入式Linux操作系统的网络设备价格低廉,将为企业提供更为廉价的网络方案。美国贝尔实验室预测,在这阶段“将会产生比 PC 时代多成百上千倍的瘦服务器和超级嵌入式瘦服务器,这些瘦服务器将与我们这个世界任意物理信息、生物信息相连接,通过Internet自动、实时、方便、简单地提供给需要这些信息的对象”。这里所说的瘦服务器实际上就是嵌入式设备。因此,设计和制造嵌入式瘦服务器、嵌入式网关和嵌入式因特网路由器等已成为嵌入式Internet时代的关键和核心技术。
4. 工业控制、仿真、医疗仪器等
工业、医疗卫生、国防等各部门对智能控制的需求不断增长,同时也对嵌入式微处理器的运算速度、可扩充能力、系统可靠性、功耗和集成度等方面提出了更高的要求。为了适应各方面的需求,嵌入式微处理器的体系结构一般采用一个精简指令集计算机(RISC,Reduced Instruction Set Computer),数据位数从最初的4位、8位到现在广泛使用的16位、32位和64位,寻址空间从64KB(千字节,Kilo-Byte)到16MB(兆字节,Mega-Byte)甚至更大,处理速度从0.1MIPS(Million Instructions Per Second,每秒百万条指令)到2000MIPS,常用封装从8个引脚到144个引脚,功耗也有了明显降低,集成度得到进一步提高。
工业生产需要完成智能化、数字化改造和实施自动控制,而工控、仿真、数据采集、军用领域一般都要求操作系统支持实时工作,这为嵌入式系统提供了无穷的应用空间。
随着信息技术的发展,数字化产品空前繁荣。嵌入式软件已经成为数字化产品的设计创新和软件增值的关键因素,是未来市场竞争力的重要体现。由于数字化产品具备硬件平台多样性和应用个性化的特点,因此嵌入式软件呈现出一种高度细分的市场格局,任何产品都很难垄断整个市场,这为我国的软件产业提供了一个难得的发展机遇。嵌入式支撑软件是嵌入式系统的基础,而与嵌入式操作系统紧密联系的开发调试工具是嵌入式支撑软件的核心,它的集成度和可用性将直接关系到嵌入式系统的开发效率。目前,嵌入式系统工程师队伍迅速扩大,与他们紧密相伴的嵌入式系统开发工具的发展潜力十分巨大。数字化产品要求强大的网络和多媒体处理能力、易用的界面和丰富的应用功能,无线通信技术的迅速发展使更多的信息设备采用无线传输方式,同时,Java技术的发展,对开发相关无线通信软件起到了推动作用,因此嵌入式浏览器、嵌入式多媒体套件、嵌入式GUI、嵌入式应用套件、嵌入式Java和嵌入式无线通信软件成为嵌入式支撑软件的基本要素,能够组合应用或作为产品单独销售。另外,嵌入式系统的发展也将带来一个繁荣的服务培训市场。
从国际上看,嵌入式软件市场约占整个软件市场的10%。虽然我国目前的嵌入式软件市场刚刚起步,但巨大的国内软件产品需求和极具发展潜力的国际软件市场,将给我国软件产业的跨越式发展带来重大机遇。考虑到未来几年数字化产品的快速普及将促使嵌入式软件需求进一步增大,有理由相信,嵌入式软件市场的增长率将超过总软件市场的平均增长率。
1.5 嵌入式系统的发展趋势
以信息家电为代表的互联网时代的嵌入式产品,不仅为嵌入式市场展现了美好前景,注入了新的生命,同时也对嵌入式系统技术,特别是软件技术提出了新的挑战。面对激烈的市场竞争,以下几点应当特别引起重视。
1. 嵌入式应用软件的开发需要强大的开发工具和操作系统的支持
随着 Internet 技术的成熟和传输带宽的提高,网上提供的信息日趋丰富、应用项目越来越多,手机、固定电话甚至冰箱、微波炉等都成了嵌入式电子设备,其功能不再单一,电气结构事实上更为复杂。为了满足功能升级,在设计上一方面采用功能更加强大的嵌入式处理器(如32位、64位RISC芯片)或DSP来增强处理能力,另一方面还采用实时多任务编程技术和交叉开发工具技术等来控制功能的复杂性,简化应用程序设计、保障软件质量和缩短开发周期。
目前,已进入我国市场的国外的商品化嵌入式实时操作系统主要有:WindRiver, Microsoft,QNX 和 Nuclear 等。我国也有了自主开发的嵌入式系统软件产品,如科银公司(CoreTek)的嵌入式软件开发平台DeltaSystem,它不仅包括DeltaCore嵌入式实时操作系统,而且还包括 LamdaTools 交叉开发工具套件、测试工具、应用组件等;此外,中国科学院也推出了Hopen嵌入式操作系统。
2. 连网成为必然趋势
为适应嵌入式分布处理结构和上网应用需求,对嵌入式系统要求配备标准的一种或多种网络通信接口。针对外部连网要求,嵌入设备必须配有通信接口,相应地,需要 TCP/IP 协议簇软件的支持;由于家用电器相互关联(如防盗报警、灯光能源控制、影视设备和信息终端交换信息)及实验现场仪器的协调工作等要求,新一代嵌入式设备还需具备IEEE 1394、USB、蓝牙(Bluetooth)、IrDA等通信接口,同时也需要提供相应的通信组网协议软件和物理层驱动软件。为了支持应用软件的特定编程模式,如Web或无线Web编程模式,还需要相应的浏览器,如超文本置标语言(HTML,HyperText Markup Language)、无线置标语言(WML,Wireless Makeup language)等。
3. 支持小型电子设备实现小尺寸、微功耗和低成本
为满足这种特性,要求嵌入式产品相应地降低处理器的性能,限制内存容量和复用接口芯片,这就相应地提高了对嵌入式软件设计的技术要求。例如,选用最佳的编程模型和不断改进算法,采用Java编程模式,优化编译器性能等。因此,既要求软件人员有丰富的经验,更需要发展先进的嵌入式软件技术,如Java、Web和无线应用协议(WAP,Wireless Application Protocol)等。
4. 提供精巧的多媒体人机界面
嵌入式设备之所以为亿万用户所接受,重要因素之一是它们与使用者之间的亲和力。人们与信息终端交互采用以GUI屏幕为中心的多媒体界面,手写文字输入、语音拨号上网、收发电子邮件及彩色图形、图像已取得初步成效。目前,一些先进的 PDA 在显示屏幕上已实现汉字写入、短消息语音发布,但离掌上机语言同声翻译还有很大距离,因此尚有巨大的发展空间。
思考题
1. 嵌入式系统的定义是什么?
2. 嵌入式系统的硬件一般由哪几个部分组成?微处理器的特点是什么?嵌入式系统的软件一般又由哪几个部分组成?
3. 嵌入式系统的特点是什么?它与通用微型计算机比较有什么区别?
4. 嵌入式系统的主要应用领域有哪些?请举出几个身边的嵌入式系统应用实例。
5. 嵌入式系统的发展趋势是什么?