一、wireless tools工具移植
wireless tools是操作WiFi的实用工具集,包含iwconfig(设置无线网络参数)、iwlist(扫描热点)、iwspy(获取节点连接质量)、iwpriv(操作特定驱动)、ifrename(重命名接口),其中iwlist和iwconfig最为常用。
移植时,先把资料包里的`iwlist_for_visteon-master.tar.bz2`复制到Ubuntu的tool目录,解压后进入文件夹,修改Makefile中的CC、AR和RANLIB变量,替换为适配开发板的交叉编译工具,格式为`arm-linux-gnueabihf-xxx`。修改完成后,执行`make clean`清理工程,再运行`make`编译,就能得到iwlist、iwconfig等工具,以及关键的`libiw.so.29`库文件。
编译完成后,将这些工具复制到开发板根文件系统的`/usr/bin`目录,库文件复制到`/usr/lib`目录,即可完成移植。
二、wireless tools工具测试
测试的核心是iwlist工具,先输入`iwlist`命令,若输出工具的用法提示,就说明工具正常工作。
正式测试前,先让WiFi模块运行起来,以RTL8188 USB WiFi为例,把模块插到开发板USB接口,加载驱动模块`8188eu.ko`,再用`ifconfig wlan0 up`打开网卡。之后输入`iwlist wlan0 scan`,就能扫描到周边所有WiFi热点,输出的信息包含MAC地址、WiFi名称、协议、频率、速率、信号质量等,通过扫描信息,可确定要连接的目标热点,为后续联网操作做准备。
三、wpa_supplicant移植
wpa_supplicant用于连接指定WiFi热点,移植前需要先完成两个依赖库的移植。
1. 移植openssl
openssl是wpa_supplicant的加密依赖库,先在Ubuntu的tool目录下解压`openssl-1.1.1d.tar.gz`,再新建openssl文件夹存放编译结果。进入解压后的目录,执行配置命令,指定32位ARM平台和交叉编译器,之后运行`make`和`make install`编译安装。编译完成后,把openssl的lib目录里的`libcrypto`和`libssl`库复制到开发板`/usr/lib`目录。
2. 移植libnl库
libnl是wpa_supplicant的通信依赖库,编译前需先在Ubuntu安装bison和flex工具。接着把`libnl-3.2.23.tar.gz`复制到tool目录解压,新建libnl文件夹存放编译结果,进入解压目录执行配置命令,指定交叉编译器前缀和编译存放路径,再用`make -j12`编译、`make install`安装。安装完成后,将libnl的lib目录下所有文件复制到开发板`/usr/lib`目录。
3. 移植wpa_supplicant本体
解压`wpa_supplicant-2.7.tar.gz`,进入其wpa_supplicant子目录,把defconfig文件复制为.config。打开.config文件,指定交叉编译器,同时配置openssl和libnl的头文件与库路径。然后设置环境变量,指定libnl的pkgconfig路径,避免编译时报错,最后执行`make`编译。编译成功后会生成wpa_supplicant和wpa_cli两个工具,复制到开发板`/usr/bin`目录,重启开发板后,输入`wpa_supplicant -v`,若能正常输出版本号,就说明移植成功。
四、WiFi联网测试
不管是USB WiFi还是SDIO WiFi,联网都遵循固定步骤:插好模块(SDIO WiFi需先拔SD卡避免冲突)、加载对应驱动、用ifconfig打开网卡、用iwlist扫描热点,确认目标热点可扫描后,再用wpa_supplicant完成连接。
1. RTL8188 USB WiFi联网测试
先明确驱动匹配,RTL8188EUS用`8188eu.ko`,RTL8188CUS用`8192cu.ko`。扫描确认目标热点后,在开发板`/etc`目录创建`wpa_supplicant.conf`配置文件,填写目标热点的SSID和密码,格式必须严格,等号前后不能有空格,缩进用空格,建议手动输入避免错误,同时创建`/var/run/wpa_supplicant`目录。
配置完成后,输入`wpa_supplicant -D wext -c /etc/wpa_supplicant.conf -i wlan0 &`启动连接,连接成功会有明确提示。最后用`udhcpc -i wlan0`获取IP地址,地址获取成功后,输入`ifconfig wlan0`查看网卡信息,通过ping指定网卡IP访问百度,若能通,就说明USB WiFi联网正常。
2. RTL8189 SDIO WiFi联网测试
测试流程和RTL8188基本一致,先拔掉SD卡再插SDIO模块,加载对应驱动,打开网卡扫描热点。连接时需注意,要用`wpa_supplicant -D nl80211 -c /etc/wpa_supplicant.conf -i wlan0 &`,参数不能错。连接成功后,同样用udhcpc获取IP,再ping百度验证连通性,若ping通则说明SDIO WiFi联网正常。
这套方法适配开发板,核心是确保驱动匹配、依赖库完整,严格遵循配置格式和操作顺序,就能顺利实现WiFi联网。