i.MX6ULL应用移植 | 移植wpa_supplicant到Linux开发板(2.7版本)
Posted Mculover666
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了i.MX6ULL应用移植 | 移植wpa_supplicant到Linux开发板(2.7版本)相关的知识,希望对你有一定的参考价值。
一、wpa_supplicant
wpa_supplicant 是跨平台的 WPA 请求者程序(supplicant),支持 WEP、WPA 和 WPA2(IEEE 802.11i).。可以在桌面、笔记本、嵌入式系统中使用。
wpa_supplicant 是在客户端使用的 IEEE 802.1X/WPA 组件,支持与 WPA Authenticator 的交互,控制漫游和无线驱动的IEEE 802.11 验证和关联。
二、移植前的准备
1. 移植openssl
参考这篇文章:i.MX6ULL应用移植 | 移植OpenSSH 8.9到Linux开发板(zlib、openssl、openssh)。
2. 移植libnl
libnl库提供了一套应用于Linux系统基于Netlink协议通信的API接口。
2.1. 下载源码
官网:https://www.infradead.org/~tgr/libnl/。
下载最新的3.2.25版本:
wget https://www.infradead.org/~tgr/libnl/files/libnl-3.2.25.tar.gz
解压源码:
tar -zxf libnl-3.2.25.tar.gz
2.2. 交叉编译
新建编译安装文件夹:
mkdir libnl-3.2.25-build
编译配置:
./configure --host=arm-linux-gnueabihf --prefix=/home/mculover666/develop/imx6ull/libnl/libnl-3.2.25-build
编译:
make -j16
安装:
make install
2.3. 拷贝库文件到开发板根文件系统
sudo cp -raf lib/* ~/develop/imx6ull/rootfs-busybox-imx6ull/source_busybox/usr/lib/
三、wpa_supplicant移植
1. 下载源码
官网:Linux WPA/WPA2/IEEE 802.1X Supplicant。
下载2.7版本:
wget http://w1.fi/releases/wpa_supplicant-2.10.tar.gz
最新2.10版本使用了dbus,我的编译器为arm-linux-gnueabihf-gcc 7./5.0版本,编译报错。
解压源码:
tar -zxf wpa_supplicant-2.7.tar.gz
2. 交叉编译
复制def_config文件:
cd wpa_supplicant
cp defconfig .config
修改.config
文件:
- 修改交叉编译器
- 添加openssl库文件路径
- 添加libnl库文件路径
CFLAGS += -I/home/mculover666/develop/imx6ull/openssl/openssl-3.0.2-build/include
LIBS += -L/home/mculover666/develop/imx6ull/openssl/openssl-3.0.2-build/lib -lssl -lcrypto
CC=arm-linux-gnueabihf-gcc
CFLAGS += -I/home/mculover666/develop/imx6ull/libnl/libnl-3.2.25-build/include/libnl3
LIBS += -L/home/mculover666/develop/imx6ull/libnl/libnl-3.2.25-build/lib
设置环境变量:
export PKG_CONFIG_PATH=/home/mculover666/develop/imx6ull/libnl/libnl-3.2.25-build/lib/pkgconfig:$PKG_CONFIG_PATH
编译:
make -j16
编译之后看到可执行文件:
看一下可执行文件的类型,确保是交叉编译的:
3. 拷贝可执行文件到开发板的根文件系统
sudo cp wpa_cli wpa_supplicant ~/develop/imx6ull/rootfs/rootfs-busybox-imx6ull/source_busybox/usr/local/bin
重新打包烧录根文件系统。
4. 测试
四、WIFI联网测试
1. 创建配置文件
在开发板根目录/etc下创建配置文件:wpa_supplicant.conf
,添加以下配置内容:
ctrl_interface=/var/run/wpa_supplicant
ap_scan=1
network=
ssid="Mculover666"
psk="mculover666"
在var目录下创建用到的目录:
mkdir -p /var/run/wpa_supplicant
2. 连接热点
wpa_supplicant -D wext -c /etc/wpa_supplicant.conf -i wlan0 &
3. 获取ip地址
udhcpc -i wlan0
查看网卡:
查看路由表:
4. ping通外网测试
五、问题记录
1. 问题描述
udhcpc获取到ip地址后,没有设置到网卡。
2. 问题定位
该问题是由于使用busybox制作根文件系统时,没有把udhcpc的脚本拷贝过去。
3. 问题解决
下载之前制作根文件系统使用的busybox源码,参考之前文章:i.MX6ULL系统移植 | 使用busybox制作根文件系统(1.29.0)。
拷贝busybox源码中 examples/udhcp/simple.script 脚本,到开发板根文件系统的 /usr/share/udhcpc(不能改路径,否则要重新修改编译busybox源码),并重命名为:default.script。
以上是关于i.MX6ULL应用移植 | 移植wpa_supplicant到Linux开发板(2.7版本)的主要内容,如果未能解决你的问题,请参考以下文章
i.MX6ULL应用移植 | 移植lvgl到imx6ull(基于framebuffer)
i.MX6ULL应用移植 | 移植libevdev和evtest工具到imx6ull开发板
i.MX6ULL应用移植 | 移植libevdev和evtest工具到imx6ull开发板
i.MX6ULL应用移植 | 移植lvgl到imx6ull(基于framebuffer)