高通学习5--高通SDK结构(TODO)

(TODO)

在高通的开发生态里,从确定硬件基线(比如你提到的 Gen 2 平台,或者你正在碰的 AR1/AR1+ Gen 1 平台)到成功把整套 AOSP + QKI 源码拉到你的本地服务器,需要通过高通官方的 Manifest(清单文件) 体系来操作。

高通的代码并不是一个庞大的单一 Git 仓库,而是由数百个独立的 Git 子仓库组合而成的。拉取代码的核心工具是谷歌的 repo

以下是标准的、企业级的完整拉取代码基线全流程:

1. 核心前置:获取高通的"暗号"(基线版本号)

高通的每一代芯片、每一个 Android 版本都有一个行业内通行的"接头暗号",叫做 Tag(标签)Chipset Code

在拉代码前,你必须拿到这个 Tag。通常有两个正规渠道:

  • 渠道 A(商业授权) :去高通的 CreatePoint 官网,根据你的芯片型号(如 AR1+ 对应的 SG8125 / AR1 或手机端的 SM8550 Gen 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.imgboot.img,就说明你的这条大基线已经完美躺在你的服务器里,接下来就可以在这个基础上,大刀阔斧地去修改你的显示驱动和总线配置了!

基于 6.1-android14-qki 内核做多芯片平台的唤醒和驱动移植,你的思维可以直接切换到现代高通 Android 手机/穿戴的标准底层套路

  1. 别找 .dts 源码了,找 dtbo 源码 : 在 QKI 统一内核架构下,主内核(GKI/QKI image)是完全闭源死掉的,不准动。你所有的物理硬件改动(比如调 I2C 传感器、配 GPIO 镜腿触控引脚),都必须写在独立的产商设备树插件(Device Tree Blob Overlay) 仓库里,最后编译成 dtbo.img 强行合入。

  2. 驱动全部模块化(KMI 约束) : 你的外设驱动(比如新屏幕的驱动、外挂 MCU 的总线驱动)不能直接编译进内核(obj-y 废了),必须全部编译成独立的内核模块 .ko 文件(obj-m),并在开机时通过 init.rcvendor_dlkm 分区动态加载。

相关推荐
99乘法口诀万物皆可变15 分钟前
PcanToVectorXL_V01:打通 Vector 与 PCAN 的双向 CAN/CAN‑FD 桥梁
c++·学习
MartinYeung519 分钟前
[论文学习] CAMIA:下文感知成员推理攻击
人工智能·深度学习·学习
secondyoung38 分钟前
Cortex-R52学习:存储系统
arm开发·单片机·学习·arm
科技IT杂谈1 小时前
2026年智能体与定制工具平台观察:五个平台的路径与场景
学习
New农民工1 小时前
射频芯片学习-Lora包参配置
学习
Turbo正则2 小时前
群论学习入门 | 群论与李群的基本概念
人工智能·学习·算法·抽象代数
毛丫讲绘本2 小时前
0-3岁选绘本需要做到越早启蒙越要简单
人工智能·学习·微信·微信公众平台·微信开放平台
小c君tt2 小时前
linux学习笔记1
linux·笔记·学习
吃好睡好便好3 小时前
泰戈尔的诗歌6
学习·生活
双吉堡3 小时前
北京通州有哪些热门且专业的学画画画室?
学习