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