一、搭建环境
1)软件环境:VMware15 + Ubuntu16.04
2)硬件模块:GEC6818开发板 + 雷凌RT3070USBWIFI模块
3)所有资料下载链接:资料下载:提取码:ixl3
二、编译 USB WIFI模块驱动
1)先编译 GEC6818 开发板的内核源码,需要注意的是编译内核的时候需要选中如下选项,否则编译USBWIFI模块驱动会失败:
2)根据USBWIFI模块型号选择对应的源码,当前选择源码版本:2011_0719_RT3070_RT8070_RT3370_RT5370_RT5372_RT2070_Linux_STA_V2.5.0.3_DPO.tar.bz2。本次是使用WIFI模块去连接别的WIFI,因此选择带有 STA 字样的源码,注意区分 AP、STA 、APSTA 这三种类型。
3)解压源码之后查看相关的说明文档 README_STA_usb 文件。
步骤一:进入源码。
步骤二:修改 Makefilen 中 MODE=STA ,TARGET=LINUX,以及修改相应Linux内核源码路径。
步骤三:修改 os/linux/config.mk 文件 中的 HAS_WPA_SUPPLICANT 和 HAS_NATIVE_WPA_SUPPLICANT_SUPPORT 值。
4)Makefile 修改如下:
5)os/linux/config.mk 修改如下:
6)编译驱动
执行编译命令:make ARCH=arm KBUILD_NOPEDANTIC=1 ,如果提示缺少头文件之类的,可以设置 export C_INCLUDE_PATH 的值进行指定对应头文件路径等。最后生成 ko 文件路径如下:
可以使用对应交叉工具链中的 strip 工具去除 ko 文件中多余信息进行缩小 ko 文件的大小,具体如下:
三、交叉编译 wireless_tools
1)说明:wireless_tools 是一种Linux下的开源的无线管理软件,他提供了建立无线连接的基础工具。相关命令可以网上搜索即可。源码下载链接如下:wireless_tools下载
2)修改 Makefile 源码,指定相关交叉编译器路径以及安装路径即可,具体如下:
3)编译以及安装
make
make install
提示:可能提示缺少头文件如:iwlib.h:20:23: fatal error: sys/types.h: No such file or directory 。
解决办法:export C_INCLUDE_PATH=$C_INCLUDE_PATH:/usr/local/arm/arm-2009q3/arm-none-linux-gnueabi/libc/usr/include/ ,其实就是设置交叉工具链中的相关头文件为环境变量。
4)查看编译安装成果
四、交叉编译 wpa_supplicant
1)交叉编译 wpa_supplicant 还需要交叉编译 openssl ,下载链接如下:
openssl 下载链接 ,wpa_supplicant 下载链接。
2)交叉编译 openssl,将两个包解压后,需要为opensll打上wpa的补丁:cp wpa_supplicant-0.7.3/patches/openssl-0.9.8e-tls-extensions.patch openssl-0.9.8e/ 。然后参考 openssl 交叉编译动态库 交叉编译出动态库。最后编译得到的结果如下:
3)出现的问题以及解决办法如下:
4)交叉编译 wpa_supplicant ,cd 进入 wpa_supplicant-0.7.3/wpa_supplicant 路径执行以下命令:cp defconfig .config 和 vim .config 进行修改,具体如下:
主要是修改交叉编译工具,以及指定之前编译安装好的 openssl 头文件以及库文件。之后修改 Makefile 如下:
make 编译之后得到如下结果:
将 wpa_supplicant 和配置文件 wpa_supplicant.conf 下载到开发板中,wpa_supplicant替换掉原本开发板 /usr/sbin/ 目录或者是 /bin 目录下的 wpa_supplicant,wpa_supplicant.conf放在/etc目录下,在 wpa_supplicant.conf 最后编辑 network ,并且删除其他 network 选项,具体如下:
五、开发板测试
1)将之前编译的 rt5370sta.ko 、iw开头的执行文件、openssl库文件、wpa_supplicanty以及wpa_supplicant.conf 文件拷贝到开发板相关路径。
2)具体执行可以参考 "USBWIFI目标文件" 文件夹中 操作步骤.txt 文件即可。
3)ping www.baidu.com 测试是否成功,结果如下: