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