嵌入式操作系统
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.2 嵌入式操作系统概述

从上面的描述中我们知道,嵌入式操作系统是嵌入式系统中的软件部分,且是软件部分的核心内容。嵌入式操作系统在本质上也是一个操作系统,其一些概念与通用计算机操作系统是一致的,但由于应用环境的不同,嵌入式操作系统与通用操作系统有一些区别,且嵌入式操作系统本身具备一些通用操作系统所不具备的特性。在本节中,我们对嵌入式操作系统本身具备的一些特点,以及与通用操作系统的区别进行简单描述。

1.2.1 嵌入式操作系统的特点

一个典型的嵌入式操作系统应该具备下列特点。

1.可裁剪性

可裁剪性是嵌入式操作系统最大的特点,因为嵌入式操作系统的目标硬件配置差别很大,有的硬件配置非常高档,有的却因为成本原因,硬件配置十分紧凑,嵌入式操作系统必须能够适应不同的硬件配置环境,具备较好的可裁剪性。在一些配置高、功能要求多的情况下,嵌入式操作系统可以通过加载更多的模块来满足这种需求;而在一些配置相对较低、功能单一的情况下,嵌入式操作系统必须能够通过裁剪的方式,把一些不相关的模块裁剪掉,只保留相关的功能模块。为了实现可裁剪,在编写嵌入式操作系统的时候,就需要充分考虑,进行仔细规划,把整个操作系统的功能进行细致的划分,每个功能模块尽量以独立模块的形式来实现。

对于裁剪的具体实现,可通过两种方式。一种方式是把整个操作系统功能分割成不同的功能模块,进行独立编译,形成独立的二进制可加载映像,这样就可以根据应用系统的需要,通过加载或卸载不同的模块来实现裁剪。另外一种方式,是通过宏定义开关的方式来实现裁剪,针对每个功能模块,定义一个编译开关(#define)来进行标志。若应用系统需要该模块,则在编译的时候,定义该标志,否则取消该标志,这样就可以选择需要的操作系统核心代码,与应用代码一起联编,实现可裁剪的目的。其中,第一种方式是二进制级的可裁剪方式,对应用程序更加透明,且无需公开操作系统的源代码,第二种方式则需要应用程序详细了解操作系统的源代码组织。

2.与应用代码一起连接

嵌入式操作系统的另外一个重要特点,就是与应用程序一起,连接成一个统一的二进制模块,加载到目标系统中。而通用操作系统则不然,通用操作系统有自己的二进制映像,可以自行启动计算机,应用程序单独编译连接,形成一个可执行模块,并根据需要在通用操作系统环境中运行。

3.可移植性

通用操作系统的目标硬件往往比较单一,比如,对于UNIX、Windows等通用操作系统,只考虑几款比较通用的CPU就可以了,比如Intel的IA32和Power PC。但在嵌入式开发中却不同,存在多种多样的CPU和底层硬件环境,光CPU,流行的可能就会达到十几款。嵌入式操作系统必须能够适应这种情况,在设计的时候充分考虑不同底层硬件的需求,通过一种可移植的方案来实现不同硬件平台上的方便移植。比如,在嵌入式操作系统设计中,可以把硬件相关部分代码单独剥离出来,在一个单独的模块或源文件中实现,或者增加一个硬件抽象层,来实现不同硬件的底层屏蔽。总之,可移植性是衡量一个嵌入式操作系统质量的重要标志。

4.可扩展性

嵌入式操作系统的另外一个特点,就是具备较强的可扩展性,可以很容易地在嵌入式操作系统上扩展新的功能。比如,随着Internet的快速发展,可以根据需要,在对嵌入式操作系统不做大量改动的情况下,增加TCP/IP协议功能或HTTP协议解析功能。这样必然要求嵌入式操作系统在设计的时候,充分考虑功能之间的独立性,并为将来的功能扩展预留接口。