在 IMX 系列项目中,很多时候需要 WiFi 功能,比如基于 i.MX 的网关以及带 OTA 功能的项目等等,本文介绍了在 i.MX6ULL平台,使用 CYW4345 WiFi芯片,并使用开源的 wpa_supplicant 工具,测试WiFi 功能方法。WPA是WiFi Protected Access的缩写,中文含义为“WiFi网络安全存取”。WPA是一种基于标准的可互操作的WLAN安全性增强解决方案,可大大增强现有以及未来无线局域网络的数据保护和访问控制水平。 wpa_supplicant是一个开源项目,已经被移植到Linux,Windows以及很多嵌入式系统上。它是WPA的应用层认证客户端,负责完成认证相关的登录、加密等工作。
图(1) 带 CYW43455 WiFi 芯片的i.MX6ULL 开发板
一、编译镜像,i.MX6ULL YOCTO 镜像默认集成了 wpa_supplicant
- 在已有的 Yocto 项目中,修改文件 imx6ullevk-x11/conf/local.conf ,增加如下设置:
UBOOT_CONFIG = “emmc” |
- 编译u-boot :
$ bitbake -c compile u-boot-imx $ bitbake -c deploy u-boot-imx |
在路径 imx6ullevk-x11/tmp/deploy/images/imx6ull14x14evk 生成 u-boot-emmc-2018.03.r0.imx 。
- 将开发板调整至 Serial Download 模式,将需要烧录的镜像放置在 UUU 同一文件 夹下:
uboot:u-boot-emmc-2018.03.r0.imx 打包镜像文件:core-image-base-imx6ull14x14evk-DATE.rootfs.sdcard.bz2 (DATE 为文件生成时间) |
- 执行烧录命令:
$ bzip2 -dk core-image-base-imx6ull14x14evk-DATE.rootfs.sdcard.bz2 $ sudo ./uuu emmc_all u-boot-emmc-2018.03.r0.imx core-image-base-imx6ull14x14evk-DATE.rootfs.sdcard |
此处所用 rootfs.sdcard 是原 Yocto 项目生成的可烧录至 SD 卡中的镜像文件,在本操作中也适用。
二、启动 WiFi 功能
- 将开发板调整至 EMMC 启动模式,接入串口,此处使用 minicom 查看串口信息。如下图所示。
- 进入 u-boot 控制台,查看环境变量并选择设备树文件:
由于 i.MX6ULL 默认的设备树配置没有支持 wifi 功能,因此需要执行如下命令:
=> pri => setenv fdt_file imx6ull-14x14-evk-btwifi.dtb => saveenv => boot |
执行以上命令后,内核将匹配 imx6ull-14x14-evk-btwifi.dtb,该设备树下包含了 WiFi 的设备配置。
- 启动以后进入 root 命令行模式,配置运行 wpa supplicant 程序。
# iwconfig # ifconfig wlan0 # wpa_supplicant -B -i wlan0 -D nl80211 -c /etc/wpa_supplicant.conf |
其中 -B 指桥接口名称,-D 指驱动类型名称, -c 指读取的配置文件名称。启动后如下图所示。
4.使用 wpa测试 WiFi 功能,命令如下:
# wpa_cli -i wlan0 > scan // 搜索附近 WiFi,搜索结束后回车即可 > scan_result // 查看搜索到的信号结果 > add_network // 增加网络 > set_network 1 ssid “wifi test” // 选择附近的某一 WiFi > set_network 1 psk “12345678.” // 设置密码 |
> select_network 1 // 连接 WiFi > status // 查看 WiFi 连接情况 > q # udhcpc -i wlan0 |
测试结果如下图所示:
- 配置 WiFi客户端功能,扫描 wifi 热点,列出附近的所有热点名称
- 选择一个网络并加入,
- 上网测试:连接百度 IP,数据传输 OK!
参考文献:
- https://blog.csdn.net/yunlong654/article/details/88655685
- MX_Yocto_Project_User's_Guide.PDF
评论