今天不小心在抽屉里发现前面用的 ZT6688 usb网卡-dm9601芯片,就想,这个玩意能不能移到板上跑呢。
一、下dm9601 linux2.6 源码 dm9601-2.6.tgz
在goolge上找发现“”,只要改一下dm9601.h就可以了。可是按上面的地址不能下载,找了好几个地方都下载不了,要么下来解压不了。最后在一个日文页面上,下了一个下来,后面验证可以用。
tar xvf dm9601-2.6.tgz
二、改Makefile
1、把“KERNELDIR ?= ” 加上ARM linux kernel的路径,我把它改成:
“KERNELDIR ?= /home/longjindong/kernel-2.6.13”
2、在“ifeq ($(DEBUG),y)”前面加上 CC=arm-linux-gcc;使后面用的gcc是我的arm gcc。
三、修改dm9601.h
根上面的解决方法,在#endif 前面加上下面语句:
DM9601_DEV( "ZT6688 USB Ethernet", 0x0a46, 0x6688,
DEFAULT_GPIO_RESET )
四、配置arm gcc
在宿主板上运行:
export PATH=/usr/local/arm/3.3.2/bin:$PATH
如果之前已经配置好,此步可以越过。
五、编译
make
如果没有出错提示,在dm9601-2.6目录中 ls 有dm9601.ko,说明编译通了。
六、拷到板上测试
1. 我cp到板的根目录中,运行:
insmod /dm9601.ko
出现“usbcore: registered new driver dm9601”,在内核中成功注册。
2、插入ZT6688 usb网卡,并配IP地址
ifconfig eth1 192.168.11.14 up #因为eth0已经被占用。
ifconfig eth0 down #关掉板上原有网卡
ifconifg
eth1 Link encap:Ethernet HWaddr 9F:FF:0F:FE:10:14
inet addr:192.168.11.114 Bcast:192.168.11.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1430 errors:0 dropped:0 overruns:0 frame:0
TX packets:46 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:193976 (189.4 KiB) TX bytes:3108 (3.0 KiB)
ping 192.168.11.11 #ping我winxp主机
[root@FriendlyARM /]# ping 192.168.11.11
PING 192.168.11.11 (192.168.11.11): 56 data bytes
64 bytes from 192.168.11.11: icmp_seq=0 ttl=64 time=6.6 ms
64 bytes from 192.168.11.11: icmp_seq=1 ttl=64 time=1.6 ms
通了。
注意:编译这个ko的gcc和编译kernel时的gcc应该的同一个gcc才行哦,不然这个ko,insmod会失败的哦。