简介
本文提供如何从源代码构建固件组件并将其集成到 Qualcomm BSP 镜像的高层概述。 固件源代码仅向已签署所需协议的用户开放。如果您尚未获得访问权限, 请访问 Working with Qualcomm 页面创建 Qualcomm ID,并了解有关账户验证和访问级别的更多信息。 从高层次来看,您将学习以下内容:- 设置主机系统并安装所需软件包 – 主机设置
- 切换 Python 版本以匹配构建步骤的要求 – 切换 Python 版本
- 从源代码同步并构建固件 – 构建固件
- 将构建好的固件包含到 BSP 镜像中 – 构建 BSP 镜像
支持的 SoC
本文档支持以下 SoC。如果您的芯片组未 列出,则此处描述的固件构建流程不适用于您的设备。| SoC | 描述 | 支持情况 |
|---|---|---|
| QCS6490 | Qualcomm Dragonwing™ RB3 Gen 2 Vision Kit | ✓ |
| Qualcomm Dragonwing™ RB3 Gen 2 Core Kit | ✓ | |
| Qualcomm Dragonwing™ RB3 Gen 2 Industrial Kit | ✓ | |
| QCS5430 | Qualcomm Dragonwing™ RB3 Gen 2 Lite Vision Kit | ✓ |
| Qualcomm Dragonwing™ RB3 Gen 2 Lite Core Kit | ✓ | |
| IQ9 | Qualcomm Dragonwing™ IQ-9075 Evaluation Kit | ✓ |
| IQ8 | Qualcomm Dragonwing™ IQ-8275 Evaluation Kit | ✓ |
| IQ6 | Qualcomm Dragonwing™ IQ-615 Evaluation Kit | ✓ |
| IQ-X7181 | Qualcomm Dragonwing™ IQ-X7181 Evaluation Kit | ✓ |
| IQ-X5121 | Qualcomm Dragonwing™ IQ-X5121 Evaluation Kit | ✓ |
| CQ-2390 | Qualcomm Dragonwing™ CQ-2390 Evaluation Kit | ✓ |
| IQ-2390 | Qualcomm Dragonwing™ IQ-2390 Evaluation Kit | ✓ |
主机系统要求
- 操作系统
- Ubuntu 22.04
- 配置
- x86 机器
- 四核 CPU,例如 3.4 GHz 的 Intel i7-2600(同等或更高配置)
- 300 GB 可用磁盘空间(交换分区 > 32 GB)
- 16 GB 内存
- 工具
- Git 1.8.3.1 或更高版本
- Tar 1.28 或更高版本
- Python 3.10.2 或更高版本
- GCC 10.1 或更高版本
- GNU Make 4.0 或更高版本
- Kas 4.8 或更高版本
- 权限
- 运行某些命令需要
sudo权限
- 运行某些命令需要
安装 QSC-CLI
qsc-cli 是 Qualcomm 提供的命令行工具,为访问、管理和构建
Qualcomm 软件提供端到端的工作流。请按照以下步骤在您的系统上安装
qsc-cli:
- 访问 Qualcomm 支持页面注册您的 Qualcomm 电子邮箱 ID。
-
下载
qsc-cli的 Debian 软件包:wget https://softwarecenter.qualcomm.com/api/download/software/tools/Qualcomm_Software_Center/Linux/Debian/latest.deb -O qsc_installer.debwget https://softwarecenter.qualcomm.com/api/download/software/tools/Qualcomm_Software_Center/Linux/ARM64/Debian/latest.deb -O qsc_installer.deb -
安装
qsc-cliDebian 软件包:sudo apt update sudo apt install ./qsc_installer.deb -
使用您的 Qualcomm ID 登录
qsc-cli。对于大多数用户,您的 Qualcomm ID 就是您的 电子邮箱地址。此操作会打开浏览器窗口以完成身份验证。如果浏览器 没有自动打开,请复制终端中打印的链接并将其粘贴到您的 浏览器中完成身份验证。qsc-cli login
主机设置
以下说明适用于 Ubuntu 主机系统。Yocto 构建也支持与 Yocto 兼容的其他 发行版, 但未对它们进行验证。-
安装以下软件包,为 Yocto 构建准备主机环境
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 -
Qualcomm 使用
kas工具来同步和构建 Yocto 项目。请按照 以下步骤在系统上安装kas在较旧的 Ubuntu 版本上,系统包管理器提供的kas版本 可能已过时。推荐使用pipx来安装 kas。-
安装
pipxsudo apt install pipx -
将
pipx的安装位置添加到您的PATH中此命令会更新您 shell 的启动文件,因此更改仅在 新的 shell 会话中生效。请在继续下一步之前 重新启动您的 shell 会话。pipx ensurepath -
安装
kas(要求版本 4.8 或更高)pipx install "kas>=4.8"
-
安装
-
验证 kas 是否安装成功。
kas --version
-
编译固件还需要以下软件包:
sudo apt-get install lib32stdc++6 libncurses5 checkinstall libreadline-dev \ libncursesw5-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev \ libbz2-dev libffi-dev curl -
使用
qsc-cli获取用于访问 Chipcode 的 PAT 令牌。该 令牌将在两周后过期。qsc-cli show-access-tokenSample outputuser@hostname:/local/mnt/workspace$ qsc-cli show-access-token [Info]: Starting qsc-cli version 0.0.0.9 5LThNlklb55mMVLB5C2KqUGU2jCF -
将以下条目添加到您的
~/.netrc文件中,以完成对 Chipcode 仓库访问的身份验证:machine chipmaster2.qti.qualcomm.com login <login-id> password <access-token> machine qpm-git.qualcomm.com login <login-id> password <access-token> -
更新 git 配置:
# Add the following git configurations to fetch large size repositories and to avoid unreliable connections git config --global http.postBuffer 1048576000 git config --global http.maxRequestBuffer 1048576000 git config --global http.lowSpeedLimit 0 git config --global http.lowSpeedTime 999999 # Add the following git configurations to follow remote redirects from http-alternates files or alternates git config --global http.https://chipmaster2.qti.qualcomm.com.followRedirects true git config --global http.https://qpm-git.qualcomm.com.followRedirects true
配置参数
下表描述了当前版本的构建标签。这些 值需要替换到构建命令中。| 版本标签 | 标识符 |
|---|---|
| meta-qcom-release-tag | qli-2.0 |
| meta-qcom-extras-release-tag | 213195-wrynose |
| firmware-release-tag | r2.0_00007.2 |
| firmware-release-tag (IQ-X7181/IQ-X5121) | r2.0_00008.0 |
映射固件源代码
下表描述了您可以下载的固件发行版。 有关 Yocto 层的更多信息,请参阅 Qualcomm Linux 元数据层。 访问级别与固件发行版的映射| 发行版 | 描述 | Yocto 层 |
|---|---|---|
| Qualcomm_Linux.SPF.2.0|AP|Standard|OEM|NoModem | 不含 modem 的高级 OS 和固件源码 | meta-qcommeta-qcom-distrometa-qcom-extras |
| Qualcomm_Linux.SPF.2.0|AP|Standard|OEM | 高级 OS 和固件(仅 GPS)源码 | meta-qcommeta-qcom-distrometa-qcom-extras |
| Qualcomm_Linux.SPF.2.0|AMSS|Standard|OEM | 高级 OS 和固件(GPS 和 modem)源码 | meta-qcommeta-qcom-distrometa-qcom-extras |
AP = 应用处理器(Application Processor);AMSS = 高级移动用户软件(Advanced Mobile Subscriber Software)
固件发行版与 git 仓库的映射
| 发行版 | 仓库 URL | 克隆目录 |
|---|---|---|
| Qualcomm_Linux.SPF.2.0|AP|Standard|OEM|NoModem| | https://qpm-git.qualcomm.com/home2/git/qualcomm/qualcomm-linux-spf-2-0_ap_standard_oem_nomodem.git | qualcomm-linux-spf-2-0_ap_standard_oem_nomodem |
| Qualcomm_Linux.SPF.2.0|AP|Standard|OEM| | https://qpm-git.qualcomm.com/home2/git/qualcomm/qualcomm-linux-spf-2-0_ap_standard_oem.git | qualcomm-linux-spf-2-0_ap_standard_oem |
| Qualcomm_Linux.SPF.2.0|AMSS|Standard|OEM| | https://qpm-git.qualcomm.com/home2/git/qualcomm/qualcomm-linux-spf-2-0_amss_standard_oem.git | qualcomm-linux-spf-2-0_amss_standard_oem |
Qualcomm_Linux.SPF.2.0|AP|Standard|OEM| 和 Qualcomm_Linux.SPF.2.0|AMSS|Standard|OEM| 发行版仅在 QCS6490 芯片组上受支持。切换 Python 版本
不同的固件镜像构建步骤需要不同的 Python 版本, 具体版本在每个构建步骤下列出的 Python 版本要求中 说明。您可以使用 Python 版本管理工具来安装并在 所需版本之间切换,而不会影响系统级的 Python 安装。常见的选择包括 pyenv 和 uv。本节介绍如何使用pyenv。
-
pyenv会从源码构建每个 Python 版本,因此请先安装构建 依赖项。如果缺少这些软件包,构建会静默跳过 诸如readline、sqlite3和lzma之类的模块:sudo apt update sudo apt install build-essential libssl-dev zlib1g-dev libbz2-dev \ libreadline-dev libsqlite3-dev libncursesw5-dev xz-utils tk-dev \ libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev -
安装
pyenv。这需要git和curl软件包,它们已作为 主机系统要求的一部分安装。curl https://pyenv.run | bash -
通过在您的
~/.bashrc文件末尾添加以下几行来 配置 shell:export PYENV_ROOT="$HOME/.pyenv" export PATH="$PYENV_ROOT/bin:$PATH" eval "$(pyenv init - bash)" -
重新加载 shell 配置:
source ~/.bashrc -
列出可用的 Python 版本,并找到您正在执行的构建步骤
所需的版本(例如 Python 3.8.2):
pyenv install --list | grep 3.8.2 -
安装所需的 Python 版本:
pyenv install 3.8.2 -
激活已安装的版本。使用
pyenv global将其设置为 您用户账户的默认版本,或使用pyenv local将其仅限于当前 目录:验证已激活正确的版本:pyenv global 3.8.2python --version which python
pyenv global 和 pyenv local 仅通过 pyenv 更改您
用户账户的 Python 版本。它们不会修改或替换系统级的
Python 安装,因此其他用户和系统应用程序不受
影响。-
要恢复到系统 Python 版本:
pyenv global system -
要完全禁用
pyenv,请删除上面 shell 配置步骤中添加到~/.bashrc的那几行,然后重新加载 shell 配置:source ~/.bashrc
构建固件
-
为固件源码创建一个工作区目录并进入该目录。
后续所有说明均假定此目录为工作目录。
mkdir -p <firmware-root> cd <firmware-root> -
使用 Firmware Source Mapping 表中的发布标签和克隆
URL,从 Chipcode 克隆固件源码。
git clone -b <firmware-release-tag> --depth 1 <clone-url> -
根据所选的访问配置文件,将以下命令中的
<firmware-root>和<distro-clone-directory>替换为正确的值。
- QCM6490/QCS5430
- IQ-9075
- IQ-8275
- IQ-615
- IQ-X7181
- IQ-X5121
- CQ-2390/IQ-2390
先决条件所需工具
-
确保当前使用的 shell 是
bash:该命令的预期输出应为echo $0bash。如果不是,请进入 bash shell。bash -
使用以下命令安装 libffi6 软件包。QAIC 编译器需要
该软件包,它用于从 IDL 文件生成头文件和
源文件。
curl -LO http://archive.ubuntu.com/ubuntu/pool/main/libf/libffi/libffi6_3.2.1-8_amd64.deb sudo dpkg -i libffi6_3.2.1-8_amd64.deb -
安装用于 AOP、Qualcomm® Trusted Execution Environment
(TEE) 和 boot 编译的 LLVM:
cd <firmware-root> mkdir llvm # Sign in to qsc-cli and activate the license qsc-cli login qsc-cli tool activate-license --name sdllvm_arm # LLVM requirement for boot compilation is 14.0.4 qsc-cli tool install --name sdllvm_arm --required-version 14.0.4 --path <firmware-root>/llvm/14.0.4 chmod -R 777 <firmware-root>/llvm/14.0.4 # LLVM requirement for the Qualcomm TEE compilation is 16.0.7 qsc-cli tool install --name sdllvm_arm --required-version 16.0.7 --path <firmware-root>/llvm/16.0.7 chmod -R 777 <firmware-root>/llvm/16.0.7 -
导出
SECTOOLS变量并编译固件构建 (<firmware-root>/<distro-clone-directory>是顶层目录):export SECTOOLS=<firmware-root>/<distro-clone-directory>/QCM6490.LE.2.0/common/sectoolsv2/ext/Linux/sectools export SECTOOLS_DIR=<firmware-root>/<distro-clone-directory>/QCM6490.LE.2.0/common/sectoolsv2/ext/Linux -
安装并设置 Qualcomm® Hexagon™ 处理器。将
环境变量 HEXAGON_ROOT 设置为 Hexagon SDK 的
安装路径。若要在使用
qsc-cli时更改安装路径,请参阅 更改 Hexagon 工具安装路径。qsc-cli tool extract --name hexagon8.4 --required-version 8.4.07 qsc-cli tool extract --name hexagon8.4 --required-version 8.4.10 export HEXAGON_ROOT=$HOME/Qualcomm/HEXAGON_Tools echo $HEXAGON_ROOT
- 编译器版本:Hexagon 8.4.07
- Python 版本:Python 3.10.2
- libffi6 软件包
-
进入以下目录:
cd <firmware-root>/<distro-clone-directory>/CDSP.HT.2.5.c3/cdsp_proc/build/ms -
清理构建:
python ./build_variant.py kodiak.cdsp.prod --clean -
构建镜像:
python ./build_variant.py kodiak.cdsp.prod
- 编译器版本:Hexagon 8.4.07
- Python 版本:Python 3.10.2
- libffi6 软件包
-
Nanopb 集成(一次性设置):
cd <firmware-root>/<distro-clone-directory>/ADSP.HT.5.5.c8/adsp_proc/qsh_api curl https://jpa.kapsi.fi/nanopb/download/nanopb-0.3.9.5-linux-x86.tar.gz -o nanopb-0.3.9.5-linux-x86.tar.gz cd <firmware-root>/<distro-clone-directory>/ADSP.HT.5.5.c8/adsp_proc/ python qsh_api/build/config_nanopb_dependency.py -f nanopb-0.3.9.5-linux-x86 -
进入以下目录:
cd <firmware-root>/<distro-clone-directory>/ADSP.HT.5.5.c8/adsp_proc/build/ms -
清理构建:
python ./build_variant.py kodiak.adsp.prod --clean -
构建镜像:
python ./build_variant.py kodiak.adsp.prod
- 编译器版本:LLVM 版本必须更新为 14.0.4
export LLVM=<firmware-root>/llvm/14.0.4/ - Python 版本:Python 3.10
- libffi6 软件包
-
安装设备树编译器:
sudo apt-get install device-tree-compiler export DTC=/usr/bin -
进入以下目录:
cd <firmware-root>/<distro-clone-directory>/BOOT.MXF.1.0.c1/ -
安装依赖项:
python -m pip install -r boot_images/boot_tools/dtschema_tools/oss/requirements.txt pip install json-schema-for-humans -
清理构建:
python -u boot_images/boot_tools/buildex.py -t kodiak,QcomToolsPkg -v LAA -r RELEASE --build_flags=cleanall -
构建镜像:
python -u boot_images/boot_tools/buildex.py -t kodiak,QcomToolsPkg -v LAA -r RELEASE对于 debug 变体构建,请将RELEASE替换为DEBUG。
- 编译器版本:LLVM 16.0.7
- Python 版本:Python 3.10
-
安装 LLVM:
cd <firmware-root>/<distro-clone-directory>/TZ.XF.5.29.1/trustzone_images/build/ms/ vi build_config_deploy_kodiak.xml # Edit all the occurrences of /pkg/qct/software/llvm/release/arm/16.0.7/ to <firmware-root>/llvm/16.0.7/ -
清理构建:
python build_all.py -b TZ.XF.5.0 CHIPSET=kodiak --cfg=build_config_deploy_kodiak.xml --clean -
构建镜像:
cd <firmware-root>/<distro-clone-directory>/TZ.XF.5.29.1/trustzone_images/build/ms/ python build_all.py -b TZ.XF.5.0 CHIPSET=kodiak --cfg=build_config_deploy_kodiak.xml
- 编译器版本:LLVM 14.0.4
- Python 版本:Python 3.10
-
进入以下目录:
cd <firmware-root>/<distro-clone-directory>/AOP.HO.3.6/aop_proc/build/ -
清理构建:
./build_kodiak.sh -c -l <firmware-root>/llvm/14.0.4/ -
构建镜像:
./build_kodiak.sh -l <firmware-root>/llvm/14.0.4/
此步骤仅适用于
Qualcomm_Linux.SPF.2.0|AMSS|Standard|OEM|。- 编译器版本:Hexagon 8.4.10
- Python 版本:Python 3.8.2
-
Nanopb 集成(一次性设置):
cd <firmware-root>/<distro-clone-directory>/MPSS.HI.4.3.3.c6.2/modem_proc/ssc_api curl https://jpa.kapsi.fi/nanopb/download/nanopb-0.3.9.5-linux-x86.tar.gz -o nanopb-0.3.9.5-linux-x86.tar.gz cd <firmware-root>/<distro-clone-directory>/MPSS.HI.4.3.3.c6.2/modem_proc python ssc_api/build/config_nanopb_dependency.py -f nanopb-0.3.9.5-linux-x86 -
进入以下目录:
cd <firmware-root>/<distro-clone-directory>/MPSS.HI.4.3.3.c6.2/modem_proc/build/ms -
清理构建:
python build_variant.py kodiak.gen.prod --clean -
构建镜像:
python build_variant.py kodiak.gen.prod bparams=-k
此步骤仅适用于
Qualcomm_Linux.SPF.2.0|AP|Standard|OEM|。rm -rf <firmware-root>/<distro-clone-directory>/QCM6490.LE.2.0/common/build/ufs/bin/*
-
使用您编译的各个组件创建一个集成的固件
二进制文件:
cd <firmware-root>/<distro-clone-directory>/QCM6490.LE.2.0/common/build python build.py --imf -
如果在
<firmware-root>/<distro-clone-directory>/QCM6490.LE.2.0/common/build/ufs/bin目录中生成了以下 zip 文件,则表明固件预构建成功:QCM6490_bootbinaries.zipQCM6490_dspso.zipQCM6490_fw.zip
先决条件
-
确保当前使用的 shell 是
bash:该命令的预期输出应为echo $0bash。如果不是,请进入 bash shell。bash -
使用以下命令安装 libffi6 软件包。QAIC 编译器需要该软件包,
它用于从 IDL 文件生成头文件和
源文件:
curl -LO http://archive.ubuntu.com/ubuntu/pool/main/libf/libffi/libffi6_3.2.1-8_amd64.deb sudo dpkg -i libffi6_3.2.1-8_amd64.deb -
安装用于 AOP、Qualcomm® Trusted Execution Environment
(TEE) 和 boot 编译的 LLVM:
cd <firmware-root> mkdir llvm # Sign in to qsc-cli and activate the license qsc-cli login qsc-cli tool activate-license --name sdllvm_arm # LLVM requirement for boot compilation is 14.0.4 qsc-cli tool install --name sdllvm_arm --required-version 14.0.4 --path <firmware-root>/llvm/14.0.4 chmod -R 777 <firmware-root>/llvm/14.0.4 # LLVM requirement for the Qualcomm TEE compilation is 16.0.7 qsc-cli tool install --name sdllvm_arm --required-version 16.0.7 --path <firmware-root>/llvm/16.0.7 chmod -R 777 <firmware-root>/llvm/16.0.7 -
导出
SECTOOLS变量并编译固件构建 (<firmware-root>/<distro-clone-directory>是 顶层目录):export SECTOOLS=<firmware-root>/<distro-clone-directory>/QCS9100.LE.2.0/common/sectoolsv2/ext/Linux/sectools export SECTOOLS_DIR=<firmware-root>/<distro-clone-directory>/QCS9100.LE.2.0/common/sectoolsv2/ext/Linux -
安装并设置 Qualcomm® Hexagon™。将环境变量 HEXAGON_ROOT 设置为
Hexagon SDK 的安装路径。若要在使用
qsc-cli时更改安装路径,请参阅更改 Hexagon 工具安装路径。qsc-cli tool extract --name hexagon8.6 --required-version 8.6.05.2 export HEXAGON_ROOT=$HOME/Qualcomm/HEXAGON_Tools echo $HEXAGON_ROOT
- 编译器版本:Hexagon 8.6.05.2
- Python 版本:Python 3.8.2
-
安装设备树编译器:
sudo apt-get install device-tree-compiler export DTC_PATH=/usr/bin -
安装依赖项:
pip install ruamel.yaml==0.17.17 pip install dtschema==2021.10 pip install jsonschema==4.0.0 -
进入以下目录:
cd <firmware-root>/<distro-clone-directory>/DSP.AT.1.0.1/dsp_proc/build/ms -
清理构建:
python ./build_variant.py lemans.adsp.prod --clean python ./build_variant.py lemans.cdsp0.prod --clean python ./build_variant.py lemans.cdsp1.prod --clean python ./build_variant.py lemans.gpdsp0.prod --clean python ./build_variant.py lemans.gpdsp1.prod --clean -
构建镜像:
python ./build_variant.py lemans.adsp.prod && python ./build_variant.py lemans.cdsp0.prod && python ./build_variant.py lemans.cdsp1.prod && python ./build_variant.py lemans.gpdsp0.prod && python ./build_variant.py lemans.gpdsp1.prod
- 编译器版本:LLVM 版本必须更新为 14.0.4
export LLVM=<firmware-root>/llvm/14.0.4/ - Python 版本:Python 3.10
- libffi6 软件包
-
安装设备树编译器:
sudo apt-get install device-tree-compiler export DTC=/usr/bin -
进入以下目录:
cd <firmware-root>/<distro-clone-directory>/BOOT.MXF.1.0.c1/ -
安装依赖项:
python -m pip install -r boot_images/boot_tools/dtschema_tools/oss/requirements.txt pip install json-schema-for-humans -
清理构建:
python -u boot_images/boot_tools/buildex.py -t lemans,QcomToolsPkg -v LAA -r RELEASE --build_flags=cleanall -
构建镜像:
python -u boot_images/boot_tools/buildex.py -t lemans,QcomToolsPkg -v LAA -r RELEASE对于 debug 变体构建,请将RELEASE替换为DEBUG。
- 编译器版本:LLVM 16.0.7
- Python 版本:Python 3.10
-
安装 LLVM:
cd <firmware-root>/<distro-clone-directory>/TZ.XF.5.29.1/trustzone_images/build/ms/ vi build_config_deploy_lemans.xml # Edit all the occurrences of /pkg/qct/software/llvm/release/arm/16.0.7/ to <firmware-root>/llvm/16.0.7/ -
清理构建:
python build_all.py -b TZ.XF.5.0 CHIPSET=lemans --cfg=build_config_deploy_lemans.xml --clean -
构建镜像:
cd <firmware-root>/<distro-clone-directory>/TZ.XF.5.29.1/trustzone_images/build/ms/ python build_all.py -b TZ.XF.5.0 CHIPSET=lemans --cfg=build_config_deploy_lemans.xml
- 编译器版本:LLVM 14.0.4
- Python 版本:Python 3.10
-
进入以下目录:
cd <firmware-root>/<distro-clone-directory>/AOP.HO.3.6.1/aop_proc/build/ -
清理构建:
./build_lemansau.sh -c -l <firmware-root>/llvm/14.0.4/ -
构建镜像:
./build_lemansau.sh -l <firmware-root>/llvm/14.0.4/
-
使用您编译的各个组件创建一个集成的固件
二进制文件:
cd <firmware-root>/<distro-clone-directory>/QCS9100.LE.2.0/common/build python build.py --imf -
如果在
<firmware-root>/<distro-clone-directory>/QCS9100.LE.2.0/common/build/ufs/bin目录中生成了以下 zip 文件,则表明固件预构建 成功:QCS9100_bootbinaries.zipQCS9100_dspso.zipQCS9100_fw.zip
前提条件
-
确保当前工作 shell 为
bash:该命令的预期输出应为echo $0bash。如果不是,请进入 bash shell。bash -
使用以下命令安装 libffi6 软件包。QAIC 编译器需要该软件包,
该编译器用于从 IDL 文件生成头文件和
源文件。
curl -LO http://archive.ubuntu.com/ubuntu/pool/main/libf/libffi/libffi6_3.2.1-8_amd64.deb sudo dpkg -i libffi6_3.2.1-8_amd64.deb -
安装用于 AOP、Qualcomm® 可信执行环境
(TEE)和引导编译的 LLVM:
cd <firmware-root> mkdir llvm # Sign in to qsc-cli and activate the license qsc-cli login qsc-cli tool activate-license --name sdllvm_arm # LLVM requirement for boot compilation is 14.0.4 qsc-cli tool install --name sdllvm_arm --required-version 14.0.4 --path <firmware-root>/llvm/14.0.4 chmod -R 777 <firmware-root>/llvm/14.0.4 # LLVM requirement for the Qualcomm TEE compilation is 16.0.7 qsc-cli tool install --name sdllvm_arm --required-version 16.0.7 --path <firmware-root>/llvm/16.0.7 chmod -R 777 <firmware-root>/llvm/16.0.7 -
导出
SECTOOLS变量并编译固件构建 (<firmware-root>/<distro-clone-directory>为 顶层目录):export SECTOOLS=<firmware-root>/<distro-clone-directory>/QCS8300.LE.2.0/common/sectoolsv2/ext/Linux/sectools export SECTOOLS_DIR=<firmware-root>/<distro-clone-directory>/QCS8300.LE.2.0/common/sectoolsv2/ext/Linux -
安装并设置 Qualcomm® Hexagon™。将环境变量 HEXAGON_ROOT 设置为
Hexagon SDK 的安装路径。要在使用
qsc-cli时更改安装路径, 请参阅更改 Hexagon 工具安装路径。qsc-cli tool extract --name hexagon8.6 --required-version 8.6.05.2 qsc-cli tool extract --name hexagon8.7 --required-version 8.7.02.1 export HEXAGON_ROOT=$HOME/Qualcomm/HEXAGON_Tools echo $HEXAGON_ROOT
- 编译器版本:Hexagon 8.6.05.2 和 8.7.02.1
- Python 版本:Python 3.8.2
-
安装设备树编译器:
sudo apt-get install device-tree-compiler export DTC_PATH=/usr/bin -
安装依赖项:
pip install ruamel.yaml==0.17.17 pip install dtschema==2021.10 pip install jsonschema==4.0.0 -
进入以下目录:
cd <firmware-root>/<distro-clone-directory>/DSP.AT.1.0.1/dsp_proc/build/ms -
清理构建:
python ./build_variant.py lemans.adsp.prod --clean python ./build_variant.py monaco.cdsp0.prod --clean python ./build_variant.py lemans.gpdsp0.prod --clean -
构建镜像:
python ./build_variant.py lemans.adsp.prod && python ./build_variant.py monaco.cdsp0.prod && python ./build_variant.py lemans.gpdsp0.prod
- 编译器版本:LLVM 版本必须更新为 14.0.4
export LLVM=<firmware-root>/llvm/14.0.4/ - Python 版本:Python 3.10
- libffi6 软件包
-
安装设备树编译器:
sudo apt-get install device-tree-compiler export DTC=/usr/bin -
进入以下目录:
cd <firmware-root>/<distro-clone-directory>/BOOT.MXF.1.0.c1/ -
安装依赖项:
python -m pip install -r boot_images/boot_tools/dtschema_tools/oss/requirements.txt pip install json-schema-for-humans -
清理构建:
python -u boot_images/boot_tools/buildex.py -t monaco,QcomToolsPkg -v LAA -r RELEASE --build_flags=cleanall -
构建镜像:
python -u boot_images/boot_tools/buildex.py -t monaco,QcomToolsPkg -v LAA -r RELEASE对于调试(debug)变体构建,请将RELEASE替换为DEBUG。
- 编译器版本:LLVM 16.0.7
- Python 版本:Python 3.10
-
安装 LLVM:
cd <firmware-root>/<distro-clone-directory>/TZ.XF.5.29.1/trustzone_images/build/ms/ vi build_config_deploy_monaco.xml # Edit all the occurrences of /pkg/qct/software/llvm/release/arm/16.0.7/ to <firmware-root>/llvm/16.0.7/ -
清理构建:
python build_all.py -b TZ.XF.5.0 CHIPSET=monaco --cfg=build_config_deploy_monaco.xml --clean -
构建镜像:
cd <firmware-root>/<distro-clone-directory>/TZ.XF.5.29.1/trustzone_images/build/ms/ python build_all.py -b TZ.XF.5.0 CHIPSET=monaco --cfg=build_config_deploy_monaco.xml
- 编译器版本:LLVM 14.0.4
- Python 版本:Python 3.10
-
进入以下目录:
cd <firmware-root>/<distro-clone-directory>/AOP.HO.3.6.1/aop_proc/build/ -
清理构建:
./build_monaco.sh -c -l <firmware-root>/llvm/14.0.4/ -
构建镜像:
./build_monaco.sh -l <firmware-root>/llvm/14.0.4/
-
将您编译的各个组件组合成一个集成的固件
二进制文件:
cd <firmware-root>/<distro-clone-directory>/QCS8300.LE.2.0/common/build python build.py --imf -
如果在
<firmware-root>/<distro-clone-directory>/QCS8300.LE.2.0/common/build/ufs/bin目录中生成了以下 zip 文件,则表示固件预构建成功:QCS8300_bootbinaries.zipQCS8300_dspso.zipQCS8300_fw.zip
前提条件
-
确保当前工作 shell 为
bash:该命令的预期输出应为echo $0bash。如果不是,请进入 bash shell。bash -
使用以下命令安装 libffi6 软件包。QAIC 编译器需要该软件包,
该编译器用于从 IDL 文件生成头文件和
源文件。
curl -LO http://archive.ubuntu.com/ubuntu/pool/main/libf/libffi/libffi6_3.2.1-8_amd64.deb sudo dpkg -i libffi6_3.2.1-8_amd64.deb -
安装用于 AOP、Qualcomm® 可信执行环境(TEE)和引导编译的 LLVM:
cd <firmware-root> mkdir llvm # Sign in to qsc-cli and activate the license qsc-cli login qsc-cli tool activate-license --name sdllvm_arm # LLVM requirement for AOP is 3.9.3 mkdir -p /pkg/qct/software/llvm qsc-cli tool install --name sdllvm_arm --required-version 3.9.3 --path /pkg/qct/software/llvm/release/arm/3.9.3 chmod -R 777 /pkg/qct/software/llvm/release/arm/3.9.3 # LLVM requirement for boot compilation is 14.0.4 qsc-cli tool install --name sdllvm_arm --required-version 14.0.4 --path <firmware-root>/llvm/14.0.4 chmod -R 777 <firmware-root>/llvm/14.0.4 # LLVM requirement for Qualcomm TrustZone compilation is 16.0.7 qsc-cli tool install --name sdllvm_arm --required-version 16.0.7 --path <firmware-root>/llvm/16.0.7 chmod -R 777 <firmware-root>/llvm/16.0.7 -
导出
SECTOOLS变量并编译固件构建 (<firmware-root>/<distro-clone-directory>为顶层目录):export SECTOOLS=<firmware-root>/<distro-clone-directory>/QCS615.LE.2.0/common/sectoolsv2/ext/Linux/sectools export SECTOOLS_DIR=<firmware-root>/<distro-clone-directory>/QCS615.LE.2.0/common/sectoolsv2/ext/Linux -
安装并设置 Qualcomm® Hexagon™。将环境变量
HEXAGON_ROOT`` 设置为 Hexagon SDK 的安装路径。要在使用qsc-cli` 时更改安装路径, 请参阅更改 Hexagon 工具安装路径。qsc-cli tool extract --name hexagon8.2 --required-version 8.2.05.1 export HEXAGON_ROOT=$HOME/Qualcomm/HEXAGON_Tools echo $HEXAGON_ROOT
- 编译器版本:Hexagon 8.2.05
- Python 版本:Python 2.7.18
- libffi6 软件包
-
进入以下目录:
cd <firmware-root>/<distro-clone-directory>/CDSP.VT.2.2.c4 -
清理构建:
python cdsp_proc/build/build.py -c sm6150 -o clean -f CDSP -
构建镜像:
python cdsp_proc/build/build.py -c sm6150 -o all -f CDSP
- 编译器版本:Hexagon 8.2.05
- Python 版本:Python 2.7.18
- libffi6 软件包
-
Nanopb 集成(一次性设置):
cd <firmware-root>/<distro-clone-directory>/ADSP.VT.5.2.c6/adsp_proc/ssc_api curl https://jpa.kapsi.fi/nanopb/download/nanopb-0.3.9.5-linux-x86.tar.gz -o nanopb-0.3.9.5-linux-x86.tar.gz cd <firmware-root>/<distro-clone-directory>/ADSP.VT.5.2.c6/adsp_proc/ python ssc_api/build/config_nanopb_dependency.py -f nanopb-0.3.9.5-linux-x86 -
进入以下目录:
cd <firmware-root>/<distro-clone-directory>/ADSP.VT.5.2.c6 -
清理构建:
python adsp_proc/build/build.py -c sm6150 -o clean -f ADSP -
构建镜像:
python adsp_proc/build/build.py -c sm6150 -o all -f ADSP
- 编译器版本:LLVM 3.9.3
- Python 版本:Python 2.7.18
-
进入以下目录:
cd <firmware-root>/<distro-clone-directory>/AOP.HO.3.6.2/aop_proc/build/ -
清理构建:
./build_TalosAU.sh -c -
构建镜像:
./build_TalosAU.sh
-
编译器版本:LLVM 版本必须更新为 14.0.4
export LLVM=<firmware-root>/llvm/14.0.4/为避免构建错误,请确保命令末尾有一个 / - Python 版本:Python 3.10
-
安装设备树编译器:
sudo apt-get install device-tree-compiler export DTC=/usr/bin -
进入以下目录:
cd <firmware-root>/<distro-clone-directory>/BOOT.MXF.1.0.c1/ -
安装依赖项:
python -m pip install -r boot_images/boot_tools/dtschema_tools/oss/requirements.txt pip install json-schema-for-humans -
清理构建:
python -u boot_images/boot_tools/buildex.py -t talos,QcomToolsPkg -v LAA -r RELEASE --build_flags=cleanall -
构建镜像:
python -u boot_images/boot_tools/buildex.py -t talos,QcomToolsPkg -v LAA -r RELEASE对于调试(debug)变体构建,请将RELEASE替换为DEBUG。
- 编译器版本:LLVM 16.0.7
- Python 版本:Python 3.10
- 安装 LLVM:
cd <firmware-root>/<distro-clone-directory>/TZ.XF.5.29.1/trustzone_images/build/ms/ vi build_config_deploy_talos.xml # Edit all the occurrences of /pkg/qct/software/llvm/release/arm/16.0.7/ to <firmware-root>/llvm/16.0.7/ - 清理构建:
python build_all.py -b TZ.XF.5.0 CHIPSET=talos --cfg=build_config_deploy_talos.xml --clean - 构建镜像:
cd <firmware-root>/<distro-clone-directory>/TZ.XF.5.29.1/trustzone_images/build/ms/ python build_all.py -b TZ.XF.5.0 CHIPSET=talos --cfg=build_config_deploy_talos.xml
-
将您编译的各个组件组合成一个集成的固件
二进制文件:
cd <firmware-root>/<distro-clone-directory>/QCS615.LE.2.0/common/build python build.py --imf -
如果在
<firmware-root>/<distro-clone-directory>/QCS615.LE.2.0/common/build/common/bin目录中生成了以下 zip 文件,则表示固件预构建成功:QCS615_bootbinaries.zipQCS615_dspso.zipQCS615_fw.zip
先决条件
-
确保当前使用的 shell 是
bash:该命令的预期输出应为echo $0bash。如果不是,请进入 bash shell。bash -
使用以下命令安装 libffi6 软件包。QAIC 编译器需要该软件包,
它用于从 IDL 文件生成头文件和
源文件。
curl -LO http://archive.ubuntu.com/ubuntu/pool/main/libf/libffi/libffi6_3.2.1-8_amd64.deb sudo dpkg -i libffi6_3.2.1-8_amd64.deb -
安装用于 AOP、Qualcomm® Trusted Execution Environment
(TEE) 和 boot 编译的 LLVM:
cd <firmware-root> mkdir llvm # Sign in to qsc-cli and activate the license qsc-cli login qsc-cli tool activate-license --name sdllvm_arm # LLVM requirement for aDSP is 14.0.1 qsc-cli tool install --name sdllvm_arm --required-version 14.0.1 --path <firmware-root>/llvm/14.0.1 chmod -R 777 <firmware-root>/llvm/14.0.1 # LLVM requirement for the AOP is 14.0.0 qsc-cli tool install --name sdllvm_arm --required-version 14.0.0 --path <firmware-root>/llvm/14.0.0 chmod -R 777 <firmware-root>/llvm/14.0.0 # LLVM requirement for BOOT compilation is 16.0.2 qsc-cli tool install --name sdllvm_arm --required-version 14.0.0 --path <firmware-root>/llvm/16.0.2 chmod -R 777 <firmware-root>/llvm/16.0.2 # LLVM requirement for BOOT_UEFI and Qualcomm TEE (TZ_XF) compilation is 18.0.1 qsc-cli tool install --name sdllvm_arm --required-version 18.0.1 --path <firmware-root>/llvm/18.0.1 chmod -R 777 <firmware-root>/llvm/18.0.1 -
导出
SECTOOLS变量并编译固件构建 (<firmware-root>/<distro-clone-directory>是顶层目录):export SECTOOLS=<firmware-root>/<distro-clone-directory>/Hamoa_IOT.LE.2.0/common/sectoolsv2/ext/Linux/sectools export SECTOOLS_DIR=<firmware-root>/<distro-clone-directory>/Hamoa_IOT.LE.2.0/common/sectoolsv2/ext/Linux -
安装并设置 Qualcomm® Hexagon™ 处理器。将
环境变量 HEXAGON_ROOT 设置为 Hexagon SDK 的
安装路径。若要在使用
qsc-cli时更改安装路径,请参阅更改 Hexagon 工具安装路径。qsc-cli tool extract --name hexagon8.4 --required-version 8.6.06 export HEXAGON_ROOT=$HOME/Qualcomm/HEXAGON_Tools echo $HEXAGON_ROOT
- 编译器版本:Hexagon 8.6.06
- Python 版本:Python 3.8.2
- libffi6 软件包
- 检查 Hexagon 目录:
export HEXAGON_ROOT=$HOME/QUalcomm/HEXAGON_Tools echo $HEXAGON_ROOT - 安装设备树编译器:
sudo apt-get install device-tree-compiler export DTC=/usr/bin - Nanopb 集成(一次性设置):
cd <firmware-root>/<distro-clone-directory>/ADSP.HT.5.9/adsp_proc/qsh_api curl https://jpa.kapsi.fi/nanopb/download/nanopb-0.3.9.5-linux-x86.tar.gz -o nanopb-0.3.9.5-linux-x86.tar.gz cd <firmware-root>/<distro-clone-directory>/ADSP.HT.5.9/adsp_proc/ python qsh_api/build/config_nanopb_dependency.py -f nanopb-0.3.9.5-linux-x86 - 进入以下目录:
cd <firmware-root>/<distro-clone-directory>/ADSP.HT.5.9/adsp_proc/build/ms - 清理构建:
python3 ./build_variant.py hamoa.adsp.prod --clean && python3 ./build_variant.py hamoa.adsp.charger --clean - 构建镜像:
python3 ./build_variant.py hamoa.adsp.prod && python3 ./build_variant.py hamoa.adsp.charger
- 编译器版本:Hexagon 8.6.06
- Python 版本:Python 3.8.2
- libffi6 软件包
- 检查 Hexagon 目录:
export HEXAGON_ROOT=$HOME/QUalcomm/HEXAGON_Tools echo $HEXAGON_ROOT - 安装设备树编译器:
sudo apt-get install device-tree-compiler export DTC=/usr/bin - 进入以下目录:
cd <firmware-root>/<distro-clone-directory>/CDSP.HT.2.9.c1/cdsp_proc/build/ms - 清理构建:
python3 ./build_variant.py hamoa.cdsp.prod --clean - 构建镜像:
python3 ./build_variant.py hamoa.cdsp.prod
- 编译器版本:LLVM 版本必须更新为 16.0.2
export LLVM=<firmware-root>/llvm/16.0.2/ - Python 版本:Python 3.10.6
- libffi6 软件包
-
安装设备树编译器:
sudo apt-get install device-tree-compiler export DTC=/usr/bin -
进入以下目录:
cd <firmware-root>/<distro-clone-directory>/BOOT.MXF.2.4.2/ -
安装依赖项:
python -m pip install -r boot_images/boot_tools/dtschema_tools/oss/requirements.txt pip install json-schema-for-humans -
清理构建:
python3 boot_images/boot_tools/buildex.py -t Hamoa,QcomToolsPkg -r RELEASE -v LE --build_flags=cleanall -
构建镜像:
python3 boot_images/boot_tools/buildex.py -t Hamoa,QcomToolsPkg -r RELEASE -v LE对于 debug 变体构建,请将RELEASE替换为DEBUG。
- 编译器版本:LLVM 版本必须更新为 18.0.1
export LLVM=<firmware-root>/llvm/18.0.1/ - Python 版本:Python 3.10.6
- libffi6 软件包
-
安装设备树编译器:
sudo apt-get install device-tree-compiler export DTC=/usr/bin -
进入以下目录:
cd <firmware-root>/<distro-clone-directory>/BOOT.MXF_UEFI.2.5/ -
安装依赖项:
python -m pip install -r boot_images/boot_tools/dtschema_tools/oss/requirements.txt pip install json-schema-for-humans -
清理构建:
python3 boot_images/boot_tools/buildex.py -t Hamoa,QcomToolsPkg -r RELEASE -v LE --build_flags=cleanall -
构建镜像:
python3 boot_images/boot_tools/buildex.py -t Hamoa,QcomToolsPkg -r RELEASE -v LE对于 debug 变体构建,请将RELEASE替换为DEBUG。
- 编译器版本:LLVM 版本必须更新为 18.0.1
export LLVM=<firmware-root>/llvm/18.0.1/ - Python 版本:Python 3.10
- 导出
SECTOOLS变量:export SECTOOLS=<firmware-root>/<distro-clone-directory>/Hamoa_IOT.LE.2.0/ext/Linux/sectools export SECTOOLS_DIR=<firmware-root>/<distro-clone-directory>/Hamoa_IOT.LE.2.0/ext/Linux - 进入以下目录:
cd <firmware-root>/<distro-clone-directory>/TZ.XF.5.0/trustzone_images/build/ms - 清理构建:
python3 build_all.py -b TZ.XF.5.0 CHIPSET=hamoa --clean - 构建镜像:
python3 build_all.py -b TZ.XF.5.0 CHIPSET=hamoa
- 编译器版本:LLVM 版本必须更新为 14.0.0
export LLVM=<firmware-root>/llvm/14.0.0/ - Python 版本:Python 3.10
- 导出
SECTOOLS变量:export SECTOOLS=<firmware-root>/<distro-clone-directory>/Hamoa_IOT.LE.2.0/ext/Linux/sectools export SECTOOLS_DIR=<firmware-root>/<distro-clone-directory>/Hamoa_IOT.LE.2.0/ext/Linux - 进入以下目录:
cd <firmware-root>/<distro-clone-directory>/AOP.HO.5.2/ - 构建镜像:
./aop_proc/build/build_hamoa.sh
-
使用您编译的各个组件创建一个集成的固件
二进制文件:
cd <firmware-root>/<distro-clone-directory>/Hamoa_IOT.LE.2.0/common/build python build.py --imf -
如果在
<firmware-root>/<distro-clone-directory>/Hamoa_IOT.LE.2.0/common/build/ufs/bin目录中生成了以下 zip 文件,则表明固件预构建 成功:HAMOA_bootbinaries.zipHAMOA_fw.zip
先决条件
-
确保当前使用的 shell 是
bash:该命令的预期输出应为echo $0bash。如果不是,请进入 bash shell。bash -
使用以下命令安装 libffi6 软件包。QAIC 编译器需要该软件包,
它用于从 IDL 文件生成头文件和
源文件。
curl -LO http://archive.ubuntu.com/ubuntu/pool/main/libf/libffi/libffi6_3.2.1-8_amd64.deb sudo dpkg -i libffi6_3.2.1-8_amd64.deb -
安装用于 AOP、Qualcomm® Trusted Execution Environment
(TEE) 和 boot 编译的 LLVM:
cd <firmware-root> mkdir llvm # Sign in to qsc-cli and activate the license qsc-cli login qsc-cli tool activate-license --name sdllvm_arm # LLVM requirement for aDSP is 14.0.1 qsc-cli tool install --name sdllvm_arm --required-version 14.0.1 --path <firmware-root>/llvm/14.0.1 chmod -R 777 <firmware-root>/llvm/14.0.1 # LLVM requirement for the AOP is 14.0.0 qsc-cli tool install --name sdllvm_arm --required-version 14.0.0 --path <firmware-root>/llvm/14.0.0 chmod -R 777 <firmware-root>/llvm/14.0.0 # LLVM requirement for BOOT compilation is 16.0.2 qsc-cli tool install --name sdllvm_arm --required-version 14.0.0 --path <firmware-root>/llvm/16.0.2 chmod -R 777 <firmware-root>/llvm/16.0.2 # LLVM requirement for BOOT_UEFI and Qualcomm TEE (TZ_XF) compilation is 18.0.1 qsc-cli tool install --name sdllvm_arm --required-version 18.0.1 --path <firmware-root>/llvm/18.0.1 chmod -R 777 <firmware-root>/llvm/18.0.1 -
导出
SECTOOLS变量并编译固件构建 (<firmware-root>/<distro-clone-directory>是顶层目录):export SECTOOLS=<firmware-root>/<distro-clone-directory>/Purwa_IOT.LE.2.0/common/sectoolsv2/ext/Linux/sectools export SECTOOLS_DIR=<firmware-root>/<distro-clone-directory>/Purwa_IOT.LE.2.0/common/sectoolsv2/ext/Linux -
安装并设置 Qualcomm® Hexagon™ 处理器。将
环境变量 HEXAGON_ROOT 设置为 Hexagon SDK 的
安装路径。若要在使用
qsc-cli时更改安装路径,请参阅更改 Hexagon 工具安装路径。qsc-cli tool extract --name hexagon8.4 --required-version 8.6.06 export HEXAGON_ROOT=$HOME/Qualcomm/HEXAGON_Tools echo $HEXAGON_ROOT
- 编译器版本:Hexagon 8.6.06
- Python 版本:Python 3.8.2
- libffi6 软件包
- 检查 Hexagon 目录:
export HEXAGON_ROOT=$HOME/QUalcomm/HEXAGON_Tools echo $HEXAGON_ROOT - 安装设备树编译器:
sudo apt-get install device-tree-compiler export DTC=/usr/bin - Nanopb 集成(一次性设置):
cd <firmware-root>/<distro-clone-directory>/ADSP.HT.5.9/adsp_proc/qsh_api curl https://jpa.kapsi.fi/nanopb/download/nanopb-0.3.9.5-linux-x86.tar.gz -o nanopb-0.3.9.5-linux-x86.tar.gz cd <firmware-root>/<distro-clone-directory>/ADSP.HT.5.9/adsp_proc/ python qsh_api/build/config_nanopb_dependency.py -f nanopb-0.3.9.5-linux-x86 - 进入以下目录:
cd <firmware-root>/<distro-clone-directory>/ADSP.HT.5.9/adsp_proc/build/ms - 清理构建:
python3 ./build_variant.py hamoa.adsp.prod --clean && python3 ./build_variant.py hamoa.adsp.charger --clean - 构建镜像:
python3 ./build_variant.py hamoa.adsp.prod && python3 ./build_variant.py hamoa.adsp.charger
- 编译器版本:Hexagon 8.6.06
- Python 版本:Python 3.8.2
- libffi6 软件包
- 检查 Hexagon 目录:
export HEXAGON_ROOT=$HOME/QUalcomm/HEXAGON_Tools echo $HEXAGON_ROOT - 安装设备树编译器:
sudo apt-get install device-tree-compiler export DTC=/usr/bin - 进入以下目录:
cd <firmware-root>/<distro-clone-directory>/CDSP.HT.2.9.c1/cdsp_proc/build/ms - 清理构建:
python3 ./build_variant.py hamoa.cdsp.prod --clean - 构建镜像:
python3 ./build_variant.py hamoa.cdsp.prod
- 编译器版本:LLVM 版本必须更新为 16.0.2
export LLVM=<firmware-root>/llvm/16.0.2/ - Python 版本:Python 3.10.6
- libffi6 软件包
-
安装设备树编译器:
sudo apt-get install device-tree-compiler export DTC=/usr/bin -
进入以下目录:
cd <firmware-root>/<distro-clone-directory>/BOOT.MXF.2.4.2/ -
安装依赖项:
python -m pip install -r boot_images/boot_tools/dtschema_tools/oss/requirements.txt pip install json-schema-for-humans -
清理构建:
python3 boot_images/boot_tools/buildex.py -t Hamoa,QcomToolsPkg -r RELEASE -v LE --build_flags=cleanall -
构建镜像:
python3 boot_images/boot_tools/buildex.py -t Hamoa,QcomToolsPkg -r RELEASE -v LE对于 debug 变体构建,请将RELEASE替换为DEBUG。
- 编译器版本:LLVM 版本必须更新为 18.0.1
export LLVM=<firmware-root>/llvm/18.0.1/ - Python 版本:Python 3.10.6
- libffi6 软件包
-
安装设备树编译器:
sudo apt-get install device-tree-compiler export DTC=/usr/bin -
进入以下目录:
cd <firmware-root>/<distro-clone-directory>/BOOT.MXF_UEFI.2.5/ -
安装依赖项:
python -m pip install -r boot_images/boot_tools/dtschema_tools/oss/requirements.txt pip install json-schema-for-humans -
清理构建:
python3 boot_images/boot_tools/buildex.py -t Hamoa,QcomToolsPkg -r RELEASE -v LE --build_flags=cleanall -
构建镜像:
python3 boot_images/boot_tools/buildex.py -t Hamoa,QcomToolsPkg -r RELEASE -v LE对于 debug 变体构建,请将RELEASE替换为DEBUG。
- 编译器版本:LLVM 版本必须更新为 18.0.1
export LLVM=<firmware-root>/llvm/18.0.1/ - Python 版本:Python 3.10
- 导出
SECTOOLS变量:export SECTOOLS=<firmware-root>/<distro-clone-directory>/Purwa.LE.2.0/ext/Linux/sectools export SECTOOLS_DIR=<firmware-root>/<distro-clone-directory>/Purwa.LE.2.0/ext/Linux - 进入以下目录:
cd <firmware-root>/<distro-clone-directory>/TZ.XF.5.0/trustzone_images/build/ms - 清理构建:
python3 build_all.py -b TZ.XF.5.0 CHIPSET=hamoa --clean - 构建镜像:
python3 build_all.py -b TZ.XF.5.0 CHIPSET=hamoa
- 编译器版本:LLVM 版本必须更新为 14.0.0
export LLVM=<firmware-root>/llvm/14.0.0/ - Python 版本:Python 3.10
- 导出
SECTOOLS变量:export SECTOOLS=<firmware-root>/<distro-clone-directory>/Purwa.LE.2.0/ext/Linux/sectools export SECTOOLS_DIR=<firmware-root>/<distro-clone-directory>/Purwa.LE.2.0/ext/Linux - 进入以下目录:
cd <firmware-root>/<distro-clone-directory>/AOP.HO.5.2/ - 构建镜像:
./aop_proc/build/build_hamoa.sh
-
使用您编译的各个组件创建一个集成的固件
二进制文件:
cd <firmware-root>/<distro-clone-directory>/Purwa.LE.2.0/common/build python build.py --imf -
如果在
<firmware-root>/<distro-clone-directory>/Purwa.LE.2.0/common/build/ufs/bin目录中生成了以下 zip 文件,则表明固件预构建 成功:HAMOA_bootbinaries.zipHAMOA_fw.zip
前置条件
-
确保当前 shell 为
bash:命令的预期输出应为echo $0bash。如果不是,请进入 bash shell。bash -
使用以下命令安装 libffi6 软件包。QAIC 编译器需要此软件包,用于从 IDL
文件生成头文件和源文件。
curl -LO http://archive.ubuntu.com/ubuntu/pool/main/libf/libffi/libffi6_3.2.1-8_amd64.deb sudo dpkg -i libffi6_3.2.1-8_amd64.deb -
为 RPM、Qualcomm® 可信执行环境 (TEE) 和 boot 编译安装 LLVM:
cd <firmware-root> mkdir llvm # 登录 qsc-cli 并激活许可证 qsc-cli login qsc-cli tool activate-license --name sdllvm_arm # BOOT.MXF.1.0.c1 所需的 LLVM qsc-cli tool install --name sdllvm_arm --required-version 14.0.4 --path <firmware-root>/llvm/14.0.4 chmod -R 777 <firmware-root>/llvm/14.0.4 # BOOT.XF.4.1.4 所需的 LLVM qsc-cli tool install --name sdllvm_arm --required-version 4.0.2 --path <firmware-root>/llvm/4.0.2 chmod -R 777 <firmware-root>/llvm/4.0.2 # RPM 所需的 LLVM qsc-cli tool install --name sdllvm_arm --required-version 3.9.2 --path <firmware-root>/llvm/3.9.2 chmod -R 777 <firmware-root>/llvm/3.9.2 # Qualcomm TEE 编译所需的 LLVM qsc-cli tool install --name sdllvm_arm --required-version 18.0.1 --path <firmware-root>/llvm/18.0.1 chmod -R 777 <firmware-root>/llvm/18.0.1 -
导出
SECTOOLS变量并编译固件构建 (<firmware-root>/<distro-clone-directory>是顶级目录):export SECTOOLS=<firmware-root>/<distro-clone-directory>/CQ2390.LE.1.0/common/sectoolsv2/ext/Linux/sectools export SECTOOLS_DIR=<firmware-root>/<distro-clone-directory>/CQ2390.LE.1.0/common/sectoolsv2/ext/Linux -
安装并设置 Qualcomm® Hexagon™ 处理器。将
环境变量
HEXAGON_ROOT设置为 Hexagon SDK 的安装路径。要在使用qsc-cli时更改安装路径,请参阅 更改 Hexagon 工具安装路径。qsc-cli tool extract --name hexagon8.6 --required-version 8.6.04.1 qsc-cli tool extract --name hexagon8.7 --required-version 8.7.11.1 qsc-cli tool extract --name hexagon8.2 --required-version 8.2.05.1 export HEXAGON_ROOT=$HOME/Qualcomm/HEXAGON_Tools echo $HEXAGON_ROOT
- 编译器版本:LLVM 14.0.4
- Python 版本:Python 3.10.6
- libffi6 软件包
-
设置 LLVM 环境变量:
export LLVM=<firmware-root>/llvm/14.0.4/ -
安装设备树编译器:
sudo apt-get install device-tree-compiler export DTC=/usr/bin -
进入以下目录:
cd <firmware-root>/<distro-clone-directory>/BOOT.MXF.1.0.c1/ -
清理构建:
python boot_images/boot_tools/buildex.py -t Shikra -r RELEASE -v LE --build_flags=cleanall -
构建镜像:
python boot_images/boot_tools/buildex.py -t Shikra -r RELEASE -v LE
- 编译器版本:LLVM 4.0.2
- Python 版本:Python 3.10.6
-
设置 LLVM 环境变量:
export LLVM=<firmware-root>/llvm/4.0.2/ -
安装设备树编译器:
sudo apt-get install device-tree-compiler export DTC=/usr/bin -
进入以下目录:
cd <firmware-root>/<distro-clone-directory>/BOOT.XF.4.1.4/ -
清理构建:
python3 -u boot_images/QcomPkg/buildex.py --variant LE -t ShikraPkg,QcomToolsPkg --build_flags=cleanall -
构建镜像:
python3 -u boot_images/QcomPkg/buildex.py --variant LE -t ShikraPkg,QcomToolsPkg
- 编译器版本:LLVM 3.9.2
- Python 版本:Python 3.10.6
-
设置 LLVM 环境变量:
export LLVM=<firmware-root>/llvm/3.9.2/ -
进入以下目录:
cd <firmware-root>/<distro-clone-directory>/RPM.BF.1.16/rpm_proc/build -
清理构建:
./build_shikra.sh --clean -
构建镜像:
./build_shikra.sh
- 编译器版本:LLVM 18.0.1
- Python 版本:Python 3.10.6
-
设置 LLVM 环境变量:
export LLVM=<firmware-root>/llvm/18.0.1/ -
进入以下目录:
cd <firmware-root>/<distro-clone-directory>/TZ.XF.5.36/trustzone_images/build/ms -
清理构建:
python build_all.py -b TZ.XF.5.0 CHIPSET=shikra --clean -
构建镜像:
python build_all.py -b TZ.XF.5.0 CHIPSET=shikra
- Python 版本:Python 3.12.10
-
进入以下目录并激活 Python 3.12.10:
cd <firmware-root>/<distro-clone-directory>/LPAICP.FW.1.2/wasp_proc/build/ms pyenv local 3.12.10 python --version -
安装所需的系统软件包:
sudo apt-get update sudo apt-get install cmake ninja-build -
安装所需的 Python 软件包:
pip install west pip install jsonschema pip install pyelftools pip install pyfatfs python -m pip install "setuptools<=68" -
清理构建:
python ./build_variant.py shikra.lpaicp.prod --clean -
构建镜像:
python ./build_variant.py shikra.lpaicp.prod
- 编译器版本:Hexagon 8.6.04 和 Hexagon 8.2.05
- Python 版本:Python 3.12.7 或更高版本
-
进入以下目录并激活 Python 3.12.10:
cd <firmware-root>/<distro-clone-directory>/CDSP.VT.2.4.3/cdsp_proc/build/ms pyenv local 3.12.10 -
清理构建:
python ./build_variant.py shikra.cdsp.prod --clean -
构建镜像:
python ./build_variant.py shikra.cdsp.prod
-
使用已编译的各个组件创建集成固件二进制文件:
cd <firmware-root>/<distro-clone-directory>/CQ2390.LE.1.0/common/build python build.py --imf -
如果在
<firmware-root>/<distro-clone-directory>/CQ2390.LE.1.0/common/build/bin目录下生成了以下 zip 文件,则表示固件预构建成功:Shikra_bootbinaries.zipShikra_fw.zip
构建 BSP 镜像
本节介绍如何使用 meta-qcom-extras 层将固件二进制文件和其他源代码 组件集成到完整的 BSP 镜像中。BSP 镜像构建将上一步中编译好的固件与 Yocto 层栈相结合,生成一个包含所有必需 二进制文件的可刷写镜像。-
下载 Qualcomm 的 Yocto 层
meta-qcom-extras。有关最新的<meta-qcom-extras-release-tag>,请参阅配置参数。git clone https://qpm-git.qualcomm.com/home2/git/component-revision-history/qualcomm-linux/meta-qcom-extras.git -b <meta-qcom-extras-release-tag> --depth 1
-
导出
NETRC_FILE参数,以确保~/.netrc凭据在kas环境中 可见:export NETRC_FILE=~/.netrc -
设置该层的对外许可证及其校验和。层中的每个 recipe 都需要
CUST_LICENSE和CUST_LIC_CHKSUM。- 客户必须在 recipes 中指定合适的对外许可证,才能构建 专有源代码。
- 客户应咨询自己的法务团队,以获取有关对外许可决策的指导。
- 所选的对外许可证必须与 PKLA 兼容。
export CUST_LICENSE="<CUST_LICENSE>" export CUST_LIC_CHKSUM="<CUST_LIC_CHKSUM>" -
以下值与源代码仓库中已存在的占位 LICENSE 文件相匹配。可将其用于
内部构建和评估,而无需替换任何许可证文件。
请勿在生产构建中使用这些值。对于任何部署,请定义您自己的许可证
值。
变量 值 CUST_LICENSELICENSE.qcom-2CUST_LIC_CHKSUM165287851294f2fb8ac8cbc5e24b02b0 -
在构建之前更新源代码仓库中的许可证文件。
meta-qcom-extras使用的所有源代码默认都包含一个占位 LICENSE 文件。Recipes 会在构建时根据此文件校验CUST_LICENSE,因此必须 将其替换为您选择的对外许可证。 上游仓库无法直接修改。请将每个仓库镜像到您自己拥有的本地或远程 服务器上,替换占位 LICENSE 文件,然后更新受影响 recipes 中的SRC_URI变量,以指向新的 URI。
-
将
FWZIP_PATH设置为包含固件 ZIP 文件的目录,以便在构建中包含 本地编译的固件 zip 路径。export FWZIP_PATH="<FWZIP_PATH>" -
设置调制解调器专用许可证及其校验和。仅在构建调制解调器固件时才需要
CUST_MDM_LICENSE和CUST_MDM_LIC_CHKSUM。export CUST_MDM_LICENSE="<CUST_MDM_LICENSE>" export CUST_MDM_LIC_CHKSUM="<CUST_MDM_LIC_CHKSUM>" -
以下值与源代码仓库中已存在的占位 LICENSE 文件相匹配。可将其用于
内部构建和评估,而无需替换任何许可证文件。
请勿在生产构建中使用这些值。对于任何部署,请定义您自己的许可证
值。
变量 值 CUST_MDM_LICENSEModemreadme.txtCUST_MDM_LIC_CHKSUMbcd23be15c15909fe9de30ec32af0f89 -
firmware-qcom-selective.inc在解析时应用以下规则:- 如果未设置
FWZIP_PATH或FWZIP_NAME,则该 recipe 将被静默跳过。 - 如果两者均已设置但 ZIP 文件缺失,构建将因致命错误而失败。
- 如果没有
PREFERRED_RPROVIDER指向该 recipe,则该 recipe 将被静默跳过。
- 如果未设置
-
编辑
meta-qcom-extras/ci/providers.yml,添加所需的FWZIP_NAME赋值,以在镜像编译期间启用 recipe。firmware-qcs9100: | FWZIP_NAME:pn-firmware-qcs9100 = "QCS9100_dsp" firmware-qcs9100-bootbins: | FWZIP_NAME:pn-firmware-qcs9100-bootbins = "QCS9100_bootbinaries"firmware-qcs8300: | FWZIP_NAME:pn-firmware-qcs8300 = "QCS8300_dsp" firmware-qcs8300-bootbins: | FWZIP_NAME:pn-firmware-qcs8300-bootbins = "QCS8300_bootbinaries"firmware-qcs6490-adsp: | FWZIP_NAME:pn-firmware-qcs6490-adsp = "QCM6490_adsp" firmware-qcs6490-cdsp: | FWZIP_NAME:pn-firmware-qcs6490-cdsp = "QCM6490_cdsp" firmware-qcs6490-modem: | FWZIP_NAME:pn-firmware-qcs6490-modem = "QCM6490_modem" firmware-qcs6490-bootbins: | FWZIP_NAME:pn-firmware-qcs6490-bootbins = "QCM6490_bootbinaries"firmware-qcs615-adsp: | FWZIP_NAME:pn-firmware-qcs615-adsp = "QCS615_adsp" firmware-qcs615-cdsp: | FWZIP_NAME:pn-firmware-qcs615-cdsp = "QCS615_cdsp" firmware-qcs615-bootbins: | FWZIP_NAME:pn-firmware-qcs615-bootbins = "QCS615_bootbinaries"firmware-hamoa-adsp: | FWZIP_NAME:pn-firmware-hamoa-adsp = "IQX7181_adsp" PREFERRED_RPROVIDER_linux-firmware-qcom-x1e80100-audio = "firmware-hamoa-adsp" PREFERRED_RPROVIDER_hexagon-dsp-binaries-qcom-hamoa-iot-evk-adsp = "firmware-hamoa-adsp" firmware-hamoa-cdsp: | FWZIP_NAME:pn-firmware-hamoa-cdsp = "IQX7181_cdsp" PREFERRED_RPROVIDER_linux-firmware-qcom-x1e80100-compute = "firmware-hamoa-cdsp" PREFERRED_RPROVIDER_hexagon-dsp-binaries-qcom-hamoa-iot-evk-cdsp = "firmware-hamoa-cdsp" firmware-hamoa-purwa-bootbins: | FWZIP_NAME:pn-firmware-hamoa-purwa-bootbins = "HAMOA_bootbinaries" PREFERRED_PROVIDER_firmware-qcom-boot-iq-x7181 = "firmware-hamoa-purwa-bootbins"firmware-purwa-adsp: | FWZIP_NAME:pn-firmware-purwa-adsp = "IQX5121_adsp" PREFERRED_RPROVIDER_linux-firmware-qcom-x1p42100-audio = "firmware-purwa-adsp" PREFERRED_RPROVIDER_hexagon-dsp-binaries-qcom-purwa-iot-evk-adsp = "firmware-purwa-adsp" firmware-purwa-cdsp: | FWZIP_NAME:pn-firmware-purwa-cdsp = "IQX5121_cdsp" PREFERRED_RPROVIDER_linux-firmware-qcom-x1p42100-compute = "firmware-purwa-cdsp" PREFERRED_RPROVIDER_hexagon-dsp-binaries-qcom-purwa-iot-evk-cdsp = "firmware-purwa-cdsp" firmware-hamoa-purwa-bootbins: | FWZIP_NAME:pn-firmware-hamoa-purwa-bootbins = "HAMOA_bootbinaries" PREFERRED_PROVIDER_firmware-qcom-boot-iq-x7181 = "firmware-hamoa-purwa-bootbins"firmware-shikra-cdsp: | PREFERRED_RPROVIDER_linux-firmware-qcom-shikra-compute:shikra-evk = "firmware-shikra-cdsp" PREFERRED_RPROVIDER_hexagon-dsp-binaries-qcom-shikra-cqm-evk-cdsp:shikra-evk = "firmware-shikra-cdsp" PREFERRED_RPROVIDER_hexagon-dsp-binaries-qcom-shikra-cqs-evk-cdsp:shikra-evk = "firmware-shikra-cdsp" PREFERRED_RPROVIDER_hexagon-dsp-binaries-qcom-shikra-iqs-evk-cdsp:shikra-evk = "firmware-shikra-cdsp" firmware-shikra-lpaicp: | PREFERRED_RPROVIDER_linux-firmware-qcom-shikra-audio:shikra-evk = "firmware-shikra-lpaicp" firmware-shikra-bootbins: | PREFERRED_PROVIDER_firmware-qcom-boot-shikra:shikra-evk = "firmware-shikra-bootbins" -
在构建之前更新固件 ZIP 中的许可证文件。
meta-qcom-extras使用的所有 ZIP 默认都包含一个占位 LICENSE 文件。Recipes 会在构建时根据此文件校验CUST_LICENSE,因此必须 将其替换为您选择的对外许可证。
-
运行 setup 脚本,将这些参数应用到构建环境中。
meta-qcom-extras/setup_extras_config.sh -
使用
kas构建软件镜像。您可以根据机器和发行版 的组合来定义构建目标。kas build meta-qcom-extras/ci/iq-9075-evk.yml:meta-qcom-extras/ci/qcom-distro.yml:meta-qcom-extras/ci/performance.ymlkas build meta-qcom-extras/ci/iq-8275-evk.yml:meta-qcom-extras/ci/qcom-distro.yml:meta-qcom-extras/ci/performance.ymlkas build meta-qcom-extras/ci/iq-615-evk.yml:meta-qcom-extras/ci/qcom-distro.yml:meta-qcom-extras/ci/performance.ymlkas build meta-qcom-extras/ci/rb3gen2-core-kit.yml:meta-qcom-extras/ci/qcom-distro.yml:meta-qcom-extras/ci/performance.ymlkas build meta-qcom-extras/ci/shikra-evk.yml:meta-qcom-extras/ci/qcom-distro.yml:meta-qcom-extras/ci/performance.yml

