高通 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,解读关键的状态机日志。

相关推荐
FlyWIHTSKY1 小时前
cex和dex都是如何与链上交互的
人工智能
汇智信科1 小时前
全域感知,协同智管 —— 智能矿山综合管控平台
人工智能·汇智信科
熊猫钓鱼>_>1 小时前
免费域名的隐秘陷阱与网站稳定部署实战:火山引擎到底行不行?
人工智能·ai·llm·域名·火山引擎·引擎·火山
甲维斯1 小时前
鬼故事 !DeepSeek4.1 比Opus5 GPT5.6还强!
人工智能
xsd202411181 小时前
Pdf-Inspector开源工具:用Rust实现毫秒级PDF分类、文本提取与Markdown转换
人工智能
Yanjun2i1 小时前
Agent学习记录五:Pydantic验证
人工智能·python·学习
找方案1 小时前
AI视频生成对决:Sora vs 可灵 vs Veo,谁能定义未来
人工智能·机器学习·音视频
AI_Auto2 小时前
架构视角看数字化转型|核心架构:大共享平台+小应用,从按需走向适变
大数据·人工智能·架构·制造
小蒋观天下2 小时前
社区AI智能摄像头完整选型指南
大数据·人工智能·安全·计算机视觉·语音识别·ai大模型