技术开发 频道

基于Vxworks嵌入式下网络设备驱动设计

  ·将驱动程序加载到Vxworks系统中

  要对所设计的驱动程序进行测试,首先就必须把驱动程序加载到Vxworks IMAGE中,并且给设备分配一个IP,这样才能有利于网间测试。

  首先,修改configNet.h文件,添加如下代码:

  #ifdef INCLUDE_DM_9102_END

  #define DM_9102_BUFF_LOAN_0
1

  #define DM_9102_LOAD_FUNC sysDm9102EndLoad

  #define DM_9102_LOAD_STR_0
""

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

  和END_TBL_ENTRY endDevTbl [] 中添加

  #ifdef INCLUDE_DM_9102_END

  {
0, DM_9102_LOAD_FUNC, DM_9102_LOAD_STR_0, TRUE, NULL, FALSE},

  #endif
/* INCLUDE_DM_9102_END */

  其次,编辑config.h文件,添加如下代码:

  #define INCLUDE_DM_9102_END
/* Davicom 9102 Fast Ethernet Controller */

  最后,编辑sysLib.c文件,添加如下代码:

  
/* include dm9102 End driver support routines */

  #ifdef INCLUDE_DM_9102_END

  IMPORT STATUS sysDm9102PciInit (void);

  #endif
/* INCLUDE_DM_9102_END */

  
/* include dm9102End driver support routines */

  #ifdef INCLUDE_DM_9102_END

  #include
"sysDm9102End.c"

  #endif
/* INCLUDE_DM_9102_END */

  #ifdef INCLUDE_DM_9102_END

  sysDm9102PciInit ();

  #endif
/* INCLUDE_DM_9102_END */

 

  通过上述过程相应的添加程序,然后重新编译Vxworks,这样就将所设计的网卡驱动程序添加到Vxworks内核中了。

  ·PCI设备检测

  如果所设计的网卡是基于PCI总线的,那么在程序开始就需要对PCI设备进行检测,在Vxworks5.4中有专门的PCI函数来检测设备的总线号、设备号和功能号。首先利用pciFindDevice( )函数对给定VendorID和DeviceID的设备进行检测,检测完后同时给出了设备的总线号、设备号和功能号;接下来就是获得该设备的中断号、基地址(包括IO和内存)。Vxworks中pciConfigLib.h文件中定义PCI总线的常量。如中断号: PCI_CFG_BRG_INT_LINE,IO基地址:PCI_CFG_BASE_ADDRESS_0,内存基地址: PCI_CFG_BASE_ADDRESS_1等等。所以利用函数pciConfigInByte和pciConfigInLong就可以很容易地获得设备的中断号和基地址。

  ·调试方法

  为了方便调试网卡驱动程序,推荐利用串口对程序进行下载并将Vxworks image拷贝到软盘中以从软盘来加载它。调试的时候首先应该给网卡分配一个IP(利用usrNetIfConfig函数),然后利用ping来对网卡进行测试。

  3.结语

  利用上述方法所设计的网卡后,不久可以利用它来进行程序下载,而且能满足网卡所有的功能,包括对TCP/IP和UDP/IP(组播、广播和单播)进行了测试。

0
相关文章