摘 要:本文簡 要介紹和分析了VxWorks嵌入式實時操作系統的實現結構. VxWorks是Windriver公司開發的為實時嵌入式系統設計開發的操作系統軟件,為程序員提供了高效的實時任務調度、中斷管理,實時的系統資源以及實時的任務間通信. 其核心功能主要有微內核,任務間通信機制,網絡支持,文件系統和I/O管理,POSIX標準實時擴展,以及C++等其他標準支持。
關鍵詞:嵌入式 實時 操作系統 微內核 任務 中斷 調度 目標系統
一 VxWorks實時操作系統背景
用戶在開發具有日益復雜的32位嵌入式處理器的產品時,需要一個用來連接產品應用程序和底層硬件的操作系統。用戶所尋求的操作系統應該具有的重要的特點包括:
可靠性高的實時性能
可下載到終產品的板上內存的豐富和靈活的功能模塊集
與綜合全面的主機開發環境的可協同工作。
VxWorks操作系統是美國WindRiver公司于1987年設計開發的一種嵌入式實時操作系統(RTOS),是Tornado II嵌入式開發環境的關鍵組成部分。
VxWorks是Windriver公司開發專門為實時嵌入式系統設計開發的操作系統軟件,為程序員提供了高效的實時任務調度、中斷管理,實時的系統資源以及實時的任務間通信。應用程序員可以將盡可能多的精力放在應用程序本身,而不必再去關心系統資源的管理。該系統主要應用在單板機、數據網絡(以太網交換機、路由器)和通信方面等多方面。通過對VxWorks的研究,可以使我們對嵌入式操作系統的研究和開發更進一步,尤其對國內的類似研制廠家有借鑒意義。
VxWorks操作系統的主要功能
目前VxWorks操作系統的版本為VxWorks 5.4,其核心功能主要有:
微內核wind
任務間通信機制
網絡支持
文件系統和I/O管理
POSIX標準實時擴展
C++以及其他標準支持
這些核心功能可以與WindRiver系統的其他附件和Tornado合作伙伴的產品結合在一起使用。
二 VxWorks實時操作系統的簡介
VxWorks實時操作系統包括微內核wind、網絡支持、文件系統和I/O管理、C++和其他標準支持等核心功能。
1. 微內核設計
處于VxWorks實時操作系統核心的是高性能的微內核wind。這個微內核支持所有的實時特征:快速任務切換、中斷支持、搶占式和時間片輪轉調度等。微內核設計減少了系統開銷,從而保證了對外部事件的快速、確定的反應。
運行環境也提供了有效的任務間通信機制,允許獨立的任務在實時系統中與其行動相協調。開發者在開發應用程序時可以使用多種方法:用于簡單數據共享的共享內存、用于單CPU的多任務間信息交換的消息隊列和管道、套接口、用于網絡通信的遠程過程調用、用于處理異常事件的信號等。為了控制關鍵的系統資源,提供了三種信號燈:二進制、計數、有優先級繼承特性的互斥信號燈。
2. 可裁剪的運行軟件
VxWorks之所以設計為具有可裁剪性,是為了使開發者能夠根據自己的應用程序需要,而不是根據操作系統的需要,來分配稀少的內存資源。從需要幾個KB字節內存的深層嵌入式設計到需要更多的操作系統的功能的復雜的高端的實時系統,開發者也許需要從100多個不同的選項中進行選擇以產生上百種的配置方式。許多獨立的模塊都是在開發時要使用而在產品中卻不再使用。
而且,這些子系統本身也是可裁剪的,這樣就允許開發者為廣泛的應用程序進行更為優化的VxWorks運行環境配置。例如,如果應用程序不需要某些功能模塊,就可以將它移出ANSI C運行庫;如果應用程序不需要某些特定的內核同步對象,這些對象也可以忽略。還有,TCP、UDP、套接口和標準Berkeley服務也可以根據需要將之移出或移入網絡協議棧。
這些配置選項可以通過Tornado II的項目工具圖形接口輕易地選擇。開發者也可以使用Tornado II的自動裁剪特性,自動地分析應用程序代碼并合并合適的選項。
三 VxWorks操作系統的基本結構
VxWorks操作系統的基本構成部件主要有以下五個部分:
板級支持包BSP(Board Support Package)
微內核wind
網絡系統
文件系統
I/O系統
VxWorks 操作系統包括了板級支持包BSP(Board Support Package)、進程管理、存儲管理、設備管理、文件系統管理、網絡協議及系統應用等幾個部分。VxWorks只占用了很小的存儲空間,并可高度裁減,保證了系統能以較高的效率運行。
1.板級支持包 BSP(Board Support Package)
板級支持包對各種板子的硬件功能提供了統一的軟件接口,它包括硬件初始化、中斷的產生和處理、硬件時鐘和計時器管理、局域和總線內存地址映射、內存分配等等。每個板級支持包括一個 ROM 啟動(Boot ROM)或其它啟動機制。
2.高性能的實時操作系統核心 wind
[1].VxWorks 的核心,被稱作 wind,包括多任務調度(采用優先級搶占方式),任務間的同步和進程間通信機制以及中斷處理,看門狗和內存管理機制。一個多任務環境允許實時應用程序以一套獨立任務的方式構筑,每個任務擁有獨立的執行線程和它自己的一套系統資源。進程間通信機制使得這些任務的行為同步、協調。
[2].wind使用中斷驅動和優先級的方式。它縮短了上下文轉換的時間開銷和中斷的時延。在 VxWorks 中,任何例程都可以被啟動為一個單獨的任務,擁有它自己的上下文和堆棧。還有一些其它的任務機制可以使任務掛起、繼續、刪除、延時或改變優先級。
[3].wind 核提供信號量作為任務間同步和互斥的機制。在 wind 核中有幾種類型的信號量,它們分別針對不同的應用需求:二進制信號量、計數信號量、互斥信號量和 POSIX 信號量。所有的這些信號量是快速和高效的,它們除了被應用在開發設計過程中外,還被廣泛地應用在 VxWorks 高層應用系統中。對于進程間通信,wind 核也提供了諸如消息隊列、管道、套接字和信號等機制。
3.網絡設施
VxWorks的網絡結構如圖所示,它提供了對其它網絡和 TCP/IP 網絡系統的"透明"訪問,包括與BSD套接字兼容的編程接口,遠程過程調用(RPC),SNMP(可選項),遠程文件訪問(包括客戶端和服務端的NFS機制以及使用RSH,FTP 或 TFTP的非NFS機制)以及BOOTP 和 ARP 代理。無論是松耦合的串行線路、標準的以太網連接還是緊耦合的利用共享內存的背板總線,所有的 VxWorks 網絡機制都遵循標準的 Internet 協議。
4.文件系統
VxWorks 提供的快速文件系統適合于實時系統應用。它包括幾種支持使用塊設備(如磁盤)的本地文件系統。這些設備都使用一個標準的接口從而使得文件系統能夠被靈活地在設備驅動程序上移植。
VxWorks 也支持 SCSI 磁帶設備的本地文件系統。VxWorks I/O 體系結構甚至還支持在一個單獨的 VxWorks 系統上同時并存幾個不同的文件系統。
VxWorks 支持四種文件系統:
dosFs
rt11Fs
rawFs
tapeFs。
另一方面,普通數據文件,外部設備都統一作為文件處理。它們在用戶面前有相同的語法定義,使用相同的保護機制。這樣既簡化了系統設計又便于用戶使用。
5.I/O 系統
VxWorks 提供了一個快速靈活的與 ANSI C 兼容的 I/O 系統,包括
UNIX 標準的緩沖 I/O
POSIX 標準的異步 I/O
VxWorks 包括以下驅動程序:
網絡驅動
管道驅動
RAM盤驅動
SCSI驅動
鍵盤驅動
顯示驅動
磁盤驅動
并口驅動
四Tornado II系統開發工具
了解Vxworks操作系統的構成,對我們開發目標系統上的軟件和調試有重要意義,同時也能鏈接其內核的許多功能方便共享。在Tornado集成環境上的開發其基本點是動態鏈接與加載,即Tornado允許開發者增量地將目標模塊加載到目標系統上去,這種動態的鏈接和加載功能是Tornado系統的核心功能,可以使開發者省去通常的開發步驟:在主機上將應用程序與內核鏈接起來,然后將整個應用程序下載到目標系統上去。這樣,編輯-測試-調試的周期會大為縮短;而且,所有的模塊都是可以共享的,主機上的應用程序模塊也不需要重新鏈接,所以,加載目標模塊到運行中的VxWorks目標系統中以達到調試和重新配置的目的成為可能。關于如何調試VXWORKS目標系統本文不贅述。
參考文獻:
1. Windriver System Inc. “Tornado Training Workshop” ,ver5.1,May 1999.
2.Windriver System Inc. “Vxworks Programmer’s Guide”, v5.4,May 1999.
3. Windriver System Inc. “Tornado Getting Started Guide”,v2.0 ,May 1999.