嵌入式系统(Embedded System)有多种多样的定义,但本质是相同的。本书关于嵌入式系统的定义取自于美国CMP Books出版的Jack Ganssle和Michael Barr著作《Embedded System Dictionary》 。
嵌入式系统的定义:一种计算机硬件和软件的组合,也许还有机械装置,用于实现一个特定功能。在某些特定情况下,嵌入式系统是一个大系统或产品的一部分。 世界上第一个嵌入式系统是 1971 年Busicom公司用Intel单芯片 4004 微处理器完成的商用计算器系列。该词典 还给出了嵌入式系统的一些示例,如微波炉、手持电话、计算器、数字手表、录像机、巡航导弹、GPS接收机、数码相机、传真机、跑步机、遥控器和谷物分析仪等,难以尽数。通过与通用计算机的对比可以更形象地理解嵌入式系统的定义。 该词典给出的通用计算机定义是:计算机硬件和软件的组合,用于通用计算平台。 PC、MAC和UNIX工作站是最流行的现代计算机。
我国国家标准GB/T 5271《信息技术词汇—嵌入式系统与单片机》部分,给出的嵌入式系统定义是:置入应用对象内部起操作控制作用的专用计算机系统。
国内对嵌入式系统定义曾进行过广泛讨论,有许多不同说法,其中嵌入式系统定义的涵盖面问题是主要争论焦点之一。例如,有的学者认为不能把手持电话叫嵌入式系统,而只能把其中起控制作用的部分叫嵌入式系统,而手持电话可以称为嵌入式系统的应用产品。其实,这些并不妨碍人们对嵌入式系统的理解,所以不必对定义感到困惑。有些国内学者特别指出,在理解嵌入式系统定义时,不要把嵌入式系统与嵌入式系统产品相混淆。实际上,从口语或书面语言角度,不区分“嵌入式系统”与“嵌入式系统产品”,只要不妨碍对嵌入式系统的理解就没有关系。
为了更清楚地阐述嵌入式系统特点,首先介绍大多数嵌入式系统的核心部件——MCU(微控制器)的基本概念。
MCU是单片微型计算机(单片机)的简称,早期的英文名是Single-chip Microcomputer,后来大多数称之为微控制器(Microcontroller)或嵌入式计算机(Embedded Computer)。现在Microcontroller已经是计算机中一个常用术语,但在 1990 年之前,大部分英文词典并没有这个词。我国学者一般使用中文“单片机”一词,而缩写使用“MCU” 。所以本书后面的简写一律以MCU为准。 MCU的基本含义是:在一块芯片上集成了中央处理单元(CPU)、存储器(RAM/ROM等)、定时器/计数器及多种输入/输出(I/O)接口的比较完整的数字处理系统。 图 1-1 给出了典型的MCU组成框图。
图 1-1 一个典型的MCU内部框图
MCU是在计算机制造技术发展到一定阶段的背景下出现的,它使计算机技术从科学计算领域进入到智能化控制领域。从此,计算机技术在两个重要领域——通用计算机领域和嵌入式(Embedded)计算机领域都获得了极其重要的发展,为计算机的应用开辟了更广阔的空间。
就MCU组成而言,虽然它只是一块芯片,但包含了计算机的基本组成单元,仍由运算器、控制器、存储器、输入设备、输出设备五部分组成,只不过这些都集成在一块芯片上,这种结构使得MCU成为具有独特功能的计算机。
通俗地说,计算机是因科学家需要一个高速的计算工具而产生的。 直到 20 世纪 70 年代,电子计算机在数字计算、逻辑推理及信息处理等方面表现出非凡的能力。在通信、测控与数据传输等领域,人们对计算机技术给予了更大的期待。这些领域的应用与单纯的高速计算要求不同,主要表现在:直接面向控制对象;嵌入到具体的应用体中,而非计算机的面貌出现;能在现场连续可靠地运行;体积小,应用灵活;突出控制功能,特别是对外部信息的捕捉与丰富的输入/输出功能等。由此可以看出,满足这些要求的计算机与满足高速数值计算的计算机是不同的。因此, 一种称之为MCU或微控制器的技术得以产生并发展。 为了区分这两种计算机类型,通常把满足海量高速数值计算的计算机称为通用计算机系统,而把嵌入到实际应用系统中,实现 嵌入式应用的计算机称之为嵌入式计算机系统,简称嵌入式系统。
何立民先生说:“有些人搞了十多年的MCU应用,不知道MCU就是一个最典型的嵌入式系统” 。实际上,MCU是在通用CPU基础上发展起来的,MCU具有体积小、价格低、稳定可靠等优点,它的出现和迅猛发展,是控制系统领域的一场技术革命。MCU以其较高的性能价格比、灵活性等特点,在现代控制系统中具有十分重要的地位。 大部分嵌入式系统以MCU为核心进行设计。 MCU从体系结构到指令系统都是按照嵌入式系统的应用特点专门设计的,它能很好地满足应用系统的嵌入、面向测控对象、现场可靠运行等方面的要求。因此以 MCU为核心的系统是应用最广的嵌入式系统。 在实际应用时,开发者可以根据具体要求与应用场合,选用最佳型号的MCU嵌入到实际应用系统中。
在MCU出现之前,人们必须用模拟电路、数字电路实现大部分计算与控制功能,这样使得控制系统体积庞大,易出故障。MCU出现以后,情况发生了变化,系统中的大部分计算与控制功能由MCU的软件实现。其他电子线路成为MCU的外围接口电路,承担着输入/输出与执行动作等功能,而计算、比较与判断等原来必须用电路实现的功能,可以用软件取代,大大提高了系统的性能与稳定性,这种控制技术称之为嵌入式控制技术。在嵌入式控制技术中,核心是MCU,其他部分依此而展开。
对于嵌入式系统特点,不同学者也许有不同的说法。这里从与通用计算机对比的角度谈嵌入式系统的特点。
嵌入式系统的本名叫做嵌入式计算机系统(Embedded Computer System),它不仅具有通用计算机的主要特点,又具有自身特点。嵌入式系统也必须要有软件才能运行,但其隐含在种类众多的具体产品中。同时,通用计算机种类屈指可数,而嵌入式系统不仅芯片种类繁多,而且由于应用对象大小各异,嵌入式系统作为控制核心,已经融入到各个行业的产品之中。
嵌入式系统不像通用计算机那样有了计算机系统就可以进行应用开发。在一般情况下,MCU芯片本身不具备开发功能,必须要有一套与相应芯片配套的开发工具和开发环境。这些工具和环境一般基于通用计算机上的软硬件设备以及各种逻辑分析仪、混合信号示波器等。开发时往往有主机和目标机的概念,主机用于程序的开发,目标机作为程序的执行机,开发时需要交替结合进行。
在通用计算机系统中,程序存储在硬盘上。在实际运行时,通过操作系统将要运行的程序从硬盘调入内存(RAM),运行中的程序、常数、变量均在RAM中;而以MCU为核心的嵌入式系统,其程序被固化到非易失性存储器中 ,变量及堆栈使用RAM存储器。
嵌入式系统与硬件紧密相关,嵌入式系统的开发需要硬件、软件协同设计、协同测试。同时,由于嵌入式系统专用性很强,通常是用在特定应用领域,如嵌入在手机、冰箱、空调、各种机械设备、智能仪器仪表中起核心控制作用,功能专用。因此,进行嵌入式系统的开发,还需要对领域知识有一定的理解。当然,一个团队协作开发一个嵌入式产品,其中各个成员可以扮演不同角色,但对系统的整体理解与把握并相互协作,有助于一个稳定可靠嵌入式产品的诞生。
除了以上特点之外,嵌入式系统还具有其他方面的特点。
在资源方面: 嵌入式系统通常专用于某一特定应用领域,其硬件资源不会像通用计算机那样丰富; 在可靠性方面: 嵌入式系统一般要求更高可靠性和稳定性; 在实时性方面: 相当多嵌入式系统有实时性要求; 在成本方面: 嵌入式系统通常极其关注成本; 在功耗要求方面: 一些嵌入式系统要求低功耗; 在生命周期方面: 嵌入式系统通常比通用计算机系统生命周期长,升级换代比通用计算机慢; 在知识综合方面: 嵌入式系统是将先进的计算机技术、半导体技术及电子技术与各个行业的具体应用相结合的产物,是一个技术密集、资金密集、高度分散、不断创新的知识集成系统。嵌入式系统的构成既有硬件又有软件,不仅包括应用软件,也可能包括系统软件;它既有数字电路又有模拟电路,其产品技术含量高,涉及多种学科,不容易开发,因此也不容易形成技术垄断。
这些特点决定了嵌入式系统的开发方法、开发难度、开发手段等,均不同于通用计算机,也不同于常规的电子产品。