1.1 嵌入式系统概述
随着现代计算机技术的飞速发展,逐渐形成了计算机系统的两大分支:通用计算机系统(如PC)和嵌入式计算机系统。通用计算机系统的硬件以标准化形态出现,通过安装不同的软件满足各种不同的要求。嵌入式计算机系统则是根据具体应用对象,采用量体裁衣的方式对其软/硬件进行定制的专用计算机系统。
1.1.1 嵌入式系统的定义
嵌入式系统是将计算机硬件和软件结合起来构成的一个专门的装置,这个装置可以完成一些特定的功能和任务。由于它可能会工作在一个与外界发生交互并受到时间约束的环境中,所以要求其能够在没有人工干预的情况下独立的进行实时监测和控制。另外由于被嵌入对象的体系结构、应用环境要求的不同,所以各个嵌入式系统也可以由各种不同的结构组成。
到目前为止,嵌入式系统已经有40多年的发展历史,并且是以硬件和软件交替双螺旋式发展的。第一款嵌入式微处理器是Intel的4004,它出现在1971年,然后是在20世纪80年代初,Intel公司开发出MCS8051系列8位单片机。1981年开发世界上第一个商业嵌入式实时内核(VTRX32),内核中包含了许多传统操作系统的特征,如任务管理、任务间通信、同步与相互排斥、中断支持、内存管理等功能。随后,出现了各种成型的嵌入式操作系统,目前嵌入式(实时操作系统)已经在全球形成了一个产业。
关于嵌入式系统的定义很多。例如,较通俗的定义是嵌入对象体系中的专用计算机系统。IEEE(国际电气和电子工程师协会)关于嵌入式系统的定义是“用于控制、监视或者辅助操作机器和设备的装置(devices used to control, monitor, or assist the operation of equipment, machinery or plants)”。可以看出此定义是从应用上考虑的,嵌入式系统是软件和硬件的综合体,还可以涵盖机电等附属装置。国内较权威机构对嵌入式系统的定义是:“以应用为中心,以计算机技术为基础,软件、硬件可裁剪,功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。”
嵌入式系统本身是一个相对模糊的定义,例如手机、MP3、数码相机、机顶盒、媒体播放器以及PC104的微型工业控制计算机都可以认为是嵌入式系统。总之,嵌入式系统采用“量体裁衣”的方式把所需的功能嵌入各种应用系统中。
1.1.2 嵌入式系统的特征
嵌入式系统是将先进的计算机技术、半导体技术和电子技术与各个行业的具体应用相结合后的产物。这一点就决定了它必然是一个技术密集、资金密集、高度分散、不断创新的知识集成系统。嵌入式系统的重要特征主要包括以下几方面。
(1)功耗低、体积小、具有专用性
嵌入式微处理器与通用型微处理器的最大不同就是嵌入式微处理器通常工作在为特定用户群设计的系统中,它通常都具有低功耗、体积小、集成度高等特点。能够把通用计算机中许多由板卡完成的任务集成在芯片内部,从而有利于嵌入式系统设计趋于小型化,移动能力也大大增强,与计算机网络和通信系统的结合也越来越紧密。
嵌入式系统的个性化很强,其中的软件系统和硬件的结合是非常紧密的,一般要针对不同的硬件情况来进行软件系统的设计。即使在同一品牌、同一系列的产品中也需要根据系统硬件的变化和增减来不断地进行修改。一个嵌入式系统通常只能重复执行一个特定的功能,例如一台数码相机永远是数码相机。而通用的台式微机系统可以执行各种程序,如电子表、多媒体播放器和游戏,还经常加入其他新程序。当然也有例外,一种情况是嵌入式系统中的程序版本更新,例如,有些手机(移动电话)就是这样更新的。另一种情况是由于系统大小的限制,使得几个程序只能轮流输入系统中。例如,有些导弹在巡航模式下执行一个程序,在锁定目标时又执行另一个程序。尽管如此,这些嵌入式系统仍只具有特定的功能。
(2)实时性强、系统内核小
有些嵌入式系统的系统软件和应用软件没有明显的区分,不要求其功能设计及实现上过于复杂,这样一方面利于控制系统成本,同时也利于实现系统安全。这是嵌入式软件的基本要求,而且软件要求固态存储,以提高速度。软件代码要求高质量和高可靠性、实时性。很多嵌入式系统都需要不断地对所处环境的变化作出反应,而且要实时地得到计算结果,不能延迟。由于嵌入式系统一般是应用于小型电子装置,并且系统资源相对有限的场合,所以内核较之传统的操作系统要小得多,比如μC/OS操作系统,核心内核只有8.3 KB,而Windows的内核则要比其大得多。
(3)创新性和高可靠性
嵌入式系统和具体应用有机地结合在一起,它的升级换代也是和具体产品同步进行,因此嵌入式系统产品一旦进入市场,应具有较长的生命周期。为了提高执行速度和系统可靠性,嵌入式系统中的软件一般都固化在存储器芯片或处理器本身中,而不是存储于磁盘等磁性载体中。
(4)高效率地设计
由于对成本、体积和功耗有严格的要求,使得嵌入式系统的资源(如内存、I/O接口等)有限,因此对嵌入式系统的硬件和软件都必须高效率地设计,量体裁衣、去除冗余,力争在有限的资源上实现更高的性能。
(5)需要开发环境和调试工具
由于嵌入式系统本身不具备自主开发能力,即使设计完成以后,用户通常也是不能对其中的程序功能进行修改,必须有一套开发工具和环境才能进行开发。这些工具和环境一般是基于通用计算机上的软/硬件设备以及各种逻辑分析仪、混合信号示波器等。开发时往往有主机(或称为宿主机)和目标机的概念,主机用于程序的开发,目标机作为最后的执行机,开发时需要交替结合进行。