一、开发环境和准备资料
1.1、开发环境
1.2、准备资料
MT7601源码:
http://链接:https://pan.baidu.com/s/1u8HJett5bmHgWzyktPQdhg 提取码:njt2
二、源码移植
2.1、解压
将下载的源码放在虚拟机目录下解压;
2.2、修改MakeFile
①、增加linux内核和编译器路径
ifeq ($(PLATFORM),PC)
# Linux 2.6
LINUX_SRC = /home/zk/linux/IMX6ULL/linux/linux-imx-rel_imx_4.1.15_2.1.0_ga
# Linux 2.4 Change to your local setting
#LINUX_SRC = /usr/src/linux-2.4
# LINUX_SRC_MODULE = /lib/modules/$(shell uname -r)/kernel/drivers/net/wireless/
CROSS_COMPILE = /usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-
endif
2.3、修改设备名
2.4、修改USB设备ID
{USB_DEVICE(0x2717,0x4106)}, /* xiaomi wifi */
三、make编译
3.1、有“__DATE__”报错,有几种办法解决
①、找打源文件,注释掉该语句
3.2、unknown filed 'private'错误
是因为在配置Makefile时,我们指定的内核在配置时不支持802.11的无线设备驱动,解决办法如下,重新编译内核后再make
3.3、incompatible types when assigning to type ‘int’ from type ‘kuid_t’
数据类型不匹配,有两种方法解决:
①、将int改成kuid_t
②、加上.val
再次make,编译成功
四、驱动加载
将内核和驱动分别放在对应的路径里,重新启动开发板;
modprobe加载驱动,报错:
解决办法如下,将rt_linux.h中的BULKAGGRE_SIZE调整为10,rtmp_usb.h中的RXBULKAGGRE_SIZE调整为2; (备注:后续还需要定位一下为什么?)
重新make生成新的驱动驱动文件后加载:
输入ifconfig -a看看,确实有wlan00