当前位置: 首页 > article >正文

在 NXP Yocto 环境下实现 Qualcomm Wi-Fi Driver 的 GitLab CI/CD

在嵌入式开发中,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 deviperf3 等测试,验证 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 module

EXTRA_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
  - deploy

variables:
  YOCTO_BUILD_DIR: "/yocto/build"

build:
  stage: build
  script:
    - export MACHINE=imx8mp-evk
    - source setup-environment ${YOCTO_BUILD_DIR}
    - bitbake core-image-minimal
  artifacts:
    paths:
      - "${YOCTO_BUILD_DIR}/tmp/deploy/images/imx8mp-evk/core-image-minimal-imx8mp-evk.wic"

test:
  stage: test
  dependencies:
    - build
  script:
    - 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: deploy
  dependencies:
    - test
  script:
    - 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 开发板上,可使用 iwiperf3 进行测试:

# 确保 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: deploy
  script:
    - scp ath11k_pci.ko root@nxp-board:/lib/modules/$(uname -r)/updates/
    - ssh root@nxp-board "depmod -a && modprobe ath11k_pci"

此外,可使用 MenderSWUpdate 进行批量 OTA 设备管理。


6. 监控与日志分析

在 CI/CD 中可添加 Wi-Fi 监控:

dmesg | grep ath11k

结合 Prometheus + Grafana 进行 Wi-Fi 连接质量监测。


7. 总结

步骤内容
构建使用 Yocto 编译 Qualcomm Wi-Fi 驱动,并打包进系统镜像。
测试NXP i.MX8MP 上运行 Wi-Fi 连接、吞吐量 测试。
部署通过 远程 SSHOTA 更新 进行 Wi-Fi 驱动部署。

通过 GitLab CI/CD,可以在 NXP Yocto 环境下自动化构建、测试和部署 Qualcomm Wi-Fi 驱动,提高开发效率,确保代码质量。🚀

如果你对 Yocto、Qualcomm Wi-Fi 驱动CI/CD 还有更多问题,欢迎留言交流!😊


http://www.kler.cn/a/538683.html

相关文章:

  • NodeList 对象
  • 电脑黑屏按什么键恢复?电脑黑屏的解决办法
  • 计算机视觉语义分割——Attention U-Net(Learning Where to Look for the Pancreas)
  • Docker数据卷管理及优化
  • Jetpack ViewModel
  • 【实用教程】在 Android Studio 中连接 MuMu 模拟器
  • 使用 SurrealDB 构建高效的 GraphQL 后端
  • DeepSeek深度思考:客户端(Android/iOS)架构设计指南
  • 使用opencv解析视频,通过图片比对,筛选出每一帧视频的变化
  • LibreOffice - pptx 转 pdf
  • Unity3D开发之2019.4.5f1版本IPointerClickHandler Bug
  • 后缀表达式(蓝桥杯19I)
  • Java面试题之:sql优化方式
  • 【C++高并发服务器WebServer】-12:TCP详解及实现
  • Office/WPS接入DeepSeek等多个AI工具,开启办公新模式!
  • 第一节 docker基础之---安装
  • torch_unbindtorch_chunk
  • 0207作业
  • DeepSeek 和 ChatGPT 的商业化发展前景对比
  • 深入浅出谈VR(虚拟现实、VR镜头)
  • 1、http介绍
  • 深入探究 C++17 std::is_invocable
  • LeetCode--300. 最长递增子序列【DP+二分】
  • 自动化测试工具selenium的安装踩坑
  • android隐藏虚拟按键recents button
  • Android的MQTT客户端实现