一、开发环境
宿主机:redhat5.3
交叉编译器:arm-linux-gcc (4.5.1)
目标:tiny4412开发板 linux内核:3.5.0
无线网卡型号:360 wifi2代
注:360 wifi2代所用的网卡芯片为 Ralink的解决方案,芯片型号为MT7601(可以上网查),在无线网卡的使用中有二种方式:一种直接使用360自带的软件来直接安装驱动。一种是使用其对应的芯片方案驱动。对应咱们只能使用对应的芯片方案来驱动无线网卡。
可以参考下面博客:
http://blog.163.com/gl_jiang@126/blog/static/7610097220144145340238/
二、下载相对应方案的无线网卡驱动
进入http://www.mediatek.com/en/downloads/下载MT7601的驱动或者同一系列的驱动,下载下来的包为:DPO_MT7601U_LinuxSTA_3.0.0.4_20130913.tar.bz2
三、解压并且修改与编译
1、解压
2、修改Makefile,让其支持arm体系
2.1、默认的编译平台为x86的cpu,在Makefile的30行可以看到
2.2、由于需要的平台为arm体系
3、修改交叉编译器与源码树路径
由于接下来是把其驱动编译成模块,因此需要设置内核源码树所在的路径,以及相对的交叉编译器。
把下面
改为
4、修改支持360 wifi2代的usb设备id
4.1、首先在没有接入360wifi的redhat上查看usb设备
4.2、接入360wifi后再次查看usb设备
从上面可以看出360 wifi2代的usb设备id分别为148f:760b
4.3、修改源码使其支持其id
在其文件中可以找到下面代码:
修改添加360 wifi2代ID:
5、修改头文去除调试信息
6、编译
# make
7、拷贝到arm开发板文件系统
编译成功后会在os/linux目录下产生mt7601Usta.ko 文件,将其拷贝到开发板的文件系统或者nfs系统
在开发板上创建/etc/Wireless/RT2870STA目录
# mkdir /etc/Wireless/RT2870STA -p
把编译好的源码中的.ko和RT2870STA.dat拷贝到开发板根文件系统
# cp os/linux/mt7601Usta.ko /work/system/zxl4412_root
# cp RT2870STA.dat /work/system/zxl4412_root/etc/Wireless/RT2870STA
1、安装360 wifi驱动
# insmod mt7601Usta.ko (加载的过程有点慢,耐心等待下)
安装完毕后插入360 wifi到开发板上,下面是开发板打印的信息:
在开发板打印的信息中有下面的错误:
[ 81.805000] ERROR!!! Failed to allocate memory - TxRxRing
2、驱动加载错误解决
需要设置DMA缓冲区的大小,在u-boot参数设置即可,在bootargs添加coherent_pool=2M。如:
重新加载后正确的信息:
至此,360 wifi2代移植成功。接下来就是如何使用360 wifi2了