vxworks的default boot line说明
? ? ?boot程序的主要功能是引導vxworks 內核,所以boot程序需要知道vxworks的內核存放在何處,通過什么手段去獲取。在vxworks缺省的boot程序里有一條內建的default boot line,它指明了獲得vxworks內核的途徑,在boot程序啟動時,它先尋找NVRAM里面有無boot line,如沒有,則等里的內容添入BOOT_PARAMS結構里,然后,啟動程序和vxworks內核利用此結構尋找啟動參數。
?
typedef struct??
{
char bootDev [BOOT_DEV_LEN];???
char hostName [BOOT_HOST_LEN];??
char targetName [BOOT_HOST_LEN];?
char ead [BOOT_ADDR_LEN];???
char bad [BOOT_ADDR_LEN];???
char had [BOOT_ADDR_LEN];???
char gad [BOOT_ADDR_LEN];???
char bootFile [BOOT_FILE_LEN];???
char startupScript [BOOT_FILE_LEN];??
char usr [BOOT_USR_LEN];????
char passwd [BOOT_PASSWORD_LEN];??
char other [BOOT_OTHER_LEN];???
int procNum;???
int unitNum;???
int flags;???
} BOOT_PARAMS;
?
? ? 下面看boot line結構:
bootDev(unitNum,procNum) hostname:bootFile e=ead b=bad h=had g=gad u=username pw=password f=flags tn=targetName s=startupScript o=other
bootDev?????/ 設備名,軟盤:fd; 硬盤:ATA;網絡要根據網卡的類型來做:NE2000及其兼容網卡為ENE,3COM以太網卡為ELT,Intel網卡為EEX,Intel82559網卡為fei ,3C905B PCI網卡為elPci。
unitNum?????/ 設備單元號,一般指為0
procnum?????/ cpu的處理器號,一般為0
flags???????/ 標識,十六進制數,意義如下:
???????????????????0x01: 關閉對處理器0的系統控制
???????????????????0x02: 將局部symbols和全局symbols裝入目標機symbols表
???????????????????0x04: 禁止自動啟動(即由用戶輸入boot line)
???????????????????0x08: 快速boot(不計數等待用戶輸入)
???????????????????0x40: 使用BOOTP or DHCP client
???????????????????0x80: 使用TFTP獲取image,否則使用RSH或FTP,用FTP時pw不為空
? 0x100: 使目標機登記為一個代理ARP client
ead?????????/ 目標機ip地址,此值如為空,網絡接口不被幫定
bad?????????/ 背板接口
had?????????/ 主機ip地址
gad?????????/ 網關地址,如果主機和目標機不在一個局網里,需要
bootFile:???/ 存放vxworks image的路徑
usr:????????/ 使用FTP或RSH時的用戶名
passwd:?????/ ftp password
other:??????/ 從網絡啟動時此值可為空,當從軟盤或硬盤啟動時,如果此值為你的網絡設備,boot會為你綁定網絡設備
hostname:???/ 主機名,任意
targetName:/目標機名
startupScript: / 腳本名,在boot以后的target shell里執行
?
? ? 在boot line中,e,b,h等等參數都不要求次序,你也可以讓它為空值,如”pw= ”就是指口令為空參數,
? ? 看一個例子:
ene(0,0) lijun:c:/tornado/target/config/pc486/vxworks e="10".132.3.40 h="10".132.3.37 u="x86" pw="apue" tn="rod"
? ? 在上例中,網卡為NE2000及兼容網卡,主機名為lijun ,vxworks image存放在c:/tornado/target/config/pc486這個目錄下,目標機的網絡地址為10.132.3.40 主機的網絡地址為10.132.3.37,通過FTP服務器下載,用戶名為x86,口令為apue,目標機名為rod
? ? 再看一個例子:
fd="0",0(0,0) lijun:/fd0/vxWorks e="10".132.3.40 h="10".132.3.37 u="x86" o="ene"
這個例子里面,用的是軟盤啟動vxworks ,在軟盤做好boot 后,還需要把vxworks image拷入軟盤,在boot 起來以后,引導程序會在軟盤里尋找vxworks,并把它啟動。
? ? 軟盤用fd0表示,硬盤用ATA(0,0),最后的參數o="ene" 表示網絡設備是NE2000網卡,并將之和ip地址綁定。
?
? ? ?上面是有關boot的一些總述。
在vxworks里面,針對每一種的bsp(什么叫bsp?參看本文上),都有各自的配置文件,在 C:/Tornado/target/config/bspname/config.h里, 打開config文件,就會看到上面所說的 default_boot_line,接下來要做的就是根據你的情況修改此行參數,使之符合自己的要求。 在實時應用系統的開發調測階段,往往采用以PC機作為目標機來調測程序。主機PC和目標機PC之間可采取串口或是網口進行聯結。由于大多數目標已配有網 卡,網絡聯結成為最簡單快速的連接方式。下面是它的詳細步驟:
1)、修改通用配置文件//Tornado/target/config/bspname/config.h.
?????針對不同的網卡,其名稱不同,如NE2000及其兼容網卡為ENE,3COM以太網卡為ELT,Intel網卡為EEX,Intel82559網卡為fei ,3C905B PCI網卡為elPci。(以3COM以太網卡為例)
在config.h文件中修改相應網卡類型(如網卡為3COM網卡)的定義部分:
#define IO_ADRS_ELT 網卡I/O地址
#define INT_LVL_ELT 網卡中斷號
?
3)、修改#define DEFAULT_BOOT_LINE的定義:
#elif (CPU_VARIANT == PENTIUM) (修改此行后的DEFAULT_BOOT_LINE)
#define DEFAULT_BOOT_LINE /
"elt(0,0)主機標識名:vxWorks h=主機IP e=目標機IP u=登錄用戶名 pw=口令 tn=目標機名"?
例如:#define DEFAULT_BOOT_LINE /
"elt(0,0)comps:VxWorks h="10".132.101.88 e="10".132.101.82 u="x86" pw="xxx" tn="x86""
總結
以上是生活随笔為你收集整理的vxworks的default boot line说明的全部內容,希望文章能夠幫你解決所遇到的問題。