(TODO)
在高通的开发生态里,从确定硬件基线(比如你提到的 Gen 2 平台,或者你正在碰的 AR1/AR1+ Gen 1 平台)到成功把整套 AOSP + QKI 源码拉到你的本地服务器,需要通过高通官方的 Manifest(清单文件) 体系来操作。
高通的代码并不是一个庞大的单一 Git 仓库,而是由数百个独立的 Git 子仓库组合而成的。拉取代码的核心工具是谷歌的 repo。
以下是标准的、企业级的完整拉取代码基线全流程:
1. 核心前置:获取高通的"暗号"(基线版本号)
高通的每一代芯片、每一个 Android 版本都有一个行业内通行的"接头暗号",叫做 Tag(标签) 或 Chipset Code。
在拉代码前,你必须拿到这个 Tag。通常有两个正规渠道:
-
渠道 A(商业授权) :去高通的 CreatePoint 官网,根据你的芯片型号(如 AR1+ 对应的
SG8125/AR1或手机端的SM8550Gen 2),查找最新的Release Note。里面会写明当前的软件基线,例如:LA.UM.14.9.c1(Linux Android, Android 14, 某个具体的分支版本)。 -
渠道 B(开源白嫖) :如果你没有商业账号,直接去我们上一轮聊到的 CodeLinaro 官网的分支列表 网页里,搜索你的芯片代号或 Android 14 关键字,能直接看到公开的、最新的公开 Tag(例如
LA.UM.14.xxxx)。
2. 第一步:环境准备(安装 Repo 工具)
确保你的 Ubuntu 编译服务器上安装了谷歌的 repo 脚本:
Bash
mkdir -p ~/bin
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
export PATH=~/bin:$PATH
3. 第二步:初始化 Repo 仓库(瞄准清单文件)
高通的代码清单文件托管在 CodeLinaro 上。你需要用 repo init 去绑定这个清单仓库。
💡 核心命令:
Bash
# 1. 创建你的工作目录
mkdir -p ~/qcom_gen2_aosp14
cd ~/qcom_gen2_aosp14
# 2. 初始化 repo,-b 后面跟的是你查到的高通官方精准分支名,-m 后面是清单文件名
repo init -u https://git.codelinaro.org/clo/la/la/manifest.git \
-b release/LA.UM.14.9.c1 \
-m AU_LINUX_ANDROID_LA.UM.14.9.C1.XM.XX.RXX.xml
注意 :
-b后面指定的是高通大版本的 Release 分支,-m后面的.xml文件则是高通精确到某一天发版的"快照清单"(包含了当时几百个 Git 仓库各自最稳定的 Commit ID)。
4. 第三步:全面开拉(多线程同步)
初始化完成后,本地只会生成一个隐藏的 .repo/ 目录。接下来才是真正耗费硬盘和带宽的阶段:
Bash
# 开启 8 个线程(根据你的服务器带宽和CPU核心数调整)并发下载
repo sync -j8 -c --no-tags --fail-fast
参数内幕:
-
-c:只拉取当前指定分支(Current Branch)的代码,不拉取历史无用分支,能极大节省几十个G的硬盘空间。 -
--no-tags:不下载复杂的 Git Tags,进一步加快下载速度。 -
--fail-fast:遇到某个不重要的仓库报错时立刻跳过或报错,方便你及时处理。
由于整套基线包含 AOSP 14 官方源码 + 高通私有开源组件(如 msm_drm 驱动等),总大小通常在 150GB ~ 250GB 之间,根据网速,通常需要挂机拉几个小时。
5. 第四步:把高通闭源的私有"固件包"补进去
这时候你拉出来的代码,其实还只是"开源和半开源部分 "(也就是能编译出 msm_drm.ko、Android 核心镜像的代码)。
但是高通 Gen2 / AR1 平台里最核心的 Hexagon DSP 编译好的二进制固件(如 ADSP/CDSP 的算法包、Modem 射频固件、GPU的闭源 Lib 库) 是绝对不放在公共 Git 上的。
-
操作手法 :你必须从高通 CreatePoint 网站上,下载对应这个 Tag 的闭源私有包(通常叫
Proprietary Release Package,一堆.tar.gz压缩包)。 -
怎么做 :把它们解压到你的代码根目录下,它们通常带有一个
install.sh脚本。运行它,它会自动把这些闭源的驱动、固件精准地释放到vendor/qcom/proprietary/目录下。
🏁 终点线:验证基线并准备拉起编译
当你完成了 repo sync 并且释放了闭源 proprietary 包后,你的代码基线就彻底完全体了。你可以直接运行高通的标准全量编译命令来验证:
Bash
# 1. 初始化高通编译环境
source build/envsetup.sh
# 2. 选择你的硬件平台单板配置(以 gen2 或 ar1 对应的组合为例)
lunch qssi-userdebug # 或者是厂商特定的 target 名,如 lunch kalama-userdebug
# 3. 开始编译整个 SoC 固件
./build.sh -j16
只要整套代码能顺利跑完编译并吐出 dtbo.img, vendor.img 和 boot.img,就说明你的这条大基线已经完美躺在你的服务器里,接下来就可以在这个基础上,大刀阔斧地去修改你的显示驱动和总线配置了!
基于 6.1-android14-qki 内核做多芯片平台的唤醒和驱动移植,你的思维可以直接切换到现代高通 Android 手机/穿戴的标准底层套路:
-
别找
.dts源码了,找dtbo源码 : 在 QKI 统一内核架构下,主内核(GKI/QKI image)是完全闭源死掉的,不准动。你所有的物理硬件改动(比如调 I2C 传感器、配 GPIO 镜腿触控引脚),都必须写在独立的产商设备树插件(Device Tree Blob Overlay) 仓库里,最后编译成dtbo.img强行合入。 -
驱动全部模块化(KMI 约束) : 你的外设驱动(比如新屏幕的驱动、外挂 MCU 的总线驱动)不能直接编译进内核(
obj-y废了),必须全部编译成独立的内核模块.ko文件(obj-m),并在开机时通过init.rc或vendor_dlkm分区动态加载。