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 下载模式
- 将开发板上的 Switch Pin 3 拨至 ON 位置,以启用 Qualcomm Download (QDL) 模式。
- 对开发板进行断电重启 (Power-cycle),使其进入 firehose loader 模式。
- 在主机端验证:执行
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>
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. 恢复正常运行模式
- 将 Switch Pin 3 拨回 OFF 位置,确保板卡下次启动时进入正常的 Linux 系统,而非下载模式。
- (推荐)连接 micro-USB 线缆至串口控制台,以便观察启动日志。
- 对开发板断电重启,即可在串口终端看到完整的系统启动序列。
结语与下篇预告
通过本篇的配置,我们已成功在 Qualcomm IQ-9075 上构建并烧录了经过深度调优的实时 Linux 系统,并通过 isolcpus 等参数为 EtherCAT 任务预留了纯净的计算核心。
然而,要让 EC-Master 发挥真正的微秒级实时性能,仅靠系统层是不够的。在下一篇《中篇:atemsys 驱动加载与 EC-Master 首次运行》中 ,我们将深入内核层,讲解如何交叉编译并加载 atemsys 模块以绕过 Linux 标准网络栈(实现零拷贝/旁路访问),跑通第一个 EtherCAT Demo,解读关键的状态机日志。