作为20世纪人类社会最伟大的发明之一,计算机已逐步把人类带入了数字化时代。同时,后PC时代的到来,使得人们开始越来越多地接触到一个新的概念——嵌入式产品。越来越多的复杂软硬件系统内嵌于医疗、汽车、工业控制、交通、通信、航空、航天及现代武器装备中,如:NASA航天飞机的机载系统有近500 000行代码,而这还不包括用于地面控制和处理的350 000行代码;在美国电信通信中,支撑软件的源代码超过了1亿行。表1-1给出了软件在国外战斗机中的应用情况。
表1-1 软件在国外战斗机中的应用
1990年,IEEE(电子与电气工程师协会)给出了嵌入式系统的定义:嵌入式计算机系统是较大系统的一部分,用于满足该系统的某些要求,例如,用于飞机快速运输系统的计算机系统(An Embedded Computer System is part of a larger system and performs some of the requirements of that system;for example,a computer system used in an aircraftor rapid transit system)。通常,将用于控制、监视或者辅助操作机器和设备的装置称为嵌入式系统。嵌入式系统一般包括一系列软硬件设施等,而嵌入式软件是嵌入式系统的软件部分,比如航天器的控制系统、飞机的航电系统、基于Android和iOS等系统的手机、机顶盒、汽车电子系统、通信系统中的路由器等。此外,广义上也通常把单片机(STM32)、SOC等硬件构成的控制系统一并称为嵌入式系统。上述嵌入式软件往往具有实时性的特征,因此也被称为实时嵌入式系统。
通常,实时系统是指必须在外界环境规定的时间内完成计算和I/O操作的专用计算机系统,POSIX Standard 1003.1中定义实时系统为“有能力在限定的响应时间范围内,提供满足需求的服务的操作系统”。在实时计算中,外界环境可以被看作一组约束─普遍被认为是时间约束(也称为时限)。时限的存在,是实时计算与非实时计算的最本质区别。实时系统与非实时系统的区别就在于实时系统必须提供某种机制以确保时限不会被破坏。对于非实时系统而言,系统的正确性仅仅取决于指令的正确执行,其关键在于是否按指令的逻辑顺序进行,与指令在何时开始执行及何时执行完毕无关。例如,一个用于计算双精度浮点数平方根的程序,可以运行在500MHz的Pentium III计算机上,也可以运行在4.77MHz的8086计算机上。两者的区别仅仅在于计算速度的快慢,而不会影响计算结果的正确性。通常衡量实时系统的三个指标如下:
·响应时间(Response Time):计算机系统识别外部事件并做出响应的时间。
·生存时间(Survival Time):数据的有效等待时间,在此时间段内数据有效。
·吞吐量(Throughput):在给定时间内,系统可以处理的事件总数。
对于实时系统而言,系统的正确性不仅与计算结果的正确性有关,而且更为重要的是必须在规定的时间内完成计算,否则系统就会出错或失败。
1.硬实时系统和软实时系统
依据实时系统的特性,可以将其分为“硬”实时系统(Hard Real-Time System)和“软”实时系统(Soft Real-Time System)两类。
“硬”实时系统的特性是:
·在任何情况下,都不能有延迟;
·如果延迟发生,则输出结果无效;
·当无法满足截止时间要求时,系统将会导致灾难性失效;
·当无法满足截止时间要求时,系统导致的经济损失巨大;
·系统响应时间通常为毫秒或微秒级。
比如飞行控制系统和核反应堆控制系统就是典型的“硬”实时系统。
“软”实时系统的特性是:
·输出结果的延迟会增加费用;
·延迟会导致系统性能下降;
·系统响应时间通常为毫秒或秒级。
比如网络实况转播系统就是一个典型的“软”实时系统。
2.单机实时系统和分布式实时系统
按实时系统运行环境的分布特性划分,实时系统可以划分为单机实时系统和分布式实时系统两大类。
·单机实时系统。在单机实时系统中,所有的任务都在同一台计算机上运行,只受同一个操作系统的调度。单机实时系统的最大优点在于软硬件结构简单,易于开发。
·分布式实时系统。在分布式实时系统中,多个任务分布在多台计算机上,不同节点上的任务通过互联网络进行通信。这些任务协调工作,共同构成一个实时系统。分布式实时系统的体系结构如图1-1所示。
图1-1 分布式实时系统体系结构
在分布式实时系统中,部分节点计算机与受控设备(产生或接收数据、接受实时控制)相连,不仅需要完成一些实时计算任务,还需要对外围设备进行实时控制。此外,还有其他节点计算机不与任何受控设备相连,它们只完成实时计算任务。
基于以上分类,实时嵌入式系统除了具备一般应用软件的特点之外,还有以下特点:
·嵌入性。绝大多数实时系统是较为复杂的专用系统,需要具备很高的容错能力,并且通常“嵌入”一个更大的系统中,即作为嵌入式软件。图1-2给出了典型的嵌入式系统结构。
图1-2 典型的嵌入式系统结构
·同外部环境交互作用。典型的实时系统往往和外部设备之间交互作用,可能控制某种设备或过程。实时系统通过传感器从外界采集数据,通过输出激励信号来控制外部设备。
·实时约束。实时系统往往有着较强的时间约束,要求在规定时间内必须完成事件的处理,如果延迟,往往会造成灾难性后果。
·实时控制。实时软件往往涉及实时控制,通过采集来的数据决定如何控制外部交联的设备。实时软件中并不全是实时部件,也有非实时部分,如数据的事后分析、处理等功能。
·反应式系统(Reactive System)。许多实时系统都是反应式系统,它们是基于事件驱动的,并且需要响应外部的激励。一般而言,实时系统对于外部激励的响应大多是依赖于状态的,也就是说,系统的响应输出不仅取决于当前的激励,而且和之前的系统激励有关。
·并发处理。大多数实时系统的一个显著特征就是存在并发处理,有许多外部事件需要同时处理。通常,外部事件的到来是无法预期的,更应注意的是实时系统的输入负载随时间的不同而发生显著变化,且这种负载往往也是无法预期的。
综上所述,本书将不区别实时系统(软件)、嵌入式系统(软件)和实时嵌入式系统(软件),统称为实时嵌入式系统(软件)。