VxWorks嵌入式实时操作系统结构简析
扫描二维码
随时随地手机看文章
关键词:嵌入式 实时 操作系统 微内核 任务 中断 调度 目标系统
一 VxWorks实时操作系统背景
用户在开发具有日益复杂的32位嵌入式处理器的产品时,需要一个用来连接产品应用程序和底层硬件的操作系统。用户所寻求的操作系统应该具有的最重要的特点包括:
可靠性高的实时性能
可下载到最终产品的板上内存的丰富和灵活的功能模块集与全面的主机开发环境的可协同工作。
VxWorks操作系统是美国WindRiver公司于1987年设计开发的一种嵌入式实时操作系统(),是Tornado II嵌入式开发环境的关键组成部分。
VxWorks是Windriver公司开发专门为实时嵌入式系统设计开发的操作系统软件,为程序员提供了高效的实时任务调度、中断管理,实时的系统资源以及实时的任务间通信。应用程序员可以将尽可能多的精力放在应用程序本身,而不必再去关心系统资源的管理。该系统主要应用在单板机、数据网络(以太网交换机、路由器)和通信方面等多方面。通过对VxWorks的研究,可以使我们对嵌入式操作系统的研究和开发更进一步,尤其对国内的类似研制厂家有借鉴意义。
VxWorks操作系统的主要功能
目前VxWorks操作系统的版本为VxWorks 5.4,其核心功能主要有:
微内核wind
任务间通信机制
网络支持
文件系统和I/O管理
标准实时扩展
C++以及标准支持
这些核心功能可以与WindRiver系统的附件和Tornado合作伙伴的产品结合在一起使用。
二 VxWorks实时操作系统的简介
VxWorks实时操作系统包括微内核wind、网络支持、文件系统和I/O管理、C++和标准支持等核心功能。
1. 微内核设计
处于VxWorks实时操作系统核心的是高性能的微内核wind。这个微内核支持所有的实时特征:快速任务切换、中断支持、抢占式和时间片轮转调度等。微内核设计减少了系统开销,从而保证了对外部事件的快速、确定的反应。
运行环境也提供了有效的任务间通信机制,允许独立的任务在实时系统中与其行动相协调。开发者在开发应用程序时可以使用多种方法:用于简单数据共享的共享内存、用于单CPU的多任务间信息交换的消息队列和管道、套接口、用于网络通信的远程过程调用、用于处理异常事件的信号等。为了控制关键的系统资源,提供了三种信号灯:二进制、计数、有优先级继承特性的互斥信号灯。
2. 可裁剪的运行软件
VxWorks之所以设计为具有可裁剪性,是为了使开发者能够根据自己的应用程序需要,而不是根据操作系统的需要,来分配稀少的内存资源。从需要几个KB字节内存的深层嵌入式设计到需要更多的操作系统的功能的复杂的高端的实时系统,开发者也许需要从100多个不同的选项中进行选择以产生上百种的配置方式。许多独立的模块都是在开发时要使用而在产品中却不再使用。
而且,这些子系统本身也是可裁剪的,这样就允许开发者为最广泛的应用程序进行更为优化的VxWorks运行环境配置。例如,如果应用程序不需要某些功能模块,就可以将它移出 C运行库;如果应用程序不需要某些特定的内核同步对象,这些对象也可以忽略。还有,TCP、UDP、套接口和标准Berkeley服务也可以根据需要将之移出或移入网络协议栈。
这些配置选项可以通过Tornado II的项目工具图形接口轻易地选择。开发者也可以使用Tornado II的自动裁剪特性,自动地分析应用程序代码并合并合适的选项。
三 VxWorks操作系统的基本结构
VxWorks操作系统的基本构成部件主要有以下五个部分:
板级支持包BSP(Board )
微内核wind
网络系统
文件系统
I/O系统
VxWorks 操作系统包括了板级支持包BSP(Board )、进程管理、存储管理、设备管理、文件系统管理、网络协议及系统应用等几个部分。VxWorks只占用了很小的存储空间,并可高度裁减,保证了系统能以较高的效率运行。
1.板级支持包 BSP(Board )
板级支持包对各种板子的硬件功能提供了统一的软件接口,它包括硬件初始化、中断的产生和处理、硬件时钟和计时器管理、局域和总线内存地址映射、内存分配等等。每个板级支持包括一个 ROM 启动(Boot ROM)或其它启动机制。
2.高性能的实时操作系统核心 wind
[1].VxWorks 的核心,被称作 wind,包括多任务调度(采用优先级抢占方式),任务间的同步和进程间通信机制以及中断处理,看门狗和内存管理机制。一个多任务环境允许实时应用程序以一套独立任务的方式构筑,每个任务拥有独立的执行线程和它自己的一套系统资源。进程间通信机制使得这些任务的行为同步、协调。
[2].wind使用中断驱动和优先级的方式。它缩短了上下文转换的时间开销和中断的时延。在 VxWorks 中,任何例程都可以被启动为一个单独的任务,拥有它自己的上下文和堆栈。还有一些其它的任务机制可以使任务挂起、继续、删除、延时或改变优先级。
[3].wind 核提供信号量作为任务间同步和互斥的机制。在 wind 核中有几种类型的信号量,它们分别针对不同的应用需求:二进制信号量、计数信号量、互斥信号量和 信号量。所有的这些信号量是快速和高效的,它们除了被应用在开发设计过程中外,还被广泛地应用在 VxWorks 高层应用系统中。对于进程间通信,wind 核也提供了诸如消息队列、管道、套接字和信号等机制。
3.网络设施
VxWorks的网络结构如图所示,它提供了对其它网络和 TCP/IP 网络系统的"透明"访问,包括与BSD套接字兼容的编程接口,远程过程调用(RPC),(可选项),远程文件访问(包括客户端和服务端的NFS机制以及使用RSH,FTP 或 P的非NFS机制)以及 和 ARP 代理。无论是松耦合的串行线路、标准的以太网连接还是紧耦合的利用共享内存的背板总线,所有的 VxWorks 网络机制都遵循标准的 协议。
4.文件系统
VxWorks 提供的快速文件系统适合于实时系统应用。它包括几种支持使用块设备(如磁盘)的本地文件系统。这些设备都使用一个标准的接口从而使得文件系统能够被灵活地在设备驱动程序上移植。
VxWorks 也支持 磁带设备的本地文件系统。VxWorks I/O 体系结构甚至还支持在一个单独的 VxWorks 系统上同时并存几个不同的文件系统。
VxWorks 支持四种文件系统:
dosFs
rt11Fs
rawFs
tapeFs。
另一方面,普通数据文件,外部设备都统一作为文件处理。它们在用户面前有相同的语法定义,使用相同的保护机制。这样既简化了系统设计又便于用户使用。
5.I/O 系统
VxWorks 提供了一个快速灵活的与 C 兼容的 I/O 系统,包括
标准的缓冲 I/O
标准的异步 I/O
VxWorks 包括以下驱动程序:
网络驱动
管道驱动
RAM盘驱动
驱动
键盘驱动
显示驱动
磁盘驱动
并口驱动
四Tornado II系统开发工具
了解Vxworks操作系统的构成,对我们开发目标系统上的软件和调试有重要意义,同时也能链接其内核的许多功能方便共享。在Tornado集成环境上的开发其基本点是动态链接与加载,即Tornado允许开发者增量地将目标模块加载到目标系统上去,这种动态的链接和加载功能是Tornado系统的核心功能,可以使开发者省去通常的开发步骤:在主机上将应用程序与内核链接起来,然后将整个应用程序下载到目标系统上去。这样,编辑-测试-调试的周期会大为缩短;而且,所有的模块都是可以共享的,主机上的应用程序模块也不需要重新链接,所以,加载目标模块到运行中的VxWorks目标系统中以达到调试和重新配置的目的成为可能。关于如何调试VXWORKS目标系统本文不赘述。