最近在學習vxworks,要在vmware虛擬的基於Pentium處理器上運行Vxworks,因而上參照網上大牛的文檔,卻在一些關鍵的地方過不去,因而普遍搜資料,費好些功夫終於把vxworks順順當當地請上了虛擬機。爲避免初入vxworks界的同仁走一樣彎路,決定把前先後後須要注意的地方都寫下來,順便也作個記念。shell
總的過程分爲如下幾步:windows
一、編譯網卡驅動。服務器
二、修改一些文件。app
三、編譯bootrom並放到啓動盤裏去。tornado
四、編譯vxWorks鏡像。工具
五、用FTP把vxWorks鏡像傳到虛擬機裏面去。學習
六、配置target server,在主機上調試目標板應用程序。開發工具
我tornado安裝的目錄是:E:\tornado2.2\......(我第一次裝tornado2.2的時候沒有把數字2.2帶上,教訓是:編譯bootram的時候通不過。)ui
具體步驟以下:
裝tornado,這個就不用說了。
下載一個RamDiskNT裝上,打開後能夠設置軟驅,保存,重啓機子,電腦裏就有軟驅(A:)了。
1、編譯網卡驅動
去http://www.amd.com/us-en/ConnectivitySolutions/ProductInformation/0,,50_2330_6629_2452^2454^2488,00.html網上 下載驅動:x86 END Driver for VxWorks。 雙擊下載的文件,不停的下一步直到完成,把C:\pcnet\vxworks_end目錄下的ln97xEnd.tar1.gz文件解壓縮,獲得ln97xEnd.tar文件,再解壓縮,獲得target文件夾,把這個target文件夾放到E:\tornado2.2目錄下。提示覆蓋的時候點ok。
單擊windows系統的開始菜單,在「運行」裏輸入「cmd」打開控制檯程序。
輸入:E:\tornado2.2\host\x86-win32\bin\ torVars.bat;
輸入:cd /D E:\tornado2.2\target\src\drv\end目錄,運行:
make CPU=PENTIUM tool=gnu ln97xend.o (這一步會出現重複提示,不要管它,它本身會結束。耐心點,不然驅動編譯不徹底)
這一步會在E:\tornado2.2\target\src\drv\end目錄下生成ln97xend.o文件。
輸入:cd E:\tornado2.2\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。
2、修改文件
打開文件:E:tornado2.2\target\config\pcPentium\config.h文件。
找到/*default boot line */那行,修改預處理條件CPU == PENTIUM分支下的定義以下: "lnPci(0,0)cherish:d:\\vxWorks h=192.168.100.145 e=192.168.100.14 u=target pw=vxworks tn=target"(我是這樣設置的)
lnPci(0,0)指定了使用第0個網卡和第0個處理器
cherish是個人計算機名。
d:\\vxWorks是存放操做系統鏡像的路徑,後面講用FTP傳送的時候還將提到。
h=192.168.100.145 h後面跟的ip來自於主機網卡。
e=192.168.100.14 這個ip是給目標板用的,和上面的ip要在同一個網段內,且它不能和主機所在的局域網的其餘主機的ip衝突。
u=target 即:用戶名,後面ftp傳送的時候也要用到。可隨便設置
pw=vxworks 和用戶名對應的密碼,後面ftp傳送的時候也要用到。可隨便設置
tn=target 是目標板名字。可隨便設置
再找到network driver options 那段文字,這是有關網卡驅動的宏定義的。這些宏裏面,只要保證INCLUDE_END宏和 INCLUDE_LN_97X_END是定義狀態,其它宏是未定義的就能夠了。
再找到INCLUDE_PC_CONSOLE 文字,把這個宏改爲定義態。
這個文件就修改完了,保存。
打開文件:E:\tornado2.2\target\config\pcPentium\sysLn97xEnd.c。找到memory-mapped IO base文字,
把前面的參數由pciRsrc[endUnit].bar[1]修改成NONE。 保存。
3、編譯bootrom並放到啓動盤裏去。
打開Tornado開發工具,在Build菜單下選擇Build Boot ROM。
在BSP列表中選擇pcPentium,而在Image to build列表中分別選擇bootrom和gnu。完成選擇後,點擊OK按鈕就開始引導程序的編譯了。編譯
產生的文件bootrom將保存在E:\tornado2.2\target\config\pcPentium目錄下。
輸入 cd E:\tornado2.2\target\config\pcPentium
輸入 mkboot a: bootrom。 這樣軟驅(a:)裏就有啓動虛擬機的代碼了。
4、編譯vxworks鏡像。
建立一個「bootable VxWorks image」的工程;
選擇您須要的VxWorks組件。在這個例子中咱們選擇了兩個重要的組件:Telnet server 和 Target shell 。前者使咱們能夠經過Telnet協議登陸到VxWorks操做系統中;後者則可讓咱們經過命令行控制VxWorks系統。完成選擇後就編譯操做系統。把編譯好的操做系統鏡像放在D:\ 盤下(這由 default boot line 參數決定的)。
5、用FTP把vxWorks鏡像傳到虛擬機裏面去
運行vmware,創建一個虛擬機。大多數才用默認設置,只有在選擇操做系統的時候選「other」。ethernet的鏈接方式選擇默認的bridge。
打開tornado2.2自帶的ftp server 選擇「Security」菜單下的「Users/Rights」子菜單,
先要把自帶的target用戶名刪掉:具體這麼幹:把user下拉列表框點開,單擊target,單擊delete。 (這是default boot line 的參數決定的)
具體這麼幹:單擊「新建 」,輸入用戶名target(這是default boot line 的參數決定的),密碼vxworks。路徑寫D:\(這也是default boot line 決定的)。而後點done。這樣作是在告訴主機,虛擬機將用target用戶名和主機通訊。
爲了便於調試,咱們還要打開FTP Server的日誌功能。選擇「Logging」菜單下的「Logging Options」子菜單,彈出以下對話框,其中除了
「Winsock Calls」外,讓其餘選項全都處於開啓狀態。
保持FTP Server窗口處於打開狀態(這樣FTP服務器就處於運行狀態) 。
啓動虛擬機,虛擬就能從a盤啓動,等待7秒後,虛擬機用ftp 從主機加載vxWorks操做系統。加載完成後,在虛擬機的vxWorks操做系統環境下輸入i命令能夠看到一些任務。
6、配置target server,在主機上調試目標板應用程序。
配置target server 以前,把vmware軟件的ethernet 屬性設爲 host-only。不然target server鏈接不上(我在這卡了半天)。
改屬性後就能夠在主機的控制檯窗口下ping 目標板ip 了(這裏是192.168.100.14,由 default boot line參數決定)。如能ping通,說明主機和虛擬機已經連通。
打開Tornado開發環境,選擇「Tools->Target Server->Configure」菜單,
在「Description」中任意填寫一個名字,如「abcd」;在「Available Back」中選擇「wdbrpc」,並在下面的IP地址框中填寫目標機
的IP地址,這裏是「192.168.100.14。由(DEFAULT_BOOT_LINE參數決定);將「Target Server Properties」下拉框更改至「Core File
and Symbols」,並在「File 」一項中選擇映象的完整路徑,這裏是「D:\vxWorks」(由DEFAULT BOOT LINE參數決定)。
點擊「Launch」按鈕,就能夠啓動Target Server了。
再回到Tornado開發環境,在工具條上的Target Server下拉框列表中選擇[email=「192.168.100.14@your_host_name]「192.168.100.14@your_host_name[/email]」。這時您會發現工具條中一些
原先處於「禁用」狀態的工具按鈕,如今都已經處於「激活」狀態了。
如今能夠編譯一個應用程序,新建應用程序工程,toolchain 那選PENTIUMgnu。添加c源文件
如:#include "vxworks.h"
#include "timexLib.h"
#include "stdio.h"
void test()
{
int i=0;
while(i<100)
{
i++;
printf("%d\n",i);
}
printf("%d\n",i);
}
編譯,下載。再打開tornado2.2下的shell,運行test。就能夠在虛擬機上看結果了,還能夠調試。
轉載於:http://xingpenghe.blog.163.com/blog/static/4320699820102280181838/