中国·芯片交易在线
首页 | 供应信息 | 求购信息 | 库存查询 | 新闻中心 | 展会资讯 | IC厂商 | 技术资料 | 自由区域
   新闻首页 |  行业动态 | 新品发布 | 政策法规 | 科技成果 | 模拟技术 | 嵌入系统 | 传感控制 | 存储设计  
当前位置:IC72首页>> IC新闻中心>> 嵌入系统 >>电子行业新闻正文

VxWorks网络配置及分析

时间:2006/9/12 10:13:00  作者:  来源:ic72  浏览人数:1672
 
 

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

      #define    INCLUDE_EEX        /* include INTEL EtherExpress interface */

      #define    INCLUDE_EEX32        /* include INTEL EtherExpress flash 32 */

      #define    INCLUDE_EX        /* include Excelan Ethernet interface */

      #define    INCLUDE_ENP        /* include CMC Ethernet interface*/

      #define    INCLUDE_SM_NET        /* include backplane net interface */

      #define    INCLUDE_SM_SEQ_ADDR  /* shared memory network auto address setup */

      #define    INCLUDE_EL_3C90X_END /* 3com fast etherLink XL PCI */

      #define   INCLUDE_LN_97X_END /* AMD 79C972 END DRIVER */

      ....

      2.END网络驱动设置.

      END网络设备的初始化主要通过定义在文件configNet.h中的一个数组表实现.初始化网络时muxDevLoad()会按这个表的定义把end初始化安装到VxWorks系统.

      主要调用过程:

      VxWorks系统执行的第一个任务target\config\all\usrConfig.c文件中 usrRoot(

      =======>>target\src\config\usrNetwork.c文件(该文件初始化TCP/IP)中 usrNetIni

      (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

      /* 网络设备硬件的物理定义数据串,一般BSP已经定义,不到必要时,无需更改 */

      /*

      * ::::::: \

      * :

      */

      # define DEC_LOAD_STRING

      "0x81020000:0x80000000:0x12:0x12:-1:-1:-1:0:0x80800

      000"

      IMPORT END_OBJ* DEC_LOAD_FUNC (char*, void*);

      /* 网络END设备表 */

      END_TBL_ENTRY endDevTbl [] =

      { 0, DEC_LOAD_FUNC, DEC_LOAD_STRING, DEC_BUFF_LOAN, NULL, FALSE},

      { 0, END_TBL_END, NULL, 0, NULL, FALSE},

      };

      设置方法:

      由以上可看出在VxWorks添加END网络驱动

      在文件config.h中添加"#define INCLUDE_NETWORK"和"#define INCLUDE_END".
在configNet.h中加入END驱动的入口函数"#define xxx_LOAD_FUNC  xxxxxEndLoad"和一些相关的初始化字符串. 

      这样就会在生成BSP包含END/MUX,系统网络初始化调用函数muxDevLoad()会更据这个表初始化END网络.

      文件configNet.c关于END驱动初始化的主要内容:

      #ifdef INCLUDE_END

      IMPORT int     ipAttach ();

      IMPORT END_TBL_ENTRY endDevTbl[];    /* 定义这个表 */

      #endif /* INCLUDE_END */

      ..........

      #ifdef INCLUDE_END                 

      int count;

      END_TBL_ENTRY* pDevTbl;             /* END设备列表 *

      END_OBJ* pCookie = NULL;

      END_OBJ* pEnd;

      #endif /* INCLUDE_END */

      #if defined(INCLUDE_END)

      muxMaxBinds = MUX_MAX_BINDS;        /* 初始化MUX接口 */

      if (muxLibInit() == ERROR)

      ..........

      关于DEFAULT_BOOT_LINE 的解释

      这一行对配置网络,连通Target Server及下载调试程序非常重要

      DEFAULT_BOOT_LINE 的原意是为没有NVRAM的target设计的,这样用户就不需要在每次系统启动是手工输入这些参数了.

      系统启动网络时xxxEndLoad()会解释这一行并按这一行的定义进行加载.

      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=xxx  用户名,pw=xxx  密码: 若通过网络加载调试时,主机的Ftp服务器和目标机的用户名和密码必须相同

      tn=vxTarget 目标机名称

      */

      #define DEFAULT_BOOT_LINE \

      "Emac(0,0)405GP:vxWorks h=172.16.1.159 e=172.16.254.52 \

      u=xxx pw=xxx tn=vxTarget"

 
【相关文章】
·基于TMS320DM642的电视跟踪系统设计
·ARM程序优化及其在嵌入式TCP/IP协议实现中的应用
·SOC层次化验证方法及应用
·以ARM和DSP嵌入式系统为核心的实时仿真平台的开发
·一种基于ARM内核SoC的FPGA 验证环境设计方法
·PPCBoot在MPC8250上的移植方法
·VxWorks网络配置及分析
·面向对象的嵌入式系统开发技术
 
 
IC新闻搜索
 
热点新闻
基于红外超声光电编码器的室内移动小车定位系
基于闪烁存储器的TMS320VC5409DSP并行引导装载方法
非移动市场需求飙升,ARM预计2010年出货量超50亿片
一种快速响应的电容式湿度传感器感湿薄膜设计
利用特殊应用模拟开关改进便携式设计
无线传感器网络跨层通信协议的设计
基于ARM9内核Processor对外部NAND FLASH的控制实现
基于GSM技术的汽车防盗系统的设计
热电阻在烟叶初烤炕房温度控制中的应用
高速数据转换系统对时钟和数据传输的性能要求
友情连接
 关于我们  IC论坛  意见反馈  设置首页  广告服务  用户帮助  联系我们
copyright:(1998-2005) IC72 中国·芯片交易在线
(北京)联系电话:(010)82614113、82614123 传真:(010)82614123 客户服务:service@IC72.com 库存上载:IC72@IC72.com
在线MSN咨询:ic72sale8@hotmail.com 通信地址:北京市西城区西直门内大街2号大厦15层 邮政编码:100013
(深圳)联系方式: 在线MSN咨询:ic72sale6@hotmail.com 在线QQ咨询:191232636 通信地址:深圳市福田区振华路
注 册 号: 1101081318959(1-1)

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9