VxWorks操作系統(tǒng)是美國WindRiver公司于1983年設(shè)計開發(fā)的一種嵌入式實時操作系統(tǒng)(RTOS),它以其良好的可靠性和卓越的實時性被廣泛地應(yīng)用在通信、軍事、航空、航天等高精尖技術(shù)及實時性要求極高的領(lǐng)域中,如衛(wèi)星通訊、軍事演習(xí)、彈道制導(dǎo)、飛機導(dǎo)航等。在美國的 F-16、FA-18 戰(zhàn)斗機、B-2隱形轟炸機和愛國者導(dǎo)彈上,甚至連1997年4月在火星表面登陸的火星探測器上也使用到了VxWorks。VxWorks原先對中國區(qū)禁止銷售,自解禁以來,在我們的軍事、通信、工業(yè)控制等領(lǐng)域得到了非常廣泛的應(yīng)用。
VxWorks的實時性體現(xiàn)在能于限定的時間內(nèi)執(zhí)行完所規(guī)定的功能,并能在限定的時間內(nèi)對外部的異步事件作出響應(yīng)。因此,實時性系統(tǒng)主要應(yīng)用于過程控制、數(shù)據(jù)采集、通信、多媒體信息處理等對時間敏感的場合。本文將對這個操作系統(tǒng)進行一個入門級的、全面的介紹。為力求展示其全貌,全文共分五章:
(1)搭建VxWorks嵌入式開發(fā)環(huán)境;
(2)簡要介紹VxWorks的基本組成,內(nèi)核的基本結(jié)構(gòu);
(3)概述VxWorks板級支持包(BSP)的概念及VxWorks的啟動過程;
(4)介紹VxWorks設(shè)備驅(qū)動的架構(gòu)及編寫方法;
(5)指明VxWorks應(yīng)用開發(fā)的思路,任務(wù)調(diào)度及任務(wù)同步、中斷與任務(wù)的同步機制。
以上各章中將貫穿著許多實例,由于本文定位于入門級教程,所以文中的實例都將十分簡單。下面我們進入第一章內(nèi)容的講解。
如圖1,嵌入式系統(tǒng)的調(diào)試方法一般為通過PC(宿主機)上的集成開發(fā)環(huán)境交叉編譯針對特定電路板(目標機)的程序,然后將程序通過目標板的JTAG、串口或網(wǎng)口等途徑下載到目標板上運行。因此,為了構(gòu)造一個嵌入式系統(tǒng)的學(xué)習(xí)環(huán)境,擁有一塊包含CPU、存儲器及I/O電路(構(gòu)造計算機系統(tǒng))的目標電路板往往是必要的。雖然許多集成開發(fā)環(huán)境附帶模擬軟件,但僅限于指令集的模擬,均無法模擬物理的目標機硬件平臺,因而在其上只能進行應(yīng)用程序的象征性模擬開發(fā)。但是,并非所有人都能擁有一塊物理的電路板。在這種情況下,我們?nèi)绾螛?gòu)造一個模擬的開發(fā)環(huán)境,其學(xué)習(xí)效果就如同擁有完全真實的電路板一樣呢?本文試圖解答此問題,主體內(nèi)容包括四個方面:
(1) 利用VMware等軟件模擬真實的目標機;
(2) 構(gòu)建VMware虛擬PC上VxWorks BSP,建立Bootrom和OS映像;
(3) 修改Tornado相關(guān)設(shè)置,連接宿主機與目標機,建立調(diào)試通道;
(4) 寫一個簡單的應(yīng)用程序并下載到目標系統(tǒng)運行。
圖1 嵌入式系統(tǒng)的調(diào)試
本章工作的最終目標為:
(1)VxWorks在VMware啟動成功并順利運行,如圖2;
圖2 在VMware中運行的VxWorks
(2)可在Tornado上針對目標板編譯程序并進行調(diào)試,如圖3。
圖3 與目標機建立調(diào)試通道的Tornado
1. 模擬目標機
PC也具有目標機的所有特點,實際上,我們可以把PC作為嵌入式系統(tǒng)的目標機,從而構(gòu)造如圖4所示的開發(fā)模型:
圖4 PC作為目標機
很遺憾,這種方法實際上非常麻煩,同時開動兩臺PC進行調(diào)試將使你和你的室友飽受折磨,既然他如此地熱切于游戲和上網(wǎng)。因此,我們可以借助VMware來在本機上虛擬出另一PC。
VMware的確是天才的作品!在同一PC上,利用VMware幾乎可以安裝所有的操作系統(tǒng),而且操作系統(tǒng)之間的切換不需要重新啟動電腦。VM的意義是Virtual Machine,即虛擬出一個邏輯的電腦,它可以提供基于Intel CPU的虛擬PC系統(tǒng)環(huán)境,包括CPU、內(nèi)存、BIOS、硬盤和其他外圍硬件設(shè)備。
下面我們講解用VMware來建立一臺虛擬PC的步驟:
(1)下載并安裝VMware;
(2)使用VMware向?qū)Ы⒁粋針對VxWorks的虛擬機;
此步驟中注意在操作系統(tǒng)中選擇“other”,如圖5:
由于目標機最終通過軟盤啟動,因此要求你的電腦具有軟驅(qū)。很遺憾,當年日常使用的軟盤如今成了古董,很少再有電腦配備軟驅(qū)。因此,我們再來制造一個假冒偽劣產(chǎn)品,虛擬一個軟驅(qū)。又一個天才的工具軟件RamDiskNT為我們提供了這一便利,圖6演示了用RamDiskNT虛擬一個1.44M軟盤的方法。
僅僅虛擬一個軟驅(qū)是不夠的,把這個軟驅(qū)添加到我們建立的虛擬機中才算修成正果,圖7演示了添加軟驅(qū)后的虛擬機硬件設(shè)置。
圖7 包含軟驅(qū)的虛擬機