在嵌入式开发中,Yocto 被广泛用于定制 Linux 发行版,而 GitLab CI/CD 能够帮助我们自动化构建、测试和部署 Qualcomm Wi-Fi 驱动(如 ath11k)。本文将介绍如何在 NXP i.MX8MP 平台上,基于 Yocto 实现 Qualcomm Wi-Fi 驱动的 GitLab CI/CD,并进行自动化测试和远程部署。
1. GitLab CI/CD 在 Yocto 中的应用
GitLab CI/CD 主要包括 构建(Build)、测试(Test) 和 部署(Deploy) 三个阶段:
- 构建:使用 Yocto BitBake 构建 Qualcomm Wi-Fi 驱动,生成
.ko
内核模块,并打包到系统镜像。 - 测试:在 NXP 设备 上加载驱动,运行
iw dev
、iperf3
等测试,验证 Wi-Fi 连接和性能。 - 部署:通过
scp
部署 Wi-Fi 驱动,或使用 OTA 更新 进行远程升级。
2. Yocto 集成 Qualcomm Wi-Fi Driver
(1) 确保 Yocto 支持 Qualcomm Wi-Fi
在 NXP Yocto 环境下,首先检查是否已经支持 ath11k:
bitbake -s | grep ath11k
如果未找到,则需要手动集成 Qualcomm Wi-Fi Driver。
(2) 编写 Qualcomm Wi-Fi 的 Yocto Recipe
① 创建自定义 Yocto Layer
bitbake-layers create-layer meta-qualcomm-wifi
bitbake-layers add-layer meta-qualcomm-wifi
② 编写 Wi-Fi 驱动 Recipe
在 meta-qualcomm-wifi/recipes-kernel/ath11k/ath11k.bb
添加:
DESCRIPTION = "Qualcomm Atheros ATH11K Wi-Fi Driver"
LICENSE = "GPL-2.0"
LIC_FILES_CHKSUM = "file://COPYING;md5=..."SRC_URI = "git://github.com/qca/ath11k.git;branch=main"S = "${WORKDIR}/git"inherit moduleEXTRA_OEMAKE = "KDIR=${STAGING_KERNEL_DIR}"do_compile() {oe_runmake
}do_install() {install -d ${D}${libdir}/modules/${KERNEL_VERSION}/install -m 0644 ath11k_pci.ko ${D}${libdir}/modules/${KERNEL_VERSION}/
}
③ 配置 Yocto 构建
在 local.conf
中添加:
IMAGE_INSTALL_append = " ath11k"
然后使用 BitBake 构建:
bitbake core-image-minimal
3. GitLab CI/CD 配置
在 GitLab 仓库根目录下创建 .gitlab-ci.yml
:
stages:- build- test- deployvariables:YOCTO_BUILD_DIR: "/yocto/build"build:stage: buildscript:- export MACHINE=imx8mp-evk- source setup-environment ${YOCTO_BUILD_DIR}- bitbake core-image-minimalartifacts:paths:- "${YOCTO_BUILD_DIR}/tmp/deploy/images/imx8mp-evk/core-image-minimal-imx8mp-evk.wic"test:stage: testdependencies:- buildscript:- scp ${YOCTO_BUILD_DIR}/tmp/deploy/images/imx8mp-evk/core-image-minimal-imx8mp-evk.wic root@nxp-board:/tmp/- ssh root@nxp-board "dd if=/tmp/core-image-minimal-imx8mp-evk.wic of=/dev/mmcblk0 bs=4M && reboot"- sleep 60- ssh root@nxp-board "modprobe ath11k"- ssh root@nxp-board "iw dev"- ssh root@nxp-board "ip link show wlan0"deploy:stage: deploydependencies:- testscript:- ssh root@nxp-board "cp /lib/modules/$(uname -r)/kernel/drivers/net/wireless/ath/ath11k/ath11k_pci.ko /lib/modules/$(uname -r)/updates/"- ssh root@nxp-board "depmod -a"- ssh root@nxp-board "modprobe ath11k_pci"- ssh root@nxp-board "iw wlan0 scan"
此 .gitlab-ci.yml
定义了:
- build:使用 Yocto 构建镜像。
- test:烧录至 NXP 开发板,加载 Wi-Fi 驱动并测试连接。
- deploy:将驱动远程部署到设备并重新加载。
4. Qualcomm Wi-Fi 驱动的自动化测试
在 NXP i.MX8MP 开发板上,可使用 iw
、iperf3
进行测试:
# 确保 Wi-Fi 设备存在
iw dev# 连接 Wi-Fi
iw wlan0 connect mySSID# 吞吐量测试
iperf3 -c 192.168.1.1 -t 60# 远程 SSH 测试
ssh root@nxp-board "iperf3 -c 192.168.1.1 -t 60"
5. 远程部署与 OTA 更新
在生产环境,可通过 OTA 远程更新 Wi-Fi 驱动:
deploy_ota:stage: deployscript:- scp ath11k_pci.ko root@nxp-board:/lib/modules/$(uname -r)/updates/- ssh root@nxp-board "depmod -a && modprobe ath11k_pci"
此外,可使用 Mender 或 SWUpdate 进行批量 OTA 设备管理。
6. 监控与日志分析
在 CI/CD 中可添加 Wi-Fi 监控:
dmesg | grep ath11k
结合 Prometheus + Grafana 进行 Wi-Fi 连接质量监测。
7. 总结
步骤 | 内容 |
---|---|
构建 | 使用 Yocto 编译 Qualcomm Wi-Fi 驱动,并打包进系统镜像。 |
测试 | 在 NXP i.MX8MP 上运行 Wi-Fi 连接、吞吐量 测试。 |
部署 | 通过 远程 SSH 或 OTA 更新 进行 Wi-Fi 驱动部署。 |
通过 GitLab CI/CD,可以在 NXP Yocto 环境下自动化构建、测试和部署 Qualcomm Wi-Fi 驱动,提高开发效率,确保代码质量。🚀
如果你对 Yocto、Qualcomm Wi-Fi 驱动 或 CI/CD 还有更多问题,欢迎留言交流!😊