嵌入式技术(Embedded Technology)现在正处于全盛期,其可用技术带来了巨大的社会财富。然而,大多数的嵌入式系统工程师(Embedded Systems Engineer)都会有类似的抱怨:在互联网上,关于这项技术的多种多样的设计和实践的资料少之又少。一些大公司的技术垄断行为被认为是罪魁祸首,如芯片厂商、PC厂商、手机厂商。他们对本公司拥有的硬件资料、设计方法等严格保密,以打压竞争对手。

在开始学习这本书之前,首先了解什么是嵌入式系统(Embedded System),为什么使用它们,以及它们如何被应用,是至关重要的。此教科书将尝试覆盖大量相关主题,它们中有的只应用于嵌入式系统,也有的适用于几乎所有类型的计算机。就此而言,这本教科书的材料可能会与其他专门领域的维基教科书重叠,比如低级计算(Low-level Computing),汇编语言(Assembly Language),C语言(C Language),计算机结构(Computer Architecture)等。但我们将会首先介绍基本知识,试着解答一些问题,以便您能够轻松地开始学习专门领域的维基教科书。

什么是嵌入式系统 编辑

嵌入式系统是嵌入式计算机系统的简称。顾名思义,它是一种嵌入在设备/系统内部,为特定应用而设计开发的专用计算机系统。英国电气工程师协会(Institution of Electrical Engineers,IEEE)从应用的角度定义嵌入式系统是“控制、监视或协助设备、机器、工厂运行的装置”(devices used to control, monitor, or assist the operation of equipment machinery or plants)。

通常,嵌入式系统有以下特征:

  • 专用性——嵌入式系统与具体应用紧密结合,具有很强的专用性。它按照特定的应用需求进行设计,完成预定的任务。正因为目标明确,所以嵌入式系统往往能做到最优化的设计和剪裁。因此其运行效率一般很高。
  • 隐蔽性——嵌入式系统通常是非计算机系统/设备的一部分,隐藏在后者内部,不为人知。人们一般只关注宿主系统/设备的功效、性能及操作使用,而并不关注隐藏在其中的嵌入式系统。
  • 实时性——嵌入式系统广泛用于过程控制、数据采集、通信传输等领域,承担着测量、控制、调节、报警等要求及时作出反应的任务。因而嵌入式系统一般都有一定的实时性,即:必须在一个可预测和有保证的时间段内对外部事件作出正确反应。按照对实时性的要求,嵌入式系统还可以分为非实时系统(对响应时间基本没有要求,如电子书中的嵌入式系统)、软实时系统(对响应时间有一定要求;但即使系统的响应时间未能达到要求,也不会产生严重后果,如遥控玩具中的嵌入式系统、火车站台上的列车时刻表显示系统)和硬实时系统(对响应时间有严格的要求;一旦系统的响应时间未能达到要求,便可能产生严重后果,如数控机床、汽车和飞机上的检测控制系统)三大类。
  • 高可靠性——嵌入式系统大多面向控制应用,任何误动作都可能带来严重后果。因此系统的可靠性十分重要。前面提到的实时性也是可靠性的一部分。
  • 软件固化——嵌入式系统是软硬件高度结合的产物,其中的软件一般都固化到只读存储器(ROM)中。用户一般无法变动嵌入式系统的程序功能。
  • 资源受限——嵌入式系统通常都有小型化、轻量化、低功耗和低成本的要求。因此其软硬件资源会受到严格限制。大多数嵌入式系统的软硬件都刚好仅能满足宿主设备的所有需求。由于这一特性,嵌入式系统的开发有着苛刻的要求。

嵌入式系统可以被定义为一个为某个特定任务而设计的控制系统或者计算机系统。通常的例子包括:MP3播放器、飞机导航系统和入侵报警系统等。嵌入式系统也可以被认为是具有单一目的的计算机。

嵌入式计算机是什么 编辑

这是一个困难的问题。嵌入式计算机(Embedded Computer)的确切概念并不是很容易理解的。然而,“什么不是嵌入式计算机”的答案却简单易懂。嵌入式计算机通常指被应用于特殊目的的计算机,而计算机本身不是主要目的。相反地,通常的PC、服务器和大型机的主要目的即是提供计算能力,目的在于计算机本身,因此不能称为嵌入式计算机。嵌入式系统通常目的单一,而通用计算机往往具有多种功能与目的。

嵌入式计算机很常见,每个家庭都能找到一些应用的例子。比如洗衣机、彩色电视机、DVD机,甚至电子钟。每个嵌入式计算机的应用产品都有数字时钟(Digital Clock,与传统的钟表不同,它实际上是一个微型的晶体震荡器,没有指针或者显示屏)。现代的汽车都有数十块甚至数百块微处理器,它们都属于嵌入式计算机。这些芯片被用来控制汽车完成多种任务,如ABS(Anti-lock Brake System)、点火、车载多媒体设备等。嵌入式计算机从传感器获得信号,然后控制电机、液压系统等完成一定功能。

嵌入式计算机通常没有通用接口(Generic Interface)。即便嵌入式系统包含键盘、控制面板和LCD显示器,它们也几乎不会支持多种多样的输入输出方式。一个典型的例子是需要输入密码的防盗门,它拥有小键盘和LCD显示器。您不会在它上面找到USB接口或者HDMI接口。


嵌入式计算机与通用计算机 编辑

通用计算机通常指PC、服务器、工作站、小型机、大型机、超级计算机等以计算作为主要目的,应用广泛而非单一用途的计算机。通用计算机也能被应用到嵌入式系统中。比如一些化工设备使用PC作为中央控制器,一些智能机器人使用通用计算机的CPU和主板。

严 格划分嵌入式计算机与通用计算机越来越困难。由于个人数码助理(PDA,Personal Digital Assistant)及手持设备在硬件上设计的特性,即使在软件上的扩充性比其他装置来得好,但普遍被认为是嵌入式装置。但是这个定义也逐渐模糊。举例来 说,Intel 公司的凌动(ATOM)微处理器原本是为了移动互联网设备(MID,Mobile Internet Device)这一类的嵌入式系统设计的,但是现在更多的被应用于上网本(Netbook),而上网本属于使用Windows或者Linux的个人计算 机,因此嵌入式系统的定义又更模糊了。

从本质上,嵌入式计算机和通用计算机的界限是模糊的,两个概念具有重叠。在实际过程中对其进行区分,主要依据是硬件和软件资源。

嵌 入式系统的核心是由一个或几个预先编程好以用来执行少数几项任务的微处理器或者微控制器组成。与通用计算机能够运行用户选择的软件不同,嵌入式系统上的软 件通常是暂时不变的;所以经常称为“固件”。通用计算机的软件资源是可扩展的,通用的;嵌入式计算机的软件资源是单一的,专用的。比如典型的嵌入式系统——MP3播放器,只具有播放音乐和管理音乐文件的程序,而我们的笔记本电脑或者智能手机,不仅可以播放音乐,还可以浏览网页,收发邮件,玩游戏,其功能取决于安装的软件。

一 般的,嵌入式计算机的硬件资源(处理器速度、内存、总线宽度等)不及通用计算机。由于只需完成单一任务,且受到功耗和散热量的限制,嵌入式系统的硬件资源 高度集约化。比如,一般家用电器中的微控制器为8位,主频几MHz,拥有几KB的ROM;而桌上型电脑通常采用32位或64位CPU,主频1~4GHz, 拥有数十或数百GB硬盘存储。

实时系统 编辑

大多数嵌入式系统是时序应用(Time Critical Application),这意味着对嵌入式系统工作来说时间非常重要。判断一个操作的结果的方法是,它们有没有在特定时间框架内发生。飞机中的自动驾驶 仪就是一个时序嵌入式系统。如果自动驾驶仪探测到飞机由于某种原因失速,它就会采取一些步骤纠正错误。整个过程只需要数毫秒,如果时间过长就会产生灾难性的后果。

实时系统被定义为:系统的正确性严格地取决于其能否在规定时间限制内做出响应,则这个系统是实时系统。

因此实时系统具有一个突出特点——延迟即失败。以汽车防抱死制动系统(ABS, 德语Antiblockiersystem)为例,系统必须在规定的时间内释放刹车,不能有任何延迟;如果到达时间限制仍未释放刹车,将视为失败,重新执 行释放刹车。反之,如果采用非实时系统,可能由于系统繁忙,一些任务在等待处理,释放刹车的任务一直在等待。这个等待时间存在不确定性,就可能会导致刹车 无法释放,车轮锁死,发生事故。

嵌入式系统被用来做什么 编辑

嵌入式系统的应用几乎是没有界限的,因为每一天都会有基于嵌入式计算机的新产品上市。最近几年,硬件(如微处理器、微控制器、FPGA芯片)开始变得越来越廉价。所以,当需要一种控制系统的时候,人们会明智地买一块通用芯片,然后给它编写程序。而传统的支持单一功能的电路、专用芯片则需要多得多的时间和费用。很多嵌入式计算机甚至拥有大量库(Librarie),因此编写程序会非常容易。

从实际应用的角度来看,计算机和嵌入式系统有一个主要的区别。嵌入式系统通常需要提供实时响应(Real-Time Response)。实时系统(Real-Time System)被定义为其准确性依赖于响应时机的系统。这类系统的实例有飞机的飞行控制系统,核反应堆的检测系统等。对这些系统来说,响应的延迟是致命性的错误。而更加宽松的实时系统可以接受微小的延迟。例如火车站台上的列车时刻表显示系统。