zd1211无线网卡驱动移植到OK6410

一、软硬件环境

1、主机系统:Ubuntu14.0.4

2、开发板硬件:OK6410

3、开发板系统:linux 3.0.1

4、usb无线网卡:TL-WN322G+

二、具体步骤及遇到问题的解决方法

1、下载驱动程序,编译驱动

    网上驱动源码的资源较少,主要是在https://sourceforge.net/projects/zd1211/files/,可以下载到zd1211-firmwarew-1.5.tar.bz2及zd1211-code-r85-truk.zip。但是我下载到的源码始终不能编译通过。从网上了解到自linux 2.6.x后,内核都会自带zd1211驱动,因此产生了新的思路。

(1)重新编译开发板内核,在make menuconfig中加入zd1211驱动模块,重新烧录系统。

(2)zd1211驱动的源码位于linux-3.0.1/drivers/net/wireless/zd1211rw中,这里我将其拷贝出来,删除掉里面的Kconfig文件,然后修改Makefile,如下:


make后即可生成对应的zd1221rw.ko文件。但有可能会报错“scripts/basic/fixdep: Permission denied“。此时需要进到 /kernel/scripts/basic/下, 执行chmod  +x ./fixdep;再次make,如果出现”scripts/mod/modpost: Permission denied“错误,则再进入/kernel/scripts/mod/下,执行chmod  +x ./modpost即可。

2、加载驱动模块

    通过nfs将zd1221rw.ko复制到开发板系统中,执行insmod命令即可加载驱动模块。

    此时执行 ifconfig wlan0 up,提示“usb 1-1: Could not load firmware file zd1211/zd1211b_ub. Error number -2”的错误,此时需要解压之前下载的zd1211-firmwarew-1.5.tar.bz2,得到zd1211-firmwarew文件夹。将其拷贝到开发板系统的/lib/firmware下,再次执行 ifconfig wlan0 up,然后执行 ifconfig,可以看到wlan0相关信息如下图: