天天看點

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以太網卡為例)

2)、針對目标機的網卡,#define INCLUDE_ELT,同時 #undef 其它網卡

在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""

繼續閱讀