搜档网
当前位置:搜档网 › qf9700 USB网卡在x86 linux和arm linux上的驱动安装以及配置

qf9700 USB网卡在x86 linux和arm linux上的驱动安装以及配置

qf9700 USB网卡在x86 linux和arm linux上的驱动安装以及配置

最近要在一块老板子上面移植openwrt,需要扩展网口,于是选择了qf9700这款USB网卡,附赠的光盘里面有提供在linux下面安装的驱动源代码,所以我们要自己编译驱动源代码生成内核加载模块,加载模块成功后才能正常使用网卡。下面介绍一下qf9700在x86和arm 上的驱动的安装和配置。

x86(使用ubuntu10.04):

1.首先要确认使用的linux的内核的版本号,在终端里面输入uname -r 获得。

2.下载与你目前使用的内核版本一致的源代码,可以到这个链接处下载

https://www.sodocs.net/doc/941359927.html,/,在ubuntu里面有个简便的操作方式,sudo apt-get install

linux-source,下载到的源代码保存在/usr/src/下。

3.获取目前你所使用内核的配置文件config-2.6.xx-xx-generic,该文件保存在/boot文件夹下(xx是它的小版本号)。

4.进入到/usr/src/下,解压缩linux内核源代码,拷贝配置文件到解压缩后的内核源代码树根目录里面,这几步操作的命令如下:tar zxvf linux-xxx.tar.gz -C /home/linux ,cp /boot/config-2.6.xx-xx-generic /home/linux/.config。

5.进入解压缩获得的linux内核树文件夹下编译,命令如下:cd /home/linux && make,然后进入漫长的编译等待时间。

**************************************************************************************************** ********************************************************

以上属于通用的编译内核的过程,有基础的兄弟们可以略过,下面几步很重要。

6.待内核编译完成后,解压缩驱动的源代码,修改里面MAKEFILE,有关路径的操作和前面步骤的论述保持一致:

KERNEL_DIR := /home/linux/

MODULE_NAME := qf9700

obj-m := $(MODULE_NAME).o

all:

@echo "Building QF9700 USB2NET chip driver..."

@(cd $(KERNEL_DIR) && make -C $(KERNEL_DIR) SUBDIRS=$(PWD) CROSS_COMPILE=$(CROSS_COMPILE) modules)

clean:

-rm -f *.o *.ko .*.cmd .*.flags .mii.mod.o.d *.mod.c Module.symvers

Module.markers modules.order version.h

-rm -rf .tmp_versions

7.修改MAKEFILE确认无误后,make

在x86上面编译没有错误的提示,有关在arm平台上面的错误我会在后面描述,编译生成的qf9700.ko文件就是我们需要的内核模块。

8.这是比较重要的一步,使用USB网卡对内核的usbnet和mii模块有依赖关系,所以在加载qf9700.ko模块之前要确认usbnet.ko和mii.ko模块已经加载到了内核之中,可以使用lsmod |grep -e usbnet -e mii这一命令查询,在确认到两个模块已经成功加载后,调用命令 insmod qf9700.ko 加载qf9700.ko。

9.最后一步,调用命令 cat /var/log/syslog | grep -e usb -e qf9700 来确认添加的usb网卡的设备名,一般情况是你现在使用网卡名的编号加1,如你现在的网卡是eth0,那么新添加的网卡就是eth1。调用ifconfig命令启动,配置网卡,至此USB网卡可以正常使用。

arm(使用s3c2410)

1~6,和x86的内核编译过程基本一致,需要注意的是要修改linux内核树下的MAKEFILE文件和qf9700驱动的MAKEFILE文件以支持交叉编译器。

7.在编译qf9700的驱动时候会提示有__udelay()_的错误,查阅资料得知,arm不支持udelay()里面的参数大于2000的情况,需要修改qf9700.c里面的几句,把

udelay(20*1000)改为mdelay(20),udelay(2*1000)改为mdelay(2)即可成功编译。

8.加载内核模块的操作也是相同的,但是和x86不同的是完成模块的加载后,并没有找到对应的网卡设备,调用dmesg命令后,发现如下代码:

usb 1-2: new full speed USB device using qf9700 and address 3

usb 1-2: rejected 1 configuration due to insufficient available bus-power

usb 1-2: no configuration chosen from 1 choice

说明由于USB接口电流不足不能使USB网卡正常配置,可以调用下面命令

echo -n 1 > /sys/bus/usb/devices/1-2/bConfigurationValue 设备ID和你在dmesg 下查看到的要保证一致(红色标注的)

9.上述操作完成后,调用ifconfig命令启动配置USB网口后,就可以在arm板上使用了。

相关主题