嵌入式系统简介
嵌入式系统(Embedded system)是以嵌入式处理器为核心部件的,用于执行独立功能的专用计算机系统。IEEE(国际电气和电子工程师协会)对嵌入式系统的定义是“用于控制、监视或者辅助装备、机器和设备运行的装置”。它由包括微处理器、定时器、微控制器、存储器、传感器、网卡等一系列微电子芯片与器件,和嵌入在存储器中的微型操作系统、控制应用软件组成,共同实现诸如实时控制、监视、管理、移动计算、数据处理等各种自动化处理任务。嵌入式系统以微电子技术、控制技术、计算机技术和通信技术为基础,强调硬件、软件的协同性与整合性,软件与硬件可剪裁性,以满足系统对功能、成本、体积和功耗等要求,嵌入式系统若以控制为目标,亦称嵌入式控制系统。
嵌入式系统资料
中文名:嵌入式系统
外文名:Embedded system
定义
嵌入式系统是以应用为中心,以现代计算机技术为基础,能够根据用户需求(功能、可靠性、成本、体积、功耗、环境等灵活裁剪软硬件模块的专用计算机系统。
要点概括:
以应用为中心:强调嵌入式系统的目标是满足用户的特定需求。就绝大多数完整的嵌入式系统而言,用户打开电源即可直接享用其功能,无需二次开发或仅需少量配置操作。
专用性:嵌入式系统的应用场合大多对可靠性、实时性有较高要求,这就决定了服务于特定应用的专用系统是嵌入式系统的主流模式,它并不强调系统的通用性和可扩展。这种专用性通常也导致嵌入式系统是一个软硬件紧密集成的最终系统,因为这样才能更有效地提高整个系统的可靠性并降低成本,并使之具有更好的用户体验。
以现代计算机技术为核心:嵌入式系统的最基本支撑技术,大致上包括集成电路设计技术、系统结构技术、传感与检测技术、嵌入式操作系统和实时操作系统技术、资源受限系统的高可靠软件开发技术、系统形式化规范与验证技术、通信技术、低功耗技术、特定应用领域的数据分析、信号处理和控制优化技术等,它们围绕计算机基本原理,集成进特定的专用设备就形成了一个嵌入式系统。
软硬件可裁剪:嵌入式系统针对的应用场景如此之多,并带来差异性极大的设计指标要求(功能性能、可靠性、成本、功耗),以至于现实上很难有一套方案满足所有的系统要求,因此根据需求的不同,灵活裁剪软硬件、组建符合要求的最终系统是嵌入式技术发展的必然技术路线。
发展历程
嵌入式系统已经有了超30年的发展历史,20世纪70年代单片机的出现,使得汽车、家电、工业机器、通信装置等各种产品可以通过内嵌电子装置来获得更佳的使用性能。如更易用、更快、更便宜,这些装置已经初步具备了嵌入式的应用特点,但是这时的应用只是使用8位的芯片,在唯一的只读存储器(ROM)中执行一些单线程的程序,无微型操作系统。
80年代早期,嵌入式应用的程序员开始用商业级的“操作系统”编写嵌入式应用软件,以获取更短的开发周期,更低的开发费用和更高的开发效率,可以称得上是“嵌入式系统”。这个时期的操作系统是一个实时核,这个实时核包含了许多传统操作系统的特征,如任务管理、任务间通信、同步与相互排斥、中断支持、内存管理等功能。
90年代以后,随着对实时性要求的提高,软件规模不断提升,实时核逐渐发展为实时多任务操作系统(RTOS),并作为一种软件平台逐步成为目前嵌入式系统的主流。复杂的嵌入式系统,例如个人数字助理(PDA)、手持电脑(HPC)等,具有与PC几乎一样的功能,许多公司看到了嵌入式系统的广阔发展前景,开始大力发展嵌入式操作系统。比较著名的有Ready System公司的VRTX,Integrated System Incorporation(ISI)的PSOS和IMG的VxWorks,QNX公司的QNX,Plalm OS,WinCE,嵌入式Linux,Lyn,Nucleux以及国内的Hopen,DeltaOs等嵌入式操作系统。
嵌入式系统的发展大致经历了以下三个阶段:
第一阶段:嵌入技术的早期阶段。嵌入式系统以功能简单的专用计算机或单片机为核心的可编程控制器形式存在,具有监测、伺服、设备指示等功能。这种系统大部分应用于各类工业控制和飞机、导弹等武器装备中。
第二阶段:以高端嵌入式CPU和嵌入式操作系统为标志。这--阶段系统的主要特点是计算机硬件出现了高可靠、低功耗的嵌入式CPU,如ARM、PowerPC等,且支持操作系统,支持复杂应用程序的开发和运行。
第三阶段:以芯片技术和Internet技术为标志。微电子技术发展迅速,SOC(片上系统)使嵌入式系统越来越小,功能却越来越强。目前大多数嵌入式系统还孤立于Internet之外,但随着Internet的发展及Internet技术与信息家电、工业控制技术等结合日益密切,嵌入式技术正在进入快速发展和广泛应用的时期。
特点
嵌入式系统的硬件和软件必须根据具体的应用任务,以功耗、成本、体积、可靠性、处理能力等为指标来进行选择。嵌入式系统的核心是系统软件和应用软件,由于存储空间有限,因而要求软件代码紧凑、可靠,且对实时性有严格要求。
从构成上看,嵌入式系统是集软硬件于一体的、可独立工作的计算机系统;从外观上看,嵌入式系统像是一个“可编程”的电子“器件”;从功能上看,它是对目标系统(宿主对象)进行控制,使其智能化的控制器。从用户和开发人员的不同角度来看,与普通计算机相比较,嵌入式系统具有如下特点。
(1)专用性强。由于嵌入式系统通常是面向某个特定应用的,所以嵌入式系统的硬件和软件,尤其是软件,都是为特定用户群设计的,通常具有某种专用性的特点。
(2)体积小型化。嵌入式计算机把通用计算机系统中许多由板卡完成的任务集成在芯片内部,从而有利于实现小型化,方便将嵌入式系统嵌入目标系统中。
(3)实时性好。嵌入式系统广泛应用于生产过程控制、数据采集、传输通信等场合,主要用来对宿主对象进行控制,所以对嵌入式系统有或多或少的实时性要求。例如,对武器中的嵌入式系统,某些工业控制装置中的控制系统等的实时性要求就极高。有些系统对实时性要求也并不是很高,例如,近年来发展速度比较快的掌上电脑等。但总体来说,实时性是对嵌入式系统的普遍要求,是设计者和用户应重点考虑的一个重要指标。
(4)可裁剪性好。从嵌入式系统专用性的特点来看,嵌入式系统的供应者理应提供各式各样的硬件和软件以备选用,力争在同样的硅片面积上实现更高的性能,这样才能在具体应用中更具竞争力。
(5)可靠性高。由于有些嵌入式系统所承担的计算任务涉及被控产品的关键质量、人身设备安全,甚至国家机密等重大事务,且有些嵌入式系统的宿主对象工作在无人值守的场合,如在危险性高的工业环境和恶劣的野外环境中的监控装置。所以,与普通系统相比较,嵌入式系统对可靠性的要求极高。
(6)功耗低。有许多嵌入式系统的宿主对象是一些小型应用系统,如移动电话、MP3、数码相机等,这些设备不可能配置交流电源或容量较大的电源,因此低功耗一直是嵌入式系统追求的目标。
(7)嵌入式系统本身不具备自我开发能力,必须借助通用计算机平台来开发。嵌入式系统设计完成以后,普通用户通常没有办法对其中的程序或硬件结构进行修改,必须有一套开发工具和环境才能进行。
(8)嵌入式系统通常采用“软硬件协同设计”的方法实现。早期的嵌入式系统设计方法经常采用的是“硬件优先”原则,即在只粗略估计软件任务需求的情况下,首先进行硬件设计与实现,然后在此硬件平台之上进行软件设计。如果采用传统的设计方法,则一旦在测试中发现问题,需要对设计进行修改时,整个设计流程将重新进行,对成本和设计周期的影响很大。系统的设计在很大程度上依赖于设计者的经验。20世纪90年代以来,随着电子和芯片等相关技术的发展,嵌入式系统的设计和实现出现了软硬件协同设计方法,即使用统一的方法和工具对软件和硬件进行描述、综合和验证。在系统目标要求的指导下,通过综合分析系统软硬件功能及现有资源,协同设计软硬件体系结构,以最大限度地挖掘系统软硬件能力,避免由于独立设计软硬件体系结构而带来的种种弊病,得到高性能、低代价的优化设计方案。
系统组成
从外部特征上看,一个嵌入式系统,通常是一个功能完备、几乎不依赖其他外部装置即可独立运行的软硬件集成的系统。如果对这样一个系统进行剖分的话,可以发现它大致可能包括这样几个层次,如下图所示。
嵌入式系统最核心的层次是中央处理单元部分,它包含运算器和控制器模块,在cpu的基础上进一步配上存储器模块、电源模块、复位模块等就构成了通常所说的最小系统。由于技术的进步,集成电路生产商通常会把许多外设做进同一个集成电路中,这样在使用上更加方便,这样一个芯片通常称之为微控制器。在微控制器的基础上进一步扩展电源传感与检测、执行器模块以及配套软件并构成一个具有特定功能的完整单元,就称之为一个嵌入式系统或嵌入式应用。
硬件结构
1、嵌入式系统的核心部件
嵌入式系统的核心部件是各种类型的嵌入式处理器,相当于PC中的中央处理器(CPU),按组成和功能又分为嵌入式微处理器(embedded microprocessor unit,EMPU),嵌入式微控制器(embedded microcontroller unit,EMC),又称单片机,嵌入式数字信号处理器( embedded digital signal processor,EDSP)和嵌入式片上系统(system on chip,SOC)。
常见的嵌入式微处理器架构有ARM、X86、MIPS、PowerPC、SH、Motorola 68k、ColdFire、SPARC等,而ARM、MIPS、PowerPC是其中3种最主要的精简指令集计算机(RISC)架构。
2、嵌入式系统的周边硬件
(1)嵌入式系统中必不可少的存储器有ROM(包括EPROM、EEPROM),随机存取器(RAM)(包括静态随机存储器SRAM,动态随机存储器DRAM)和快闪存储器(flash memory)等。
(2)输入设备,一般包括触屏、按键、键盘、语音识别装置等。
(3)接口与总线CPU与外部设备接口通常指的是I/O接口,它包括并行接口和串行接口。串口的典型代表是RS-232-C、RS-485和USB,以及红外接口等。嵌入式系统中各部分之间的数据传送也有各种总线,其中主要有:ISA总线、PCI总线、I2C总线、SPI总线、PC104总线、I2S总线等。
3、嵌入式系统开发平台
嵌入式系统在开发阶段,需要有硬件平台的支持,通常嵌入式处理器的芯片厂商会提供评估版。 但由于其配置有限,往往不能满足应用开发的需要,所以又有一些公司推出了一些较通用的开发平台,目前应用最多的是ARM平台。
软件体系
嵌入式系统的软件体系是面向嵌入式系统特定的硬件体系和用户要求而设计的,是嵌入式系统的重要组成部分,是实现嵌入式系统功能的关键。嵌入式系统软件体系和通用计算机软件体系类似,分成驱动层、操作系统层、中间件层和应用层等四层,各有其特点。
驱动层
驱动层是直接与硬件打交道的一层,它为操作系统和应用提供硬件驱动或底层核心支持。在嵌入式系统中,驱动程序有时也称为板级支持包(BSP)。BSP具有在嵌入式系统上电后初始化系统的基本硬件环境的功能,基本硬件包括微处理器、存储器、中断控制器、DMA、定时器等。驱动层--般可以有三种类型的程序,即板级初始化程序、标准驱动程序和应用驱动程序。
操作系统层
嵌入式系统中的操作系统具有一般操作系统的核心功能,负责嵌入式系统的全部软硬件资源的分配、调度工作控制、协调并发活动。它仍具有嵌入式的特点,属于嵌入式操作系统(Embedded Operating System,EOS)。主流的嵌入式操作系统有Windows CE、Palm:OS、Linux、VxWorks.pSOS.QNX.LynxOS等。有了嵌入式操作系统,编写应用程序就更加快速、高效、稳定。
中间件层
中间件是用于帮助和支持应用软件开发的软件,通常包括数据库、网络协议、图形支持及相应开发工具等,例如:MySQL、TCP/IP、GU1等都属于这一类软件。
应用层
嵌入式应用软件是针对特定应用领域,用来实现用户预期目标的软件。嵌入式应用软件和普通应用软件有一定的区别,它不仅要求在准确性、安全性和稳定性等方面能够满足实际应用的需要,而且还要尽可能地进行优化,以减少对系统资源的消耗,降低硬件成本。嵌入式系统中的应用软件是最活跃的力量,每种应用软件均有特定的应用背景。尽管规模较小,但专业性较强,所以嵌入式应用软件不像操作系统和支撑软件那样受制于国外产品,是中国嵌入式软件的优势领域。
嵌入方式
嵌入式系统是通过把CPU嵌人目标系统或被控系统中起作用的。但是在不同的嵌入式系统中,嵌入的形式和程度是各不相同的。根据嵌入式系统和通用计算机连接关系的密切程度,嵌人形式可以分为全嵌入方式、半嵌入方式。
全嵌入方式
如果采用全嵌人方式,则嵌入式系统(或其核心功能)可以不依赖于通用计算机系统,即可单独工作,典型实例有手机、MP4、车载GPS导航系统等。采用全嵌人方式的嵌入式系统有如下特点。
(1)具有独立的处理器系统,且具有完整的输入/输出系统,能独立完成系统的功能。
(2)高端CPU支持嵌入式操作系统,可以开发功能复杂的应用程序。
(3)一般为便携式手持式设备,其工作环境一般是无人值守、移动空间、高空或其他条件恶劣的环境。
(4)供电方式一般采用电池供电,有些情况下也可以直接采用市电220V供电,由系统自行设计转换和稳压电路。较高端的设备往往会把两种供电方式结合起来,让用户使用起来更加灵活。
(5)全嵌入方式适合任何不宜采用通用计算机的场合,如消费电子、家用电器、通信网络设备、工业控制、智能仪器、战场电子对抗、航天航空武器等,其应用范围十分广泛。
半嵌入方式
如果采用半嵌人方式,则嵌入式系统(或其核心功能)需要和通用计算机系统结合起来才能正常工作,典型实例有医用B超系统、基于PCI卡的数据采集系统等。采用半嵌入方式的嵌入式系统有如下特点。
(1)一般没有独立的处理器,而是借用通用计算机系统的CPU完成计算和/或控制功能;有时即使具有自己的独立处理器,但是处理器也只是完成一些有限的特定功能,而不具备控制全部系统的功能。
(2)嵌入式系统只是整个系统的--部分,只能完成整个系统的一部分功能,而其他功能需要在通用计算机上完成。通用计算机利用自己丰富的软件和硬件资源,提供友好的人机操作界面和强大的数据处理能力。
(3)嵌入式系统的功能体现在对前端数据的采集和执行对被控对象的控制,其中的数据分析、处理和存储等功能由通用计算机系统完成。
(4)嵌入式系统一般采用各种规范的总线形式和通用计算机相连接。典型的实例有PCI总线、USB总线等,简单的嵌入式系统还可以通过串口来连接。
(5)嵌入式系统是作为外设连接在通用计算机上的,因此在通用计算机中一般需要提供嵌入式系统的标准驱动程序。
相关介绍
嵌入式微处理器
微处理器是整个系统的核心,通常由3大部分组成:控制单元、算术逻辑单元和寄存器。
嵌入式操作系统
嵌入式操作系统EOS(Embedded Operating System)是一种用途广泛的系统软件,过去它主要应用于工业控制和国防系统领域。EOS负责嵌入式系统的全部软、硬件资源的分配、调度,控制、协调并发活动;它必须体现其所在系统的特征,能够通过装卸某些模块来达到系统所要求的功能。目前,已推出一-些应用比较成功的EOS产品系列。随着Internet技术的发展、信息家电的普及应用及EOS的微型化和专业化,EOS开始从单一的弱功能向高专业化的强功能方向发展。嵌入式操作系统在系统实时高效性、硬件的相关依赖性、软件固化以及应用的专用性等方面具有较为突出的特点。
应用
嵌入式系统的应用十分广泛,涉及工业生产、日常生活、工业控制、航空航天等多个领域,而且随着电子技术和计算机软件技术的发展,不仅在这些领域中的应用越来越深入,而且在其他传统的非信息类设备中也逐渐显现出其用武之地。
工业控制
基于嵌入式芯片的工业自动化设备将获得长足的发展,目前已经有大量的8位、16位、32位嵌入式微控制器在应用中。网络化是提高生产效率和产品质量、减少人力资源的主要途径,如工业过程控制、数字机床、电力系统、电网安全、电网设备监测、石油化工系统。就传统的工业控制产品而言,低端产品往往采用的是8位单片机。随着计算机技术的发展,32位、64位的处理器已逐渐成为工业控制设备的核心。
交通管理
在车辆导航、流量控制、信息监测与汽车服务方面,嵌入式技术已经获得了广泛的应用,内嵌GPS模块、GSM模块的移动定位终端已经在各种运输行业获得了成功。目前,GPS设备已经从尖端的科技产品进入了普通百姓的家庭。
信息家电
家电将成为嵌入式系统最大的应用领域,冰箱、空调等的网络化、智能化将引领人们的生活步人一个崭新的空间。即使不在家,也可以通过电话、网络对家电进行远程控制。在这些设备中,嵌入式系统将大有用武之地。
家庭智能管理系统
水表、电表、煤气表的远程自动抄表系统,安全防火、防盗系统,嵌有专用控制芯片,这种专用控制芯片将代替传统的人工操作,完成检查功能,并实现更高、更准确和更安全的性能。目前在服务领域,如远程点菜器等已经体现了嵌入式系统的优势。
POS网络及电子商务
公共交通无接触智能卡(Contactless Smart Card,CSC)发行系统、公共电话卡发行系统、自动售货机等智能ATM终端已全面走进人们的生活,在不远的将来手持一张卡就可以行遍天下。
环境工程与自然
在很多环境恶劣、地况复杂的地区需要进行水文资料实时监测、防洪体系及水土质量监测堤坝安全与地震监测、实时气象信息和空气污染监测等时,嵌入式系统将实现无人监测。
机器人
嵌入式芯片的发展将使机器人在微型化、高智能方面的优势更加明显,同时,会大幅度降低机器人的价格,使其在工业领域和服务领域获得更广泛的应用。
开发流程
以Linux操作系统为例,论述嵌入式系统的开发流程。
建立开发环境
安装操作系统与交叉编译器,操作系统一般使用RedhatLinux,选择定制安装或全部安装,通过网络下载相应的GCC交叉编译器进行安装(比如,armn-1inux-gcc、arm-uclibc-gcc),或者安装产品厂家提供的相关交叉编译器。
配置开发主机的参数
配置MNICOM参数,MNICOM软件的作用是作为调试嵌入式开发板的信息输出的监视器和键盘输入的工具。一般情况下的参数为波特率115200 Baud/s,数据位8位,停止位为1,无奇偶校验,软件硬件流控设为无。在Windows下的超级终端的配置也是这样。配置网络主要是配置NFS网络文件系统,需要关闭防火墙以简化嵌入式网络调试环境设置过程。
建立引导装载程序BOOTLOADER
从网络上下载一些公开源代码的BOOTL0ADER,如U-BOOT、BLOB、VIVI、LILO、ARM-Boot、RED-Boot等,根据具体芯片进行移植修改。有些芯片没有内置引导装载程序,这样就需要编写开发板上FLASH的烧写程序,也可以在网上下载相应的烧写程序。果不能烧写自己的开发板,就需要根据自己的具体电路进行源代码修改。这是让系统可以正常运行的第一步。
下载已经移植好的Linux操作系统内核
如MCLiunx、ARM_Linux、PPC-Linux等,如果有专门针对所使用的CPU移植好的Linux操作系统那是再好不过,下载后再添加特定硬件的驱动程序,然后进行调试修改,对于带MMU的CPU可以使用模块方式调试驱动,而对于MCLiunx这样的系统只能编译内核进行调试。
建立根文件系统
下载使用BUSYBOX软件进行功能裁减,产生一个最基本的根文件系统,再根据自己的应用需要添加其他的程序。由于默认的启动脚本一般都不会符合应用的需要,所以就要修改根文件系统中的启动脚本,它的存放位置位于/etc目录下,包括:/etc/init.drc.S、/etc/profile、/etc/.profile及自动挂装文件系统的配置文件/etc/fstab等,具体情况会随系统不同而不同。根文件系统在嵌入式系统中-般设为只读,需要使用mkcramfs genromfs等工具产生烧写映像文件。
建立应用程序的FLASH磁盘分区
一般使用JFFS2或YAFFS文件系统,这需要在内核中提供这些文件系统的驱动。有的系统使用一个线性FLASHNOR型)512KB~32MB,有的系统使用非线性FLASHNAND型)8MB~512MB,有的系统两种同时使用,需要根据应用规划FLASH的分区方案。
开发应用程序
根据需要开发应用程序,把开发成功的应用程序可以放入根文件系统中,也可以放入YAFFS、JFFS2文件系统中,有的应用不使用根文件系统,直接将应用程序和内核设计在一起,这有点类似于uC/OS-II的方式。
发展前景
嵌入式系统涉及计算机、操作系统、信息处理、网络通信、集成制造等多种学科,这些领域的进步,将促进嵌入式系统的更新换代。随着时代发展的需求和技术的进步,嵌入式系统的内涵和外延不断扩大,嵌入式系统正逐渐向网络化、信息化方向发展,物联网、信息物理融合系统。CPS(Cyber Physics System),已成为信息科学领域的研究热点。而嵌入式系统正是实现物联网和CPS的有效途径,具备传感、计算、通信、存储能力的嵌入式系统,将是未来一段时间的发展方向,它已经和正在使传统的控制方式和手段发生重大的变化。
软硬件协同设计介绍
系统描述
对嵌入式系统的描述主要是从两方面出发的,一是性能方面,另一种是功能方面。在系统描述过程中,不仅可以采用一种语言,也可以采用多种语言。同时,这一描述过程也是对软件模型和系统硬件模型的建立过程。在进行嵌入式系统描述时,为了减少软硬件协同设计初期中问题的出现,需要做好系统内行为的测试工作。一方面,可以在第一时间发设计中不合理的地方;另一方为系统安全、可靠运行提供了保证。系统描述需要以系统模型为支撑,为了进行正确的描述,应该确保该模型包括四个元素。一是功能特点,也就是指嵌入式系统的各项功能,同时应该重点明确功能和系统的输入和输出关系。第二是性能描述,在系统模型中,融入这一因素,能够比较全面的反映系统的整体结构,并且需要说明系统输入与输出的联系。第三是约束条件,该要素不仅对嵌入式系统性能缺陷进行了说明,而且还合理的对系统工作环境中的要求进行了规定。第四是技术指标,其能够对系统存在的问题、质量好坏进行说明,为设计工作开展奠定良好基础。
软硬件综合技术
在嵌入式系统的软硬件协同设计中,软硬综合技术是重要的技术之一,在软硬件系统的大体设计方面发挥着重要作用。在对其设计结果进行系统检测评价的基础上,可以根据设计要求,有针对性的开展细致的系统制作工作,并且进行软硬件的设计,确保其协调一致,进而可提升设计的科学性,对整个系统运行效率提高具有重要意义。
软硬件功能划分
在进行软硬件功能划分工作中,主要是科学合理的划分软硬件和嵌入式系统功能,并对二者的关系进行明确。其中,成本函数是软硬件功能划分的主要依据之一。在运用成本函数方面时,需要考虑多方面因素。例如,模块之间的并发性、软件执行时间等。
协同仿真和系统测试验证
在协调仿真和系统测试验证方面,需要借助硬件描述语言进行嵌入式系统硬件系统的描述工作。为了有效完成设计工作,满足设计要求,需要对软件搭配硬件的方法进行合理的应用,以便为接下来的设计工作创造良好的环境,不仅能够在整体上提高设计效率与质量,而且还能减少设计成本,确保良好的经济效益。