宋 然
◆ 概述 嵌入式实时操作系统(Real Time Embedded Operating System)是一种实时的、支持嵌入式系统应用的操作系统软件,它是嵌入式系统(包括硬、软件系统)极为重要的组成部分,通常包括与硬件相关的底层驱动软件、系统内核、设备驱动接口、通信协议、图形界面、标准化浏览器Browser等。目前,嵌入式操作系统的品种较多,其中较为流行的有:VxWorks、Windows CE、Palm OS、Real Time Linux、pSOS、PowerTV以及Microware公司的 OS-9。与通用操作系统相比较,它在系统实时高效性、硬件的相关依赖性、软件固态化以及应用的专用性等方面具有较为突出的特点。 ◆ 嵌入式操作系统的发展 (1) 无操作系统的嵌入算法阶段:这一阶段的嵌入式系统是以可编程控制器的形式、以单芯片为核心的系统,同时具有与一些监测、伺服、指示设备相配合的功能。这种系统大部分应用于一些专业性极强的工业控制系统中,通过汇编语言编程对系统进行直接控制,运行结束后清除内存。这一阶段系统的主要特点是系统结构和功能都相对单一,针对性强,但无操作系统支持,几乎没有用户接口。 (2) 简单监控式的实时操作系统阶段:这一阶段的嵌入式系统主要以嵌入式处理器为基础,以简单监控式操作系统为核心。系统的特点是处理器种类繁多,通用性比较弱;系统开销小,效率高;一般配备系统仿真器,具有一定的兼容性和扩展性;操作系统的用户界面不够友好,其主要用来控制系统负载以及监控应用程序运行。 (3) 通用的嵌入式实时操作系统阶段:以通用型嵌入式实时操作系统为标志的嵌入式系统。如VxWorks、pSOS、OS-9、Windows CE就是这一阶段的典型代表。这一阶段系统的特点是能运行在各种不同类型强大的微处理器上;具有强大的通用型操作系统的功能,如具备了文件和目录管理、多任务、设备支持、网络支持、图形窗口以及用户界面等功能;具有丰富的应用程序接口(API)和嵌入式应用软件。 ◆ 实时多任务操作系统与分时多任务操作系统 实时多任务操作系统是根据操作系统的工作特性而言的。实时是指物理进程的真实时间,实时操作系统是指具有实时性能支持实时控制系统工作的操作系统。对于分时操作系统,软件的执行在时间上的要求并不严格,时间上的错误一般不会造成灾难性的后果。而对于实时操作系统,主要任务是对事件进行实时的处理,虽然事件可能在无法预知的时刻到达,但是软件上必须在事件发生时能够在严格的时限内作出响应。实时操作系统具有如下功能:① 任务管理多任务和基于优先级的任务调度;② 任务间同步和通信信号量信邮箱等;③ 存储器优化管理含ROM的管理;④ 实时时钟服务;⑤ 中断管理服务。 ◆ VxWorks及其开发工具Tornado (1) VxWorks操作系统概述 VxWorks由美国WindRiver系统公司出品,在嵌入式操作系统领域中颇具优势。目前该操作系统的版本为VxWorks 5.4,其核心功能主要有微内核wind,任务间的通信机制,高级的网络支持,功能强大的文件系统(VxWorks支持4种文件系统:dosFs、rt11Fs、rawFs、tapeFs)和I/O管理,POSIX标准实时扩展,C++和其他标准支持等核心功能。这些核心功能可以与WindRiver系统的其他附件和超过400个Tornado合作伙伴的产品很好的结合在一起。它是专门为嵌入式微处理器设计的高模块化、高性能的实时操作系统,广泛应用于高科技产品中,包括消费电子设备、工业自动化、无线通信产品、医疗仪器、数字电视与多媒体设备等,具有很好的安全性、容错性以及系统灵活性。VxWorks操作系统的在国外的主要商业用户有Cisco Systems、Bay Networks、3Com、 Fore Systems、HP、Lucent、NASA、Qualcomm,主要应用有火星探测车,爱国者导弹等。 (2) VxWorks系统结构 VxWorks是现在所有独立于处理器的实时系统中最具特色的操作系统。主要表现在:① VxWork系统运行环境支持的CPU包括PowerPC、68K、SPARC、i960、x86等,同时支持RISC、DSP技术。② 它的微内核Wind是一个具有较高性能的标准的嵌入式实时操作系统内核,其主要特点包括快速多任务切换、抢占式任务调度、任务间通信手段多样化等。③ 该系统具有较好的可剪裁能力,可剪裁的组件超过80个。用户可以根据自己系统的目标功能,通过交叉开发环境方便地进行配置。④ 支持应用程序的动态连接和动态下载。⑤ 具有较好的兼容性。 VxWorks是带有一个相当小的、真正微内核的层次结构。内核仅提供多任务环境进程间通信和同步功能这些功能模块,足够支持VxWorks在较高层次所提供的丰富的性能要求。多任务内核的基本功能是提供一个多任务环境,使许多程序在表面上表现为并发执行,而事实上内核是根据基本的调度算法使他们分段执行每个明显独立的程序。每个任务拥有自己的上下文,使该任务执行的时候能看到CPU环境和系统资源。内核维护系统中的每个任务的当前状态迁移发生在应用程序调用内核功能服务的时候。 wind内核状态:就绪态 一个任务当前除了CPU不等待任何资源;阻塞态 一个任务由于某些资源不可获得而被阻塞;延迟态 一个任务睡眠一段时间;挂起态 主要用于调试的一个辅助状态,挂起禁止任务的执行。任务被创建以后进入挂起态,需要通过特定的操作使被创建的任务进入就绪态,这一操作执行速度很快,从而使应用程序能够提前创建任务并以一种快捷的方式激活该任务。 调度控制:多任务需要一个调度算法分配CPU给就绪的任务。VxWorks 中默认的调度算法是基于优先级的抢占调度,调度采用抢占的方式就是指当一个优先级高于当前任务的任务变为就绪态时,内核将立即保存当前任务的上下文并切换到高优先级任务的上下文。外部中断被指定优先于任何任务的优先级,就能够在任何时候抢占一个任务。 任务间通信:wind内核提供了一套丰富的任务间通信与同步的机制,这些通信功能使一个应用中各个独立的任务能够相互地协调各自的行动。① 共享地址空间 wind内核的任务间通信机制的基础是通过共享地址空间,任务能够使用共享数据结构的指针自由地通信,管道不需要映射一块内存区到两个互相通信任务的寻址空间。② 互斥操作 实现互斥的方法包括禁止中断、禁止任务抢占和通过信号量进行资源锁定。最强的互斥方法是屏蔽中断,这样的锁定保证了对CPU的互斥访问,但是这种方法对于实时是不恰当的,因为它在锁定期间阻止系统响应外部事件,长的中断延时对于要求有确定响应时间的应用是不可接受的;禁止抢占提供了强制性较弱的互斥方式;互斥信号量,信号量是用于锁定共享资源访问的基本方式,信号量限制了互斥操作仅作用于相关的资源,一个信号量被创建来保护资源。 (3) VxWorks的开发平台TornadoII TornadoII具有友好的开发调试环境,便于操作配置和应用程序的开发调试。它在1995年获得了EDN杂志颁发的年度产品创新奖。它是一个集成的软件开发环境,提供了一种非常有效的方法来开发实时的嵌入式应用。它由3个部分构成:① VxWorks―高性能的实时操作系统;② 应用的构建工具;③ 一个集成的开发环境(IDE)―管理和构造工程,建立和管理主机与目标机通信,运行、调试和监视VxWorks的应用程序。IDE主要包括源码编辑器、工程管理工具、C和C++的编译器、资源浏览器、图形增强的调试器、C语言命令外壳、VxWorks的目标模拟器等,这些都为实时嵌入式应用程序的编制提供了丰富的手段。它的开发环境能够提供上述所有特色,而与目标系统是否资源有限无关,它主要运行于主机系统之上,同时共享有基于主机的动态链接和远程目标系统的符号表。Tornado开发工具和目标机的通信要经由目标服务器和目标代理。使用Tornado能够使嵌入式应用的时间大为缩短。 ◆ 结语 本文以WindRiver公司的VxWorks及其开发工具Tornado为例,介绍了嵌入式实时操作系统及其开发工具在嵌入式系统中占据的重要地位,国内在这方面所做的工作取得了一定的成果,如凯思集团自主研制开发的嵌入式操作系统Hopen OS,但总体水平与国外相比仍然比较落后,随着嵌入式应用的迅速发展,对这方面的需求必将进一步加大,我们应该借鉴国外的先进经验来开发完善我们自己的产品,力争早日赶上世界先进水平。
|