VxWorks支持两种形式的网络驱动,一种是BSD驱动支持通用的BSD4.4网络,API,结构等和大多数BSD网络的驱动类似.另一种是END网络驱动,是VxWorks独有的,根据VxWorks MUX接口编程,不过END驱动在底层也要转换成BSD的形式.

  1.BSD4.4网络驱动设置.

  网络设备驱动的调用主要在/target/src/config/usrNetwork.c文件中,下面说明BSD4.4驱动在VxWorks系统调用.

  主要调用过程如下:

   VxWorks系统执行的第一个任务targetconfigallusrConfig.c文件中 usrRoot()=======>>targetsrcconfigusrNetwork.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系统执行的第一个任务targetconfigallusrConfig.c文件中 usrRoot()=======>>targetsrcconfigusrNetwork.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

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

  /*
  * <devAdrs>:<PCIadrs>:<ivec>:<ilevel>:<numRds>:<numTds>:<memBase>:
  * <memSize>:<userFlags>
  */
  # 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"

VxWorks网络驱动配置及分析 来源:http://www.cublog.cn/相关推荐

  1. VxWorks网络驱动配置及分析

       VxWorks支持两种形式的网络驱动,一种是BSD驱动支持通用的BSD4.4网络,API,结构等和大多数BSD网络的驱动类似.另一种是END网络驱动,是VxWorks独有的,根据VxWorks ...

  2. linux 源码 网络驱动,Linux网络驱动源码分析(一)

    功能:注册PCI驱动,参数为要注册的pci驱动的结构体. 下面来详细的分析以下这个函数,如此,才能更清楚的了解驱动和设备的匹配过程. pci_register_driver->driver_re ...

  3. e1000网络驱动分析

    e1000网络驱动分析 e1000是intel千兆以太网卡的驱动源码.官方关于驱动的使用可以参考如下链接. https://www.intel.cn/content/www/cn/zh/support ...

  4. Linux 网卡驱动学习(一)(分析一个虚拟硬件的网络驱动样例)

    在Linux,网络分为两个层,各自是网络堆栈协议支持层,以及接收和发送网络协议的设备驱动程序层. 网络堆栈是硬件中独立出来的部分.主要用来支持TCP/IP等多种协议,网络设备驱动层是连接网络堆栈协议层 ...

  5. 网络工程师学习参考资料路由器配置案例分析

    网络工程师学习参考资料路由器配置案例分析 2006-08-30 23:01:00 标签:配置 路由器 案例 网络工程师 [推送到技术圈] INTERNET共享资源的方式越来越多,就大多数而言,DDN专 ...

  6. linux网络驱动lookback,Linux lookback驱动分析

    Linux的网络驱动中,lookback 驱动算是最为简单的.本次分析的程序来自 Linux-2.6.32.68 源码,其中 lookback.c 驱动程序位于 /drives/net/ 目录下. 普 ...

  7. centos7配网卡_centos7 无线网卡驱动的安装及无线网络的配置详解

    centos7 无线网卡驱动的安装及无线网络的配置 我的无线网卡的型号是:水星MERCURY 支持linux的驱动程序包是:RTL8188eus_USB_linux_v3.4.4_4749.20121 ...

  8. centos7 无线网卡驱动的安装及无线网络的配置

    centos7 无线网卡驱动的安装及无线网络的配置 我的无线网卡的型号是:水星MERCURY 支持linux的驱动程序包是:RTL8188eus_USB_linux_v3.4.4_4749.20121 ...

  9. 路由器逆向分析------MIPS系统网络的配置(QEMU)

    本文博客地址:http://blog.csdn.net/qq1084283172/article/details/69378333 MIPS系统网络的配置  使用QEMU 模拟正在运行的MIPS系统并 ...

最新文章

  1. 巨石加密_点餐:如何吃一个可怕的巨石
  2. unity, 内存profile,ImageEffects Temp和Unity GI SystemTex RGBM
  3. cad二次开发--添加对象到模型空间中
  4. chatterbot mysql_ChatterBot代码解读-介绍和框架
  5. 拼多多开卖劳斯莱斯,直降122万,10万人表示想拼!
  6. linux 下xhprof的安装和使用
  7. 3.windows图形界面
  8. Google发布了Google Sketchup,完全免费
  9. 超全现代虚幻UE4素材网站整理
  10. 淘宝用户行为分析——通过excel分析
  11. 云风的个人空间 : 《代码大全》读书笔记
  12. Linux软件安装包保存
  13. 警惕分布式常见的这十大坑
  14. hadoop tyarn冲突_hadoop集群启动yarn时出现的问题和解决方法
  15. 一个熟练程序员所具备的特质-2
  16. Think Pad E570重装Win10系统没有外放喇叭声音
  17. Omnipeek空口抓包(4):抓取路由器下的无线网络包
  18. Debian个人使用入门
  19. STM32寄存器ODR,BSRR和BRR
  20. K型热电偶(k-type)温度与电压转换计算笔记

热门文章

  1. 哥尼斯堡七桥——Euler欧拉定理证明
  2. jiecao播放视频
  3. 为什么那么多人喜欢玩游戏?包括我!
  4. slf4j MDC使用
  5. 科技的成就(四十八)
  6. 法拉第电动机是如何发明的,又如何激怒他的导师的?
  7. CASIO MTP-1248 调整日期,时间,星期
  8. QML类型:ListView
  9. 蓝牙耳机 已连接 但就是找不到[【掉落在某个角落找不到】解决方式
  10. 阿里云--云开发平台的创建与部署