嵌入式操作系统(Embedded Operating System,EOS)是嵌入式系统发展的重要技术之一。EOS是一种系统软件,负责嵌入系统的全部软、硬件资源的分配、调度,控制、协调并发活动,具有可裁减性,能够通过匹配相关模块来满足系统所要求的功能。
1.嵌入式操作系统体系架构
一般操作系统只注重平均性能,如对于整个系统来说,所有任务的平均响应时间是关键,而不关心单个任务的响应时间。嵌入式实时操作系统最主要的特征是性能上的“实时性”,也就是说系统的正确性不仅依赖于计算的逻辑结果,也依赖于结果产生的时间。从这个角度上看,可以把实时系统定义为“一个能够在指定的或者确定的时间内,完成系统功能和对外部或内部、同步或异步事件做出响应的系统”。图11.3给出了嵌入式操作系统体系架构。
图11.3 嵌入式操作系统体系架构
(1)硬件抽象层。有时也叫板级支持包,是一个介于硬件与软件之间的中间层次。硬件抽象层通过特定的上层接口与操作系统进行交互,向操作系统提供底层的硬件信息,并根据操作系统的要求完成对硬件的直接操作。
(2)嵌入式操作系统层。它是支持嵌入式系统应用的操作系统软件,是嵌入式系统(包括硬软件系统)极为重要的组成部分,通常包括与硬件相关的底层驱动软件、系统内核、设备驱动接口、通信协议、图形界面、标准化浏览器Browser等。
(3)中间层。中间件位于操作系统和应用软件之间,屏蔽了各种操作系统提供不同应用程序接口的事实,向应用程序提供统一的接口,从而便于用户开发应用程序,同时也使应用程序具有跨平台的特性。
(4)应用层。嵌入式应用程序运行于操作系统之上,利用操作系统提供的机制完成特定功能的嵌入式应用,不同的系统需要设计不同的嵌入式应用程序。它是整个系统功能的体现,系统的能力总是通过应用程序表现出来。一个简单的嵌入式系统可以没有支撑软件,甚至没有操作系统,但却不能没有应用软件,否则它就不能成为一个系统。
2.嵌入式操作系统分类及比较
国外的嵌入式操作系统发展较早,一般分为3类:一类是实时OS;一类是非实时OS;还有一类是开源的Linux系统,它既有实时OS,也有非实时OS。各类嵌入式操作系统都具有不同的应用领域,表11.1给出了部分操作系统应用领域。
表11.1 部分操作系统应用领域
在各类嵌入式操作系统中,Microsoft Windows CE是从整体上为有限资源的平台设计的多线程、完整优先权、多任务的操作系统;VxWorks是目前嵌入式系统领域实时性最好的系统;而pSOS属于WindRiver公司的产品,这个系统是一个模块化、高性能的实时操作系统,专为嵌入式微处理器设计,提供一个完全多任务环境,在定制的硬件上提供高性能和高可靠性,开发者可以根据操作系统的功能和内存需求定制成不同应用场合所需的系统,利用它来实现从简单的单个独立设备到复杂的、网络化的多处理器系统;QNX是一个实时的、可扩充的操作系统,它提供了一个很小的微内核以及一些可选的配合进程;3Com公司的PalmOS具有开放的操作系统应用程序接口(API),开发者可以根据需要自行开发所需要的应用程序;Micro-wave的OS9是为微处理器的关键实时任务而设计的操作系统,它提供了很好的安全性和容错性,与其他的嵌入式系统相比,它的灵活性和可升级性非常突出;Lynx Real-time Systems的LynxOS是一个分布式、嵌入式、可规模扩展的实时操作系统。表11.2给出了各种操作系统比较分析。(www.xing528.com)
表11.2 操作系统比较分析
国内嵌入式操作系统发展起步较晚,近年来具有完全自主知识产权的国产嵌入式操作系统取得了较大进展。如Hopen嵌入式操作系统在手机、PDA、网络计算等产品中得到应用;DeltaOS嵌入式操作系统也是国内具有代表性的嵌入式操作系统,该系统包括嵌入式实时内核、TCP IP系统、文件系统等组件,分别在IC卡终端、飞行导航终端、便携式通信终端以及军工产品中得到应用;SMARTOS嵌入式操作系统是一个可支持下一代SOC与多核芯片的实时多任务嵌入式操作系统。此外,基于开源的Linux嵌入式操作系统发展也很快,国内具有代表性的产品是Linous嵌入式操作系统,主要用于智能手机产品,如中兴通讯的嵌入式Linux、北京大唐移动通信设备有限公司用于其TD-SCDMA的Linux系统。另外,嵌入式Linux还在网络计算机、PMP等领域得到普及应用。
3.嵌入式操作系统的主要关键部分
(1)微内核结构。大多数操作系统至少被划分为内核层和应用层两个层次。内核只提供基本的功能,如建立和管理进程、提供文件系统、管理设备等,这些功能以系统调用方式提供给用户。一些桌面操作系统,如Windows、Linux等,将许多功能引入内核,操作系统的内核变得越来越大。内核变大使得占用的资源增多,剪裁起来很麻烦。大多数嵌入式操作系统采用了微内核结构,内核只提供基本的功能,如任务的调度、任务之间的通信与同步、内存管理、时钟管理等。其他的应用组件,如网络功能、文件系统、GUI系统等均工作在用户态,以系统进程或函数调用的方式工作,因而系统都是可裁减的,用户可以根据自己的需要选用相应的组件。
(2)任务调度。在嵌入式系统中,任务即线程。大多数的嵌入式操作系统支持多任务。多任务运行的实现实际是靠CPU在多个任务之间切换、调度。每个任务都有其优先级,不同的任务优先级可能相同,也可能不同。任务的调度有3种方式:不可抢占式调度、可抢占式调度和时间片轮转调度。不可抢占式调度是指,一个任务一旦获得CPU就独占CPU运行,除非由于某种原因,它决定放弃CPU的使用权;可抢占式调度是基于任务优先级的,当前正在运行的任务可以随时让位给优先级更高的处于就绪态的其他任务;当两个或两个以上任务有同样的优先级,不同任务轮转地使用CPU,直到系统分配的CPU时间片用完,这就是时间片轮转调度。目前,大多数嵌入式操作系统对不同优先级的任务采用基于优先级的抢占式调度法,对相同优先级的任务则采用时间片轮转调度法。
(3)硬实时和软实时。有些嵌入式系统对时间的要求较高,称之为实时系统。有两种类型的实时系统:硬实时系统和软实时系统。软实时系统并不要求限定某一任务必须在一定的时间内完成,只要求各任务运行得越快越好;硬实时系统对系统响应时间有严格要求,一旦系统响应时间不能满足,就可能会引起系统崩溃或致命的错误,一般在工业控制中应用较多。
(4)内存管理。针对有内存管理单元(MMU)的处理器设计的一些桌面操作系统,如Windows、Linux,使用了虚拟存储器的概念。虚拟内存地址被送到MMU,在这里,虚拟地址被映射为物理地址,实际存储器被分割为相同大小的页面,采用分页的方式载入进程。一个程序在运行之前,没有必要全部装入内存,而是仅将那些当前要运行的部分页面装入内存运行。
大多数嵌入式系统针对没有MMU的处理器设计,不能使用处理器的虚拟内存管理技术,采用的是实存储器管理策略,因而对于内存的访问是直接的。它对地址的访问不需要经过MMU,而是直接送到地址线上输出,所有程序中访问的地址都是实际的物理地址;而且,大多数嵌入式操作系统对内存空间没有保护,各个进程实际上共享一个运行空间。一个进程在执行前,系统必须为它分配足够的连续地址空间,然后全部载入主存储器的连续空间。
由此可见,嵌入式系统的开发人员不得不参与系统的内存管理。从编译内核开始,开发人员必须告诉系统这块开发板到底拥有多少内存;在开发应用程序时,必须考虑内存的分配情况并关注应用程序需要运行空间的大小。另外,由于采用实存储器管理策略,用户程序同内核以及其他用户程序在一个地址空间,程序开发时要保证不侵犯其他程序的地址空间,以使得程序不至于破坏系统的正常工作,或导致其他程序的运行异常。因此,嵌入式系统的开发人员对软件中的一些内存操作要格外小心。
(5)内核加载方式。嵌入式操作系统内核可以在Flash上直接运行,也可以加载到内存中运行。Flash的运行方式是把内核的可执行映像烧写到Flash上,系统启动时从Flash的某个地址开始执行。这种方法实际上是很多嵌入式系统所采用的方法。内核加载方式是把内核的压缩文件存放在Flash上,系统启动时读取压缩文件在内存里解压,然后开始执行。这种方式相对复杂一些,但是运行速度可能更快,因为RAM的存取速率要比Flash高。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。