1、解压MT7601驱动
*tar -xvf DPO_MT7601U_LinuxSTA_3.0.0.4_20130913.tar.bz2
cd DPO_MT7601U_LinuxSTA_3.0.0.4_20130913*
2、修改Makefile
该版本的驱动包支持多种不同平台的编译配置,默认的Makefile编译平台是PC,见Makefile 第30行:
#PLATFORM: Target platform
PLATFORM = PC
修改PC平台(Makefile第198行)对应的交叉编译参数和内核路径,如下:
修改为:
保存关闭
3、检查wifi结点名称
Android下的HAL和脚本中的wifi设备结点名称用的wlan0,嵌入Linux设备中wifi设备结点名称一般使用的ra0,所以,需要根据实际应用对象,进行修改,名称定义位置:
*cd DPO_MT7601U_LinuxSTA_3.0.0.4_20130913
vi include/rtmp_def.h +1604*
如下:
所以,如果是为Android平台编译7601驱动,就需要开启编译宏参数:ANDROID_SUPPORT。这个参数是在os/linux/config.mk中定义的,见config.mk 第373行:
ifeq ($(HAS_ANDROID_SUPPORT),y)
WFLAGS += -DANDROID_SUPPORT
endif
即由HAS_ANDROID_SUPPORT=n或者HAS_ANDROID_SUPPORT=y来决定wifi结点名称是使用“wlan”,还是”ra”。该驱动包中默认使用的是Linux环境中的”ra”结点名称。
4、编译代码生成mt7601Usta.ko驱动模块
由于我是为ARM平台的设备编译,上面修改的是PC平台的编译参数,而Makefile中依赖了ARCH参数,所以还应该指定ARCH=arm,下面就可以编译模块了:
make ARCH=arm CHIPSET=7601U
如果以上修改没有问题,编译通过之后即可以得到station模式的wifi驱动模块mt7601Usta.ko,如下:
5、注意事项
在编译时出错,如下图所示:
原因是在修改Makefile的PC平台编译参数时指定了linux-3.0.y内核路径:”LINUX_SRC = /lodb3/Hi3518_SDK_V1.0.8.1/osdrv/kernel/linux-3.0.y”,但该路径下的内核没有提前编译,导致7601所依赖的内核配置文件和模块版本信息缺失而无法编译通过。解决办法:重新编译内核,内核编译通过后再编译7601驱动模块即可。
6、编译mt7601Uap.ko
编译前的修改方法同上,此处不赘述。