vxworks支援兩種形式的網路驅動,一種是bsd驅動支援通用的bsd4.4網路,api,結構等和大多數bsd網路的驅動類似.另一種是end網路驅動,是vxworks獨有的,根據vxworks mux介面程式設計,不過end驅動在底層也要轉換成bsd的形式.
vxworks網路驅動可參見vxworks網路驅動
1.bsd4.4網路驅動設定.
網路裝置驅動的呼叫主要在/target/src/config/usrnetwork.c檔案中,下面說明bsd4.4驅動在vxworks系統呼叫.
主要呼叫過程如下:usrnetifattach ()函式中呼叫陣列表usrnetiftblvxworks系統執行的第乙個任務target\config\all\usrconfig.c檔案中 usrroot()*****==>>target\src\config\usrnetwork.c檔案中的usrnetinit
( )通過陣列表netif初始化相應的bsd網絡卡驅動.
在usrnetwork.c中的呼叫過程如下:
usrnetinit()函式中呼叫usrnetifattach():
#ifdef include_bsd
if (!attached)
#endif
for (pnif =usrnetiftbl; pnif->ifname != 0; pnif++)網路bsd驅動陣列表usrnetiftbl在檔案/target/src/config/usrnetwork.c中的定義初始化:
local netif netif =
,#endif
#ifdef
include_fei
,#endif
#ifdef
include_ex
,#endif
#ifdef
include_enp
,#endif
設定方法:從以上可以看出bsd網路驅動只需在bsp配置檔案config.h中將網路(#defineinclude_network)bsd網絡卡巨集定義(#defineinclude_***)和一些i/o引數(一般不需要)加入,則在檔案usrnetwork.c中進行相應的初始化.
如: 在vxworks加入支援intel的網絡卡驅動.在config.h中加入"#define
include_fei".
主要網絡卡定義如下:#define
include_ene
#define
include_elt
#define
include_esmc
#define
include_fei
#define
include_elc
#define
include_eex
#define
include_eex32
#define
include_ex
#define
include_enp
#define
include_sm_net
#define
include_sm_seq_addr
#define
include_el_3c90x_end
#define
include_ln_97x_end
....
2.end網路驅動設定.
設定方法:end網路裝置的初始化主要通過定義在檔案confignet.h中的乙個陣列表實現.初始化網路時muxdevload()會按這個表的定義把end初始化安裝到vxworks系統.
主要呼叫過程:
vxworks系統執行的第乙個任務target\config\all\usrconfig.c檔案中 usrroot()*****==>>target\src\config\usrnetwork.c檔案(該檔案初始化tcp/ip)中 usrnetinit(boot_line_adrs)(該函式作用是新增mux end)*****===>>pcooki = pcookie = muxdevload(pdevtbl->unit,.....)其中pdevtbl在bsp網路配置檔案confignet.h中定義.end_tbl_entry enddevtbl=,該錶定義了網路裝置的具體引數.
confignet.h部分定義如下所示:
#define dec_load_func dec21x40endload
#define dec_buff_loan 1
# define dec_load_string
"0x81020000:0x80000000:0x12:0x12:-1:-1:-1:0:0x80800
000"
import end_obj* dec_load_func (char*, void*);
end_tbl_entry enddevtbl =,,
};
由以上可看出在vxworks新增end網路驅動
在檔案config.h中新增"#defineinclude_network"和"#defineinclude_end".在confignet.h中加入end驅動的入口函式"#define***_load_func ***xxendload"和一些相關的初始化字串.
這樣就會在生成bsp包含end/mux,系統網路初始化呼叫函式muxdevload()會更據這個表初始化end網路.
檔案confignet.c關於end驅動初始化的主要內容:
#ifdef include_endimport int
ipattach ();
import end_tbl_entry enddevtbl;
#endif
#ifdef include_end
int count;
end_tbl_entry* pdevtbl;
end_obj* pcookie = null;
end_obj* pend;
#endif
#if defined(include_end)
muxmaxbinds = mux_max_binds;
if (muxlibinit() == error)
關於default_boot_line 的解釋
default_boot_line的原意是為沒有nvram的target設計的,這樣使用者就不需要在每次系統啟動是手工輸入這些引數了.
系統啟動網路時***endload()會解釋這一行並按這一行的定義進行載入.
emac(0,0) : 啟動裝置,可是是軟盤,硬碟,pcmcia卡等 其他的裝置名稱如:
fd為軟盤,(0,0)表示第乙個軟碟機,3.5寸盤.
dc則表示從dec 21x4x 晶元啟動,即系統有nvram存在,這種方式現在已不採用.
elpci表示啟動裝置為3com etherlink xl pci網絡卡.
fei:intel 82559 etherexpress網絡卡.
ene: ne2000網絡卡
elt: 3com乙太網卡
eex: intel網絡卡
ata: ata/ide 硬碟 ............
405gp: 主機名
vxworks 從主機載入的vxworks檔案
h=172.16.1.159
主機的ip位址
e=172.16.254.52 目標機的ip位址,若網路啟動target server時,這個ip必須和主機上target server配置的target ip位址一致,且設定back end選項為wdbrpc
u=*** 使用者名稱,pw=*** 密碼: 若通過網路載入除錯時,主機的ftp伺服器和目標機的使用者名稱和密碼必須相同
tn=vxtarget 目標機名稱
#define default_boot_line \
"emac(0,0)405gp:vxworks h=172.16.1.159 e=172.16.254.52 \
u=*** pw=*** tn=vxtarget"
網路配置及操作
linux 系統中最常用的網路配置命令包括 ifconfig route。其中ifconfig 用來檢視和配置網路介面 通常是網絡卡資訊 包括網路介面裝置的ip 位址 掩碼等。route 用來管理linux 系統核心中的路由表,它最大的用途就是用來設定靜態的路由表項,通常是在系統用 ifconfig...
linux網路裝置驅動DM9000驅動分析(4)
14 接受資料 在中斷函式中,我們可以看到呼叫了dm9000 rx 接收資料並存入 skbuff 並提交協議上一層。1 首先看看下面這個結構體,這個結構體按照 dm9000 的接收格式封裝了 dm9000 接收的資料報資訊 struct dm9000 rxhdr packed 2 接收函式dm900...
Linux網路知識及配置
1 網路基礎知識 1 私有ip位址 2 linux網路配置 1 修改主機名 三步 hostname oldboylinux vi etc sysconfig network etc hosts裡對應的主機名。2 網絡卡配置檔案說明 root jackroo cat etc sysconfig net...