在VMWare上安裝VxWorks操作系統
wabcon2003-12-27
概述
VxWorks是風河公司(Windriver)開發的實時操作系統之一,以其優秀的可靠性、實時性及內核的可裁減性,被廣泛應用於通信、軍事、航天、航空等關鍵行業領域。VxWorks可以適用於多種硬件體系結構,其中也包括大家日常都可以接觸到的PC體系結構。
VMWare 是被廣泛應用虛擬PC系統軟件,他可以提供基於Inetl CPU的虛擬PC系統環境,包括CPU、BIOS、硬盤和其他外圍硬件設備,使您可以在一臺PC機上同時運行兩個操作系統。VMWare對外圍硬件設備的模擬,屏蔽了不同設備型號的差異,在硬件環境發生改變時(硬件型號變化),對於運行於VMWare上的操作系統影響很小(無須安裝新的驅動程序)。
本文以下部分將介紹如何在VMWare軟件提供的虛擬環境上安裝VxWorks操作系統。由於可以在同一臺PC機上建立完整VxWorks開發環境,所以可以有效地降低項目初期的開發成本,也可以爲初學者提供一個接近於真實的模擬環境。
需要注意的是,由於VMWare本身是運行在Windows操作系統之上的,而VxWorks運行於VMWare之上,所以這個模擬環境無法保證VxWorks的實時特性。
準備工作
我們假設您有一臺普通配置的PC機,並安裝了Windows2000操作系統。其次您需要安裝Tornado 2.2 for pcPentium開發環境。缺省安裝的Tornado 2.2 for pcPentium可能不包括pcPentium的BSP組件,但該組件可以從風河公司(Windriver)的網站免費下載。
我們將在下文以WIND_BASE引用Tornado的安裝路徑。
其次是要安裝VMWare軟件,這裏我們使用4.0的版本。如果您還沒有該軟件,也可以從VMWare的網站下載試用版。
最後,由於Tornado自帶的PC-NET網卡驅動有問題,所以需要下載AMD的PC-NET網卡的VxWorks系統驅動,可以從AMD網站免費下載。
一張1.44M的軟盤,用於製作系統引導盤。
準備並安裝好以上軟件後,就可以開始下一步的工作了。
開始安裝
編譯網卡驅動程序
VMWare爲運行於其上的操作系統提供虛擬網卡支持,該網卡類型即爲AMD的PC-NET。實際上,在Tornado開發包中已經包含了該類型網卡的驅動程序,但經過測試,對於VMWare無法正常工作,所以您需要從AMD的網站下載最新的驅動程序。
下載得到的是一個可執行的安裝程序,運行該程序將得到一個壓縮包和一個幫助文件,按照該幫助的要求,將壓縮包直接釋放到Tornado目錄下。如果提示是否允許覆蓋文件,則選擇允許。
此後按如下步驟完成驅動程序的編譯和替換:
- 打開一個控制檯窗口,運行批處理程序:$(WIND_BASE)/host/x86-win32/bin/ torVars.bat;
- 重新定位到$(WIND_BASE)/target/src/drv/end目錄,運行:
make CPU=PENTIUM tool=gnu ln97xend.o
其間會產生一些警告,但這不會影響我們的工作。
- 重新定位到$(WIND_BASE)/target/lib/pentium/PENTIUM/common目錄,並將上一步生成的文件ln97xend.o複製到此目錄下。備份此目錄下的文件libdrv.a;
- 運行命令arpentium -d libdrv.a ln97xEnd.o,刪除libdrv.a中原有的ln97xEnd模塊,然後再運行命令:
arpentium -ra iOlicomEnd.o libdrv.a ln97xEnd.o
將我們剛剛創建的新模塊添加進去。
到此有關網卡驅動的設置就完成了。注意不要關閉這個窗口,後面還要使用。
修改配置文件
在這一節中,我們要修改編譯VxWorks的配置頭文件Config.h中定義的一些參數,使編譯出來的系統引導程序和VxWorks的映象符合我們的要求;同時還要修改sysLn97xEnd.c這個文件,以使系統的網絡功能正常運行。
- 定位目錄到$(WIND_BASE)/target/config/pcPentium並打開該目錄下Config.h文件;
- 我們首先要修改VxWorks的啓動參數。先查找到定義DEFAULT_BOOT_LINE宏的地方,修改預處理條件CPU == PENTIUM分支下的定義如下:
#define DEFAULT_BOOT_LINE /
"lnPci(0,0)your_host_name:d://vxWorks h=192.168.80.169 e=192.168.80.254 u=target pw=vxworks tn=target"
其中:
- lnPci(0,0)指定了使用第0個網卡和第0個處理器,lnPci這個標識會因爲使用的驅動程序不同而有所不同,但這裏用lnPci就可以了;
- your_host_name指定您的主機的名字,使用Windows系統的主機名就可以;
- d://vxWorks指定了VxWorks映象下載的完整路徑;
- h=192.168.80.169是主機的IP地址,就是您當前正在使用的系統的IP地址;
- e=192.168.80.254是目標機的IP地址,也就是未來VxWorks操作系統的IP地址,您只要任意指定一個不衝突的IP地址即可,這裏我們假設您的目標機IP地址和主機IP地址在同一個網段內;
- u=target指定了FTP服務器的用戶名,這個FTP就是用來下載VxWorks映象的,後面還會提到;
- pw=vxwroks是用戶名對應的口令;
- tn=target指定目標機的名字,任意指定即可;
您可以參考Tornado自帶的手冊以獲取更多信息;
- 下面我們要指定使用什麼樣的網卡驅動程序。首先查找“Network driver options”這段文字,之後您可以看到在該註釋後面定義了一系列的有關網卡驅動的宏定義。注意保證INCLUDE_END和INCLUDE_LN_97X_END這兩個宏處於定義狀態(define),其他的宏都處於未定義狀態(undef);
- 缺省情況下,VxWorks系統是不接受外部輸入設備(如鍵盤)的輸入,也不向外部輸出設備(如顯示器)輸出數據。爲了便於調試,我們必須改變它的這種缺省狀態。我們查找定位宏INCLUDE_PC_CONSOLE,然後保證其處於定義狀態(define)即可;
- 到此爲止,對config.h文件的修改就完成了,保存修改,然後再打開同一目錄下的sysLn97xEnd.c文件;
- 這一步修改的目的是要使網卡正常工作。我們先定位到“memory-mapped IO base”這段文字,然後將其前面的參數由pciRsrc[endUnit].bar[1]修改爲NONE,這樣就可以了。最後別忘了保存。
到此爲止,全部的修改工作都完成了,下一步就可以開始編譯連接了。
編譯程序
這一節我們要編譯生成bootrom引導程序和VxWorks運行映象。
- 打開您的Tornado開發工具,在Build菜單下選擇Build Boot ROM,彈出如下對話框:
在BSP列表中選擇pcPentium,而在Image to build列表中分別選擇bootrom和gnu。完成選擇後,點擊OK按鈕就開始引導程序的編譯了。編譯產生的文件bootrom將保存在$(WIND_BASE)/target/config/pcPentium目錄下。
- 編譯生成bootrom後,還要創建一個VxWorks映象(image),也就是VxWorks操作系統本身的代碼。
- 創建一個“bootable VxWorks image”的工程;
- 選擇您需要的VxWorks組件。這一步是可選的,如果您只想使用缺省的配置,那根本就不需要這一步;但如果您想使用額外的組件,例如,您可能想通過telnet連接VxWorks系統,這時就需要在Workspace窗口的VxWorks選項卡中選擇telnet sever對應的組件,如下圖:
在這個例子中我們選擇了兩個重要的組件:Telnet server 和 Target shell 。前者使我們可以通過Telnet協議登錄到VxWorks操作系統中;後者則可以讓我們通過命令行控制VxWorks系統。
- 完成選擇後,即可開始編譯程序;
- 到此我們已經生成了VxWorks的系統引導程序和運行時的代碼映象。這裏還要提醒讀者,在您每次修改完系統的配置信息(如:config.h)後,都要重新創建一個工程來編譯VxWorks映象,以免出現代碼不一致的問題。
- 將生成的名爲“vxworks”的文件複製到D盤根目錄下。這個路徑是由上面我們所設置的DEFAULT_BOOT_LINE宏中的路徑參數決定的,必須保持二者一致。
製作引導磁盤
現在開始製作VxWorks系統引導磁盤,用於引導裝載VxWorks運行映象。
我們回到“編譯網卡驅動程序”一節中所打開的控制檯窗口,定位目錄到$(WIND_BASE)/target/config/pcPentium,插入您已經格式化好的軟盤,然後運行:
mkboot a: bootrom
該命令將在軟盤上建立VxWorks系統引導分區,並將引導程序複製到軟盤上。
這裏再額外向您介紹一個虛擬軟盤的工具:RamDiskNT,它可以在內存中建立一個虛擬的軟盤,對於提高VxWorks的啓動速度有很大幫助。
配置FTP服務器
這裏的FTP服務器用於在系統成功引導後,下載VxWorks的運行時映象。我們這裏使用Tornado開發環境自帶的FTP服務器。
- 打開Tornado FTP Server,選擇“Security”菜單下的“Users/Rights”子菜單,彈出如下對話框:
當User Name爲“target”時,修改“Home Directory”爲D盤根目錄(此路徑由上面的DEFAULT_BOOT_LINE參數決定),同時修改口令爲“vxworks”,最後點擊“Done”按鈕完成修改;
- 爲了便於調試,我們還要打開FTP Server的日誌功能。選擇“Logging”菜單下的“Logging Options”子菜單,彈出如下對話框,其中除了“Winsock Calls”外,讓其他選項全都處於開啓狀態。
- 保持FTP Server窗口處於打開狀態(這樣FTP服務器就處於運行狀態)。
創建VxWorks系統
- 打開您的VMWare Workstation,在File->New菜單下選擇創建一個新的虛擬機(Virtual Machine),按照其嚮導幫助,完成虛擬機的配置。在選擇操作系統類型時,選擇“Other”,其餘選項均使用缺省值就可以了。
- 完成以上配置後,點擊右側窗口中的“Start this virtual machine”,系統即開始引導運行,如下圖所示:
在引導過程中,您會遇到一個7秒鐘的等待,以決定是使用缺省的引導參數,還是手動輸入引導參數。這裏我們選擇前者,所以不需要做任何工作。
成功引導後,系統會自動從FTP Server下載映象,並開始運行,得到如下畫面:
到此,我們已經成功的在VMWare上安裝了VxWorks操作系統。
需要注意的是,上面的畫面會因爲選擇組件的不同而略微有所不同(例如,如果您沒有選擇target shell,就不會出現命令行提示符),但一般不會影響後續操作。
配置聯機調試環境
裝好系統後,您肯定還希望將自己編寫的應用程序下載到目標機進行調試,下面我們就完成這一部分的配置工作。
打開您的Tornado開發環境,選擇“Tools->Target Server->Configure”菜單,彈出如下對話框:
在“Description”中任意填寫一個名字,這裏是“net00”;在“Available Back”中選擇“wdbrpc”,並在下面的IP地址框中填寫目標機的IP地址,這裏是“192.168.80.254”(由DEFAULT_BOOT_LINE參數決定);將“Target Server Properties”下拉框更改至“Core File and Symbols”,並在“File Path”一項中選擇您的映象的完整路徑,這裏是“D:/vxWorks”(由DEFAULT_BOOT_LINE參數決定)。
完成以上兩項配置,點擊“Launch”按鈕,就可以啓動Target Server了。
再回到Tornado開發環境,在工具條上的Target Server下拉框列表中選擇“192.168.80.254@your_host_name”。這時您會發現工具條中一些原先處於“禁用”狀態的工具按鈕,現在都已經處於“激活”狀態了。
現在您就可以開始聯機調試您的VxWorks應用程序了。
參考
- VxWorks製造商,風河公司網站:http://www.windriver.com
- AMD網卡驅動下載地址:
- 虛擬軟盤工具RamDiskNT下載地址:http://www.cenatek.com/product_ramdisk.cfm
- VMWare公司網站:http://www.vmware.com
致謝
特別感謝JackieFan網友對筆者的幫助,同時也感謝電子產品世界論壇提供了一個良好的討論技術問題的環境。電子產品世界論壇的網址是:http://bbs.edw.com.cn
版權聲明
- 此文中所提及之任何商標或標識,歸其所有者所有。
- 轉載此文時請保留此版權聲明。