VxWorks网络配置及分析
发布时间:2008/5/29 0:00:00 访问次数:532
vxworks网络配置及分析
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系统调用.
主要调用过程如下:
vxworks系统执行的第一个任务target\config\all\usrconfig.c文件中 usrroot
=======>>target\src\config\usrnetwork.c文件中的usrnetinit
( )通过数组表netif[]初始化相应的bsd网卡驱动.
在usrnetwork.c中的调用过程如下:
usrnetinit()函数中调用usrnetifattach():
#ifdef include_bsd
if (!attached)
{
if ( (usrnetifattach (pnetdev, params.unitnum, pbootstring) !=ok))
return (error);
attached = true;
}
#endif /*include_bsd*/
usrnetifattach ()函数中调用数组表usrnetiftbl
for (pnif = usrnetiftbl; pnif->ifname != 0; pnif++)
{
if (strcmp (buf, pnif->ifname) == 0)
break;
}
网络bsd驱动数组表usrnetiftbl在文件/target/src/config/usrnetwork.c中的定义初始化:
...
local netif netif [] = /* 网络接口,定义网卡驱动 */
{
/* 下面是定义包含的各种网络驱动 */
#ifdef include_dc /* 从dec 芯片启动,即系统有nvram存在,现在已过时*/
{ dc, dcattach, (char*)io_adrs_dc, int_vec_dc, int_lvl_dc,
dc_pool_adrs, dc_pool_size, dc_data_width, dc_ram_pci_adrs,
dc_mode },
#endif /* include_dc */
#ifdef include_fei /* 如果定义了include_fei,初始化intel 网卡 */
{ fei, feiattach, (char*)fei_pool_adrs, 0, 0, 0, 0},
#endif /* include_fei */
#ifdef include_ex /* excelan 网卡 */
{ ex, exattach, (char*)io_adrs_ex, int_vec_ex, int_lvl_ex,
io_am_ex_master, io_am_ex },
#endif /* include_ex */
#ifdef include_enp /* cmc 网卡 */
{ enp, enpattach, (char*)io_adrs_enp, int_vec_enp, int_lvl_enp,
io_am_enp },
#endif /* include_enp */
...
}
设置方法:
从以上可以看出bsd网络驱动只需在bsp配置文件config.h中将网络(#define include_network)bsd网卡宏定义(#define include_xxx)和一些i/o参数(一般不需要)加入,则在文件usrnetwork.c中进行相应的初始化.
如: 在vxworks加入支持intel的网卡驱动.在config.h中加入#define include_fei.
主要网卡定义如下:
#define include_ene /* include eagle/novell ne2000 interface */
#define include_elt /* include 3com etherlink iii interface */
#define include_esmc /* include smc 91c9x ethernet interface */
#define include_fei /* include intel ether express pro100b pci */
#define include_elc /* include smc elite16 interface */
vxworks网络配置及分析 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系统调用. 主要调用过程如下: vxworks系统执行的第一个任务target\config\all\usrconfig.c文件中 usrroot =======>>target\src\config\usrnetwork.c文件中的usrnetinit ( )通过数组表netif[]初始化相应的bsd网卡驱动. 在usrnetwork.c中的调用过程如下: usrnetinit()函数中调用usrnetifattach(): #ifdef include_bsd if (!attached) { if ( (usrnetifattach (pnetdev, params.unitnum, pbootstring) !=ok)) return (error); attached = true; } #endif /*include_bsd*/ usrnetifattach ()函数中调用数组表usrnetiftbl for (pnif = usrnetiftbl; pnif->ifname != 0; pnif++) { if (strcmp (buf, pnif->ifname) == 0) break; } 网络bsd驱动数组表usrnetiftbl在文件/target/src/config/usrnetwork.c中的定义初始化: ... local netif netif [] = /* 网络接口,定义网卡驱动 */ { /* 下面是定义包含的各种网络驱动 */ #ifdef include_dc /* 从dec 芯片启动,即系统有nvram存在,现在已过时*/ { dc, dcattach, (char*)io_adrs_dc, int_vec_dc, int_lvl_dc, dc_pool_adrs, dc_pool_size, dc_data_width, dc_ram_pci_adrs, dc_mode }, #endif /* include_dc */ #ifdef include_fei /* 如果定义了include_fei,初始化intel 网卡 */ { fei, feiattach, (char*)fei_pool_adrs, 0, 0, 0, 0}, #endif /* include_fei */ #ifdef include_ex /* excelan 网卡 */ { ex, exattach, (char*)io_adrs_ex, int_vec_ex, int_lvl_ex, io_am_ex_master, io_am_ex }, #endif /* include_ex */ #ifdef include_enp /* cmc 网卡 */ { enp, enpattach, (char*)io_adrs_enp, int_vec_enp, int_lvl_enp, io_am_enp }, #endif /* include_enp */ ... } 设置方法: 从以上可以看出bsd网络驱动只需在bsp配置文件config.h中将网络(#define include_network)bsd网卡宏定义(#define include_xxx)和一些i/o参数(一般不需要)加入,则在文件usrnetwork.c中进行相应的初始化. 如: 在vxworks加入支持intel的网卡驱动.在config.h中加入#define include_fei. 主要网卡定义如下: #define include_ene /* include eagle/novell ne2000 interface */ #define include_elt /* include 3com etherlink iii interface */ #define include_esmc /* include smc 91c9x ethernet interface */ #define include_fei /* include intel ether express pro100b pci */ #define include_elc /* include smc elite16 interface */
深圳服务热线:13692101218 13751165337
粤ICP备09112631号-6(miitbeian.gov.cn)

深圳市碧威特网络技术有限公司
付款方式