高通 IQ-9075 部署 EC-Master 实战指南:环境构建与实时 Linux (RT) 系统烧录

Qualcomm Dragonwing™ IQ-9075 评估套件(基于 QCS9075 SoC)是一款高性能的边缘 AI 平台。当其与 acontis/盟通科技的协议栈 EC-Master 及实时 Linux (RT-Linux) 内核结合时,即可转变为适用于机器人与高端工业自动化的强大 EtherCAT 主站控制器。

本文作为系列指南的上篇,将直接聚焦核心操作,致力于从零完成主机环境搭建、Yocto 实时镜像构建,以及底层的 QDL 烧录流程。

一、 主机环境准备与 Yocto RT 镜像构建

1. 配置 Ubuntu 构建主机

首先,在 Ubuntu 主机上安装 Yocto 编译所需的基础依赖包及 kas 工具(要求版本 ≥ 4.8):

sudo apt update

sudo apt install build-essential chrpath cpio debianutils diffstat \

file gawk gcc git iputils-ping libacl1 locales python3 python3-git \

python3-jinja2 python3-pexpect python3-pip python3-subunit socat \

texinfo unzip wget xz-utils zstd

sudo apt install pipx

执行后请重启 Shell 会话以确保路径生效

pipx ensurepath

pipx install "kas>=4.8"

2. 初始化 Yocto 实时工作区

使用高通官方提供的实时 Linux manifest 初始化工作区:

mkdir <WORKSPACE_DIR>

cd <WORKSPACE_DIR>

git clone https://github.com/qualcomm-linux/meta-qcom -b qli-2.0

kas shell meta-qcom/ci/iq-9075-evk.yml:meta-qcom/ci/linux-qcom-rt-6.18.yml:meta-qcom/ci/qcom-distro-kvm.yml

3. 核心:实时内核 (RT Kernel) 调优

要实现 EtherCAT 的微秒级确定性,必须消除电源管理带来的延迟。需在机器配置文件中添加以下关键内核启动参数:

  • cpuidle.off=1:完全禁用 CPU 空闲状态管理,防止 CPU 在任务间隙进入睡眠状态,消除唤醒延迟导致的周期抖动 (Jitter)。
  • cpufreq.off=1:禁用动态 CPU 频率缩放,使 CPU 固定在最高频率运行,消除频率切换带来的延迟峰值。
  • isolcpus=7:将 CPU 7 从 Linux 通用调度器的负载均衡中剥离。内核不会将常规进程分配到此核心,确保 EtherCAT 周期任务独占该核心。
  • irqaffinity=0-6:将硬件中断处理限制在 CPU 0-6,进一步保障 CPU 7 的实时响应能力。

操作路径 : 编辑机器配置文件:<WORKSPACE_DIR>/meta-qcom/conf/machine/iq-9075-evk.conf 添加通用内核参数。 编辑 Kas 配置文件:<WORKSPACE_DIR>/meta-qcom/ci/base.yml 配置 CPU 核心隔离。

4. 添加 atemsys 与网络驱动补丁

为确保链路层在板卡上正常运行,需对设备树和 SMMU 进行修改。将补丁文件0002-arm64-dts-qcom-add-atemsys-support-for-lemans-and-SM.patch 放入内核配方目录: <WORKSPACE_DIR>/meta-qcom/recipes-kernel/linux/linux-qcom-6.18

并在 .inc 文件的 SRC_URI 中注册该补丁:

file://0002-arm64-dts-qcom-add-atemsys-support-for-lemans-and-SM.patch \

5. 编译实时 Linux 镜像

执行以下命令开始构建包含上述修改的实时镜像:

kas build meta-qcom/ci/iq-9075-evk.yml:meta-qcom/ci/linux-qcom-rt-6.18.yml:meta-qcom/ci/qcom-distro-kvm.yml --target qcom-multimedia-image

编译完成后,镜像将生成于:build/tmp/deploy/iq-9075-evk/qcom-multimedia-image-iq-9075-evk.rootfs-xxx.qcomflash/


二、 QDL 烧录流程与硬件准备

烧录过程需严格按照顺序执行,请确保主机与开发板通过 USB-C 线缆(用于固件传输)正确连接。

1. 进入 QDL 下载模式

  1. 将开发板上的 Switch Pin 3 拨至 ON 位置,以启用 Qualcomm Download (QDL) 模式。
  2. 对开发板进行断电重启 (Power-cycle),使其进入 firehose loader 模式。
  3. 在主机端验证:执行 lsusb,应能看到 Qualcomm QDL mode 设备。

2. 安装 QDL 烧录工具

下载并配置 Qualcomm Device Loader (QDL):

wget https://softwarecenter.qualcomm.com/api/download/software/tools/Qualcomm_Device_Loader/Linux/Debian/latest.zip -O qdl.zip

unzip qdl.zip

chmod +x QDL_2.7_Linux_x64/qdl

export PATH="PATH:PWD/QDL/QDL_2.7_Linux_x64"

验证安装

qdl --version

更新 udev 规则以允许无权限访问

echo 'SUBSYSTEMS=="usb", ATTRS{idVendor}=="05c6", ATTRS{idProduct}=="9008", MODE="0666", GROUP="plugdev"' | sudo tee /etc/udev/rules.d/51-qcom-usb.rules

sudo systemctl restart udev

3. 分步烧录固件

注意:必须严格按照以下顺序执行烧录,不可颠倒。

Step A: 烧录 UFS 配置数据 (仅需每块板卡执行一次)

mkdir <provision_download_path> && cd <provision_download_path>

wget https://artifacts.codelinaro.org/artifactory/codelinaro-le/Qualcomm_Linux/QCS9100/provision.zip

unzip provision.zip -d provision

qdl --storage ufs prog_firehose_ddr.elf provision_1_2.xml

Step B: 烧录 SAIL (NOR)

cd build/tmp/deploy/iq-9075-evk/qcom-multimedia-image-iq-9075-evk.rootfs-xxx.qcomflash/sail_nor

qdl --storage spinor prog_firehose_ddr.elf rawprogram0.xml patch0.xml

Step C: 烧录 CDT

mkdir <cdt_download_path> && cd <cdt_download_path>

wget https://artifacts.codelinaro.org/ui/native/codelinaro-le/Qualcomm_Linux/QCS9100/cdt/qcs9075-iq-9075-evk.zip

unzip <downloaded_zip_file>

<qdl_download_path>/qdl --storage ufs prog_firehose_ddr.elf rawprogram3.xml patch3.xml

Step D: 烧录 Linux 镜像

cd build/tmp/deploy/iq-9075-evk/qcom-multimedia-image-iq-9075-evk.rootfs-xxx.qcomflash/

sudo systemctl stop ModemManager # 防止 ModemManager 干扰 USB 通信

qdl --storage ufs prog_firehose_ddr.elf rawprogram*.xml patch*.xml

当终端输出 partition 1 is now bootable 时,表示烧录完成。

4. 恢复正常运行模式

  1. 将 Switch Pin 3 拨回 OFF 位置,确保板卡下次启动时进入正常的 Linux 系统,而非下载模式。
  2. (推荐)连接 micro-USB 线缆至串口控制台,以便观察启动日志。
  3. 对开发板断电重启,即可在串口终端看到完整的系统启动序列。

结语与下篇预告

通过本篇的配置,我们已成功在 Qualcomm IQ-9075 上构建并烧录了经过深度调优的实时 Linux 系统,并通过 isolcpus 等参数为 EtherCAT 任务预留了纯净的计算核心。

然而,要让 EC-Master 发挥真正的微秒级实时性能,仅靠系统层是不够的。在下一篇《中篇:atemsys 驱动加载与 EC-Master 首次运行》中 ,我们将深入内核层,讲解如何交叉编译并加载 atemsys 模块以绕过 Linux 标准网络栈(实现零拷贝/旁路访问),跑通第一个 EtherCAT Demo,解读关键的状态机日志。

相关推荐
天空'之城17 小时前
多智能体通信灾难:消息泛滥如何拖垮整个 Agent 系统
大数据·人工智能
赤龙ERP17 小时前
AI+ERP:Agent 进企业,卡在数据和权限这两道坎
人工智能·erp·企业数字化
智圣新创0117 小时前
地方应用型高校智慧校园效能跃升 智圣新创数据治理全链路落地参考框架
人工智能
老饼讲解-BP神经网络17 小时前
一篇详解-BP神经网络matlab实现例子与方法(newff)
人工智能·神经网络·matlab
没落之王17 小时前
AI在文言文——论文脉复苏对AI的意义
大数据·人工智能·算法
司南-704917 小时前
AI infra 学习笔记(三):预处理·第一步——QKV 投影到底算了多少
人工智能·笔记·学习
龙亘川17 小时前
政法工作系统数字化建设实践解读:以全周期闭环驱动政法工作现代化
大数据·人工智能·智慧城市·开源软件·数据可视化
小宋102117 小时前
RAG 知识库也会被投毒:恶意文档、间接 Prompt Injection 与入库审核
人工智能·prompt
AI创界者17 小时前
Python 进阶:重构经典设计模式(六)—— 享元模式与单例模式在 Python 3.10+ 中的内存优化与线程安全演化
人工智能·aigc
honsor17 小时前
PoE温湿度传感器:一根网线供电+通信,即插即用,机房/配电室/仓库温湿度监测首选
运维·服务器·网络·数据库·人工智能·安全