WIFI驱动
wifi驱动的移植
使用的wifi模块为SDIO WIFI,芯片为RTL8189FTV,这款产品是给驱动的,只需要将其添加到内核编译,就可以使用。
使用RTL8XXX WIFI 驱动源码-> realtek 将这个目录包放入Linux 内核源码中的 drivers/net/wireless 目录下,此目
录下存放着所有 WIFI 驱动文件 。
修改 drivers/net/wireless/Kconfig
打开这个文件在最后加入
1 | source "drivers/net/wireless/realtek/Kconfig" |
添加到 drivers/net/wireless/Kconfig 中的内容
修改 drivers/net/wireless/Makefile
打开文件在最后加入
1 | obj-y += realtek/ |
这样就能在内核菜单中配置它这个选项了。
配置内核
配置wifi
配置支持IEEE802.11
最后编译WIFI驱动
使用sdio wifi,最后保存配置。
此时将设备启动,使用命令查看网卡
当然最后的wlan0是配好的了,没配好的时候它没有ip地址。
现在开始移植使用的工具了。
wireless tools 工具移植与测试
wireless tools 是操作 WIFI 的工具集合,包括一下工具:
①、 iwconfig:设置无线网络相关参数。
②、 iwlist:扫描当前无线网络信息,获取 WIFI 热点。
③、 iwspy:获取每个节点链接的质量。
④、 iwpriv:操作 WirelessExtensions 特定驱动。
⑤、 ifrename:基于各种静态标准命名接口。
下载iwlist_for_visteon-master.tar.bz2源码包,进入到 iwlist_for_visteon-master 文件夹里面,打开Makefile 文件,修改 Makefile 中的 CC、 AR 和 RANLIB 这三个变量 。
1 | CC = arm-linux-gnueabihf-gcc |
1 | make clean |
编译完成以后就会在当前目录下生成 iwlist、 iwconfig、 iwspy、 iwpriv、 ifrename 这 5 个工具,另外还有很重要的 libiw.so.29 这个库文件。将这 5 个工具拷贝到开发板根文件系统下的/usr/bin 目录中.
1 | sudo cp iwlist iwconfig iwspy iwpriv ifrename /home/moss/linux/nfs/rootfs/usr/bin/ -f |
wpa_supplicant 移植
下载源码openssl-1.1.1d.tar.gz,解压并配置
1 | tar -vxzf openssl-1.1.1d.tar.gz |
将 lib 目录下的 libcrypto 和 libssl 库拷贝到开发板根文件系统中的/usr/lib 目录下
1 | sudo cp libcrypto.so* /home/moss/linux/nfs/rootfs/lib/ -af |
libnl 库移植
在编译 libnl 之前先安装 biosn 和 flex ,这个在boa服务器里安装过,就是用命令就行,解压后配置
1 | tar -vxzf libnl-3.2.23.tar.gz |
wpa_supplicant 移植
下载源码并解压
1 | tar -vxzf wpa_supplicant-2.7.tar.gz |
进入到 wpa_supplicant 目录下,然后进行配置, wpa_supplicant 的配置比较特殊,需要将 wpa_supplicant 下的 defconfig 文件拷贝一份并重命名为.config
1 | cd wpa_supplicant/ |
之后更改.config文件
1 | CC = arm-linux-gnueabihf-gcc |
.config 文件配置好以后就可以编译 wpa_supplicant 了,使用如下命令编译
1 | export PKG_CONFIG_PATH=/home/zuozhongkai/linux/IMX6ULL/tool/libnl/lib/pkgconfig: $PKG_CONFIG_PATH //指定 libnl 库 pkgconfig 包位置 |
将生成的wpa_cli 和 wpa_supplicant 这两个文件拷贝到开发板根文件系统的/usr/bin目录中
1 | sudo cp wpa_cli wpa_supplicant /home/moss/linux/nfs/rootfs/usr/bin/ -f |
工具移植完了开始使用。
WIFI 联网测试
先在开发板根文件系统的/etc 目录下创建一个名为“wpa_supplicant.conf”的配置文件,此文件用于配置要连接的 WIFI 热点以及 WIFI 密码。
1 | ctrl_interface=/var/run/wpa_supplicant |
wpa_supplicant.conf 文 件 编 写 好 以 后 再 在 开 发 板 根 文 件 系 统 下 创 建 一 个“/var/run/wpa_supplicant”目录, wpa_supplicant 工具要用到此目录!
1 | mkdir /var/run/wpa_supplicant -p |
开始测试
先是打开网卡
1 | ifconfig wlan0 up |
正常这里就好使了,可以ping通外网了,但是如果你使用的根文件系统是busybox生成的,那就会出问题,ip地址可以获取但是设置不上,就是你使用命令ifconfig -a,发现你的wlan0网卡没有ip地址,但你的udhcpc没有报错。
这就是写这篇博客的意义所在,如果你不是这个busybox的根文件系统就没有问题,只能说我每回学东西都踩一个坑,下面是解决方案:
首先还是下载busybox的源码包,将busybox-1.xx.x/examples/udhcp/目录下的simple.script文件(注意不是sample.script)拷贝到根文件系统的/usr/share/udhcpc/目录下,将它重命名为default.script,并且chmod +x default.script加上可执行权限即可。
重新获取ip地址就可以了联网了。