Skip to main content
Dragonwing · Qualcomm
类别

本文的简短介绍。请与教程首页的卡片摘要保持一致。

作者或团队·YYYY 年 MM 月 DD 日·← 全部文章

概述

IQ9 EVK 集成了 8 个 1.9 GHz 的 Cortex-A78 核心、12 GB 内存和 110 GB 存储——单条 USB-C 线即可供电,便于携带。当时我缺少一台本地 ARM 构建机,而 IQ9 EVK 就在手边。何乐而不为? 本篇博客涵盖两方面内容:
  1. 本地 ARM 构建 — 将 IQ9 EVK 本身作为主线内核的 ARM 原生构建机器
  2. 主线内核调试 — 更重要的是,这块开发板运行自己构建的产物,使其成为一个自包含的主线内核启动与调试平台

1. 在 IQ9 EVK 上进行本地 ARM 构建

IQ9 EVK 出厂预装 Qualcomm Linux(QLI 2.0)——这是一个基于 Yocto 的镜像,专为运行预构建应用而设计。它在设计上是被锁定的:没有 apt-get,也没有 opkg。
要获得合适的构建环境,请按照使用 Qualcomm Launcher 刷机刷入 Ubuntu
安装构建依赖:
在开发板上原生克隆并构建主线内核:
凭借 8 核和 12 GB 内存,构建可以在开发板上顺畅运行——无需交叉编译。

2. 在 IQ9 EVK 上调试主线内核

我们只有一台 IQ9 EVK — 没有备用机,没有第二块板。目标:调试主线内核而不损坏板子,同时能干净地回退到发布版 Ubuntu 镜像。

我们尝试过的方案(以及失败原因)

a. kexec — IQ9 的看门狗会在调试内核完全启动之前触发并强制重启。 b. fastboot boot — 在 IQ9 上尚不支持,而且无论如何都需要一台单独的宿主机。 c. GRUB 菜单加载拼接了 DTB 的内核 — DTB 无法通过这种方式正确传递。

有效的方案:自定义 GRUB 菜单项

添加一个新的 GRUB 菜单项,指向调试内核和 DTB:
部署构建产物:
启动时,当控制台显示:
选择 *Ubuntu_debug 以启动到主线内核。

验证

主线内核 7.2-rc5 已成功运行。GRUB 中发布版 Ubuntu 的菜单项保持完整——如果出现任何问题,只需重启并选择默认菜单项即可。不会变砖。🎉 下次重启时,GRUB 会自动默认回到发布版 Ubuntu 镜像——无需人工干预。这为我们提供了一个安全、可重复的循环:
  • 启动到 Ubuntu_debug 以测试主线内核
  • 重启 → 自动回到稳定的发布版
  • 迭代、修复、重复
这个工作流让调试最新主线内核和提交补丁变得非常方便。例如,我最早发现的其中一件事就是:主线内核在 IQ9 上重启功能无法工作 — 得益于一个干净且低风险的调试环境,这个问题很快就被定位了。 尽情享用!🚀