在 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 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 开发板上,可使用 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: deployscript:- 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.rhkb.cn/news/14527.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数字化转型的三个阶段:信息化、数字化、数智化

在当今快速迭代的数字时代,企业的生存与发展已与数字化转型浪潮紧密相连。数字化转型不仅是对传统业务模式的深度革新,更是企业适应未来市场、提升竞争力的关键路径。这一过程并非一蹴而就,而是循序渐进地分为信息化、数字化、数智化三个阶段…

Spring Boot篇

为什么要用Spring Boot Spring Boot 优点非常多,如: 独立运行 Spring Boot 而且内嵌了各种 servlet 容器,Tomcat、Jetty 等,现在不再需要打成 war 包部署到 容器 中,Spring Boot 只要打成一个可执行的 jar 包就能独…

Python----Python高级(网络编程:网络基础:发展历程,IP地址,MAC地址,域名,端口,子网掩码,网关,URL,DHCP,交换机)

一、网络 早期的计算机程序都是在本机上运行的,数据存储和处理都在同一台机器上完成。随着技术的发展,人 们开始有了让计算机之间相互通信的需求。例如安装在个人计算机上的计算器或记事本应用,其运行环 境仅限于个人计算机内部。这种设置虽然…

JAVA安全—FastJson反序列化利用链跟踪autoType绕过

前言 FastJson这个漏洞我们之前讲过了,今天主要是对它的链条进行分析一下,明白链条的构造原理。 Java安全—log4j日志&FastJson序列化&JNDI注入_log4j漏洞-CSDN博客 漏洞版本 1.2.24及以下没有对序列化的类做校验,导致漏洞产生 1.2.25-1.2.41增加了黑名单限制,…

Kubernetes架构原则和对象设计(三)

云原生学习路线导航页(持续更新中) kubernetes学习系列快捷链接 Kubernetes架构原则和对象设计(一)Kubernetes架构原则和对象设计(二)Kubernetes常见问题解答 本文主要对kubernetes的核心技术概念和核心A…

每日学习 设计模式 五种不同的单例模式

狮子大佬原文 https://blog.csdn.net/weixin_40461281/article/details/135050977 第一种 饿汉式 为什么叫饿汉,指的是"饿" 也就是说对象实例在程序启动时就已经被创建好,不管你是否需要,它都会在类加载时立即实例化,也就是说 实例化是在类加载时候完成的,早早的吃…

Transformer 详解:了解 GPT、BERT 和 T5 背后的模型

目录 什么是 Transformer? Transformer如何工作? Transformer 为何有用? 常见问题解答:机器学习中的 Transformer 在技​​术领域,突破通常来自于修复损坏的东西。制造第一架飞机的人研究过鸟类。莱特兄弟观察了秃鹫如何在气流中保持平衡,意识到稳定性比动力更重要。…

21.2.6 字体和边框

版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的。 通过设置Rang.Font对象的几个成员就可以修改字体,设置Range.Borders就可以修改边框样式。 【例 21.6】【项目&#xff…

1456. 定长子串中元音的最大数目

目录 一、题目二、思路2.1 解题思路2.2 代码尝试2.3 疑难问题 三、解法四、收获4.1 心得4.2 举一反三 一、题目 二、思路 2.1 解题思路 维护一个统计变量,出入时间窗口就判断 2.2 代码尝试 class Solution { public:int maxVowels(string s, int k) {int sum0;i…

[LeetCode]day16 242.有效的字母异位词

242. 有效的字母异位词 - 力扣(LeetCode) 题目描述 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的 字母异位词 示例 1: 输入: s "anagram", t "nagaram" 输出: true示例 2: 输入: s "rat"…

蓝桥杯---力扣题库第38题目解析

文章目录 1.题目重述2.外观数列举例说明3.思路分析(双指针模拟)4.代码说明 1.题目重述 外观数列实际上就是给你一串数字,我们需要对于这个数据进行一个简单的描述罢了; 2.外观数列举例说明 外观数列都是从1开始的,也…

Linux网卡配置方法

1、查看IP ip a 网卡状态 UP/down 2、查看网关 如果显示route命令未找到需要下载net-tools软件包 route -n 3、查看DNS服务器地址 DNS服务器地址会存放在/etc/resolv.conf文件中 使用cat命令可以查看 cat /etc/resolv.conf 4、修改网卡配置 方法1)编…

DeepSeek使用技巧大全(含本地部署教程)

在人工智能技术日新月异的今天,DeepSeek 作为一款极具创新性和实用性的 AI,在众多同类产品中崭露头角,凭借其卓越的性能和丰富的功能,吸引了大量用户的关注。 DeepSeek 是一款由国内顶尖团队研发的人工智能,它基于先进…

消费电子产品中的噪声对TPS54202的影响

本文章是笔者整理的备忘笔记。希望在帮助自己温习避免遗忘的同时,也能帮助其他需要参考的朋友。如有谬误,欢迎大家进行指正。 一、概述 在白色家电领域,降压转换器的应用非常广泛,为了实现不同的功能就需要不同的电源轨。TPS542…

无限使用Cursor

原理:运行程序获得15天的免费试用期,重新运行程序重置试用期,实现无限使用。免费的pro账号,一个月有250的高级模型提问次数。 前提:已安装cursor cursor-vip工具:https://cursor.jeter.eu.org?p95d60efe…

Linux之文件IO前世今生

在 Linux之文件系统前世今生(一) VFS中,我们提到了文件的读写,并给出了简要的读写示意图,本文将分析文件I/O的细节。 一、Buffered I/O(缓存I/O)& Directed I/O(直接I/O&#…

【计组】实验五 J型指令设计实验

目录 一、实验目的 二、实验环境 三、实验原理 四、实验任务 代码 一、实验目的 1. 理解MIPS处理器指令格式及功能。 2. 掌握lw, sw, beq, bne, lui, j, jal指令格式与功能。 3. 掌握ModelSim和ISE\Vivado工具软件。 4. 掌握基本的测试代码编写和FPGA开发板使用方法。 …

扩展知识--缓存和分时复用cpu

在多核CPU中,缓存和分时复用CPU是两个重要的概念,它们分别涉及硬件架构和资源管理策略。以下将从缓存的层次结构、工作原理以及分时复用CPU的概念进行详细解释。 一、多核CPU中的缓存 缓存的定义与作用 缓存(Cache)是位于CPU与主…

人工智能:从概念到未来

人工智能:从概念到未来 一、引言 在当今数字化时代,人工智能(Artificial Intelligence,AI)已从科幻小说和电影中的幻想逐渐走进现实,成为推动社会进步和经济发展的关键力量。它正在深刻地改变着我们的生活…

nvm:node 版本管理器

一、先安装git Git 安装完成后执行 git --version查看版本号是否安装成功 二、安装nvm (参考链接:mac 安装nvm详细教程 - 简书) 官网(https://github.com/nvm-sh/nvm/blob/master/README.md)查看最新版本安装命令 …