首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

Vxworks嵌入式操作系统下网络设备驱动程序设计 03

Vxworks嵌入式操作系统下网络设备驱动程序设计 03

2.3将驱动程序加载到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内核中了。
2.4 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就可以很容易地获得设备的中断号和基地址。
返回列表