位置:51电子网 » 技术资料 » 通信网络

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 */

相关IC型号
版权所有:51dzw.COM
深圳服务热线:13692101218  13751165337
粤ICP备09112631号-6(miitbeian.gov.cn)
公网安备44030402000607
深圳市碧威特网络技术有限公司
付款方式


 复制成功!