1.2 嵌入式软件的概念与特点

嵌入式软件指运行于嵌入式计算机系统之上的软件。而运行于通用计算机上面的软件称为通用软件。在嵌入式系统发展的初期,它的种类很少,规模也很小,基本上是硬件的附属品。随着嵌入式系统应用的发展,特别是后PC时代的到来,嵌入式软件的种类和规模都得到了极大的发展,形成了一个完整独立的软件体系。

由于嵌入式系统的应用目标和硬件环境的影响,嵌入式软件形成了一系列与通用软件有一定差异的特点。这些特点主要包括:系统精简、标准化程度相对较低、开发工作难度大、实时性强、软件开发与硬件开发往往同步进行、要求固化存储、可靠性要求更高等。

1. 系统精简

由于嵌入式系统的资源一般比较有限,所以嵌入式软件必须尽可能地精简才能适应这种状况。另外,由于嵌入式系统的功能比较专一,不需要考虑很多通用性功能,所以也为系统的简化提供了条件。系统精简不但使嵌入式软件可以在资源有限的硬件环境中运行,同时也有利于控制系统成本和提高系统的安全性。例如,ENEA公司的OSE操作系统的内核只有5KB,这比微软Windows系统的内核尺寸要小得多。

2. 标准化程度相对较低

来自多方面的原因使嵌入式软件的标准化工作进展比较缓慢,在很多方面没有可以遵照的标准,这对应用造成了一定的影响。目前计算机界正在努力改变嵌入式软件标准化程度低的现状,已经制定、正在制定和准备制定一系列有关嵌入式软件的标准。例如,《移动数据库应用编程接口规范》、《手持电子产品嵌入式软件API》、《嵌入式软件质量度量》等。但彻底改变嵌入式软件标准化程度相对较低状况,还有大量的工作要做。

3. 开发工作难度大

嵌入式系统的特点使得其软件受到时间和空间的严格限制,加上运行环境复杂,使嵌入式软件的开发变得很困难。对于嵌入式软件来说,开发环境与运行环境是不相同的。嵌入式软件要在目标系统上运行,但在目标系统上不能进行开发工作。开发工作要在宿主机上进行,在宿主机上将应用程序调试无误后才能放到目标系统上面去运行。这个过程比通用软件复杂得多。

4. 实时性强

实时性是嵌入式系统的一个重要特征。嵌入式系统上的相当一部分应用都要求系统具有实时处理的能力,这种实时性主要是靠软件层来体现。软件对外部事件的反应必须是快速的、确定的、可重复实现的,不管系统当时的内部状态如何都是可以预测的。同时对于事件的处理一定要在限定的时间期限之前完成,否则将可能引起系统崩溃。

5. 软件与硬件开发往往同步进行

与通用计算机系统相比,嵌入式软件与硬件之间的关系更加密切,硬件的变化往往对操作系统有非常大的影响,而且这种影响还会传递到应用程序层面,所以对一些嵌入式系统来说,软件开发如果能与硬件开发同步进行,则非常有利于提高整个系统的效率。

6. 要求固化存储

嵌入式系统的性质决定了其上没有在通用计算机系统中最常见的磁盘存储设备。而且许多因素也不允许程序在运行前从磁盘上加载。所以,嵌入式系统程序一般都放在只读存储器或闪存中,可以在只读存储器或闪存中直接执行。

7. 可靠性要求更高

在嵌入式系统中,软件是固化在硬件系统上,和硬件一起作为一个整体推向市场的。软件一旦出现问题,维护起来就比较麻烦。另外,有相当一部分嵌入式软件是用在实时控制领域,负责控制着相当重要的对象,如电站,航天飞行器等。软件如果出现问题,造成的后果将非常严重。所以要求嵌入式软件的可靠性必须非常高。