# GitHub 工作流程（固件和附加组件）

Note

此信息仅适用于授权用户。要升级您的访问权限，请转到 [http://www.qualcomm.com/support/working-with-qualcomm](http://www.qualcomm.com/support/working-with-qualcomm)。

使用此信息构建各种 Qualcomm Linux Yocto 层，包括 `meta-qcom-hwe`、 `meta-qcom-extras`、 `meta-qcom-qim-product-sdk`、
以及 `meta-qcom-robotics-sdk` 的层，这些层使用选择性的专有源代码文件和二进制文件/库。

## 主机要求

> 
> 
> | 配置 | 工具 | 权限 |
> | --- | --- | --- |
> | x86 计算机 | Git 1.8.3.1 或更高版本 | 运行一些命令需要 `sudo` 权限 |
> | 四核 CPU，例如 3.4 GHz 的 Intel i7-2600<br>（同等或更好） | Tar 1.28 或更高版本 | 运行一些命令需要 `sudo` 权限 |
> | 300 GB 可用磁盘空间（swap分区 &gt; 32 GB） | Python 3.10.2 或更高版本 | 运行一些命令需要 `sudo` 权限 |
> | 16 GB RAM | GCC 7.5 或更高版本 | 运行一些命令需要 `sudo` 权限 |
> | Ubuntu 22.04 | GNU Make 4.0 或更高版本 | 运行一些命令需要 `sudo` 权限 |
> |  |  |  |
> |  |  |  |
> |  |  |  |
> |  |  |  |

## 安装 QSC CLI

1. 安装 curl（如果尚未安装）：

sudo apt install curl
        Copy to clipboard
2. 下载 Debian 软件包： `qsc-cli`

cd <workspace_path>
        curl -L https://softwarecenter.qualcomm.com/api/download/software/qsc/linux/latest.deb -o qsc_installer.deb
        Copy to clipboard
3. 安装 `qsc-cli` Debian 软件包：

sudo dpkg -i qsc_installer.deb
        Copy to clipboard
4. 登录 `qsc-cli`：

qsc-cli login -u <username>
        Copy to clipboard

Note

有关详细信息，请参阅 [如何同步](https://docs.qualcomm.com/doc/80-70015-254Y/topic/how_to.html#howto-sync) 中与 `qsc-cli` 相关的主题。

## Ubuntu 主机配置

必须设置 Ubuntu 主机，以确保安装并配置所需的软件工具以供使用。

1. 安装以下软件包：

sudo apt update
        sudo apt install repo gawk wget git diffstat unzip texinfo gcc build-essential chrpath socat cpio python3 python3-pip python3-pexpect xz-utils debianutils iputils-ping python3-git python3-jinja2 libegl1-mesa libsdl1.2-dev pylint xterm python3-subunit mesa-common-dev zstd liblz4-tool locales tar python-is-python3 file libxml-opml-simplegen-perl vim whiptail
        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
        Copy to clipboard
2. 将带有 PAT 的 Qualcomm 登录 ID 添加到主目录中的 `~/.netrc` 文件：

# 登录 qsc-cli 生成 PAT
        qsc-cli login -u <username>
        # 执行以下命令生成 PAT
        qsc-cli pat --get
        # 此命令给出的输出如下注所示
        # 此输出的最后一行是令牌，可用于访问
        # Qualcomm 专有代码库。此令牌将在两周后过期。
        Copy to clipboard

Note

[user@hostname](mailto:user%40hostname):/local/mnt/workspace$ qsc-cli pat –get

[Info]: 启动 qsc-cli 版本 0.0.0.9

**5LThNlklb55mMVLB5C2KqUGU2jCF**
3. 使用您喜欢的文本编辑器编辑 `~/.netrc` 文件并添加以下条目：

Note

如果 `~/.netrc` 文件不存在，请创建该文件。

machine chipmaster2.qti.qualcomm.com
        login <your Qualcomm login id>
        password <your PAT token>
        
        machine qpm-git.qualcomm.com
        login <your Qualcomm login id>
        password <your PAT token>
        Copy to clipboard
4. 设置语言区域（如果尚未设置）：

sudo locale-gen en_US.UTF-8
        sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8
        export LC_ALL=en_US.UTF-8
        export LANG=en_US.UTF-8
        Copy to clipboard
5. 更新 git 配置：

# 检查你的身份是否在 .gitconfig 中配置
        git config --get user.email
        git config --get user.name
        
        # 如果您没有在 .gitconfig 中设置账号身份，请执行以下命令
        git config --global user.email <Your email ID>
        git config --global user.name <"Your Name">
        
        # 控制台输出添加以下 UI 颜色选项（可选）
        git config --global color.ui auto
        
        # 添加以下 git 配置，获取大容量仓库，避免连接不可靠
        git config --global http.postBuffer 1048576000
        git config --global http.maxRequestBuffer 1048576000
        git config --global http.lowSpeedLimit 0
        git config --global http.lowSpeedTime 999999
        
        # 添加以下 git 配置，以跟踪来自 http-alternates 文件或 alternates 的远程重定向
        git config --global http.https://chipmaster2.qti.qualcomm.com.followRedirects true
        git config --global http.https://qpm-git.qualcomm.com.followRedirects true
        Copy to clipboard
6. 安装 Python 3.10.2：

Note

如果您已有 Python 3.10.2 或更高版本，请跳过以下说明。

python --版本
        # 下载到您选择的目录中
        wget https://www.python.org/ftp/python/3.10.2/Python-3.10.2.tgz
        tar -xvf Python-3.10.2.tgz
        cd Python-3.10.2
        # 如果需要访问 /opt，请使用 sudo
        ./configure --prefix=/opt/python3 --enable-optimizations
        make
        make install
        ln -s /opt/python3/bin/python3 /opt/python3/bin/python
        export PATH=/opt/python3/bin：$PATH
        export PYTHONPATH=/opt/python3/lib：$PYTHONPATH
        Copy to clipboard

## 使用固件源代码编译

### 同步固件

下表介绍了 Qualcomm Yocto 层和发布标签：

| 访问级别 | Yocto layer | 发布标签 | 示例 |
| --- | --- | --- | --- |
| 社区开发者（未注册） | `meta-qcom-hwe` | manifest release tag | qcom-6.6.38-QLI.1.2-Ver.1.1.xml |
| 社区开发者（未注册） | `meta-qcom-qim-product-sdk` | manifest release tag | qcom-6.6.38-QLI.1.2-Ver.1.1\_qim-product-sdk-1.1.2.xml |
| 社区开发者（未注册） | `meta-qcom-robotics-sdk` | manifest release tag | qcom-6.6.38-QLI.1.2-Ver.1.1\_robotics-product-sdk-1.1.xml |
| 具有授权访问权限的许可开发者 | `meta-qcom-extras` | meta-qcom-extras 发布标签 | r1.0\_00049.0 |
| 请参阅 [Build与对应的访问级别](https://docs.qualcomm.com/doc/80-70015-254Y/topic/build_addn_info.html#build-mapping-access-levels) | 不适用 | 固件发布标签 | r1.0\_00049.0 |
|  |  |  |  |
|  |  |  |  |

下表描述了可根据需要和授权下载的固件发行版：

| **访问级别** | **发行版** | Yocto layer |
| --- | --- | --- |
| 具有授权访问权限的许可开发者 | BSP Build：High-level OS 和固件（仅限 GPS）源代码<br><br><br>`Qualcomm_Linux.SPF.1.0|AP|Standard|OEM|NoModem` | `meta-qcom`<br><br><br>`meta-qcom-hwe`<br><br><br>`meta-qcom-distro`<br><br><br>`meta-qcom-extras` |
| 具有授权访问权限的许可开发者 | BSP Build + QIMP SDK<br><br><br><br>> <br>> <br>> `Qualcomm_Linux.SPF.1.0|AP|Standard|OEM|NM_QIMPSDK` | `meta-qcom`<br><br><br>`meta-qcom-hwe`<br><br><br>`meta-qcom-distro`<br><br><br>`meta-qcom-extras`<br><br><br>`meta-qcom-qim-product-sdk` |
| 具有授权访问权限的许可开发者 | BSP Build + QIMP SDK + QIRP SDK<br><br><br><br>> <br>> <br>> `Qualcomm_Linux.SPF.1.0|AP|Standard|OEM|NM_QIRPSDK` | `meta-qcom`<br><br><br>`meta-qcom-hwe`<br><br><br>`meta-qcom-distro`<br><br><br>`meta-qcom-extras`<br><br><br>`meta-qcom-robotics-extras`<br><br><br>`meta-ros`<br><br><br>`meta-qcom-robotics`<br><br><br>`meta-qcom-robotics-distro`<br><br><br>`meta-qcom-robotics-sdk`<br><br><br>`meta-qcom-qim-product-sdk` |
| 许可开发者（联系 Qualcomm 访问） | BSP Build：High-level OS 和固件（仅限 GPS）源代码<br><br><br>`Qualcomm_Linux.SPF.1.0|AP|Standard|OEM|` | `meta-qcom`<br><br><br>`meta-qcom-hwe`<br><br><br>`meta-qcom-distro`<br><br><br>`meta-qcom-extras` |
| 许可开发者（联系 Qualcomm 访问） | BSP Build + QIMP SDK（仅限 GPS）<br><br><br><br>> <br>> <br>> `Qualcomm_Linux.SPF.1.0|AP|Standard|OEM|QIMPSDK` | `meta-qcom`<br><br><br>`meta-qcom-hwe`<br><br><br>`meta-qcom-distro`<br><br><br>`meta-qcom-extras`<br><br><br>`meta-qcom-robotics-extras`<br><br><br>`meta-qcom-qim-product-sdk` |
| 许可开发者（联系 Qualcomm 访问） | BSP Build：High-level OS 和固件（GPS 和 modem）源代码<br><br><br><br>> <br>> <br>> `Qualcomm_Linux.SPF.1.0|AMSS|Standard|OEM|` | `meta-qcom`<br><br><br>`meta-qcom-hwe`<br><br><br>`meta-qcom-distro`<br><br><br>`meta-qcom-extras` |
| 许可开发者（联系 Qualcomm 访问） | BSP Build + QIMP SDK（GPS 和调制解调器）<br><br><br><br>> <br>> <br>> `Qualcomm_Linux.SPF.1.0|AMSS|Standard|OEM|QIMPSDK` | `meta-qcom`<br><br><br>`meta-qcom-hwe`<br><br><br>`meta-qcom-distro`<br><br><br>`meta-qcom-extras`<br><br><br>`meta-qcom-qim-product-sdk` |
|  |  |  |
|  |  |  |
|  |  |  |

Note

有关 Yocto 层的更多信息，请参阅 [Qualcomm Linux 元数据层和说明](https://docs.qualcomm.com/bundle/publicresource/topics/80-70015-27/platform_software_features.html#qualcomm-linux-metadata-layers-overview)。

Mapping of firmware distributions and git repositories

| 固件发行版本 | Git 命令 | 在 git clone 上同步固件的目录 |
| --- | --- | --- |
| Qualcomm\_Linux.SPF.1.0|AP|Standard|OEM|NoModem | `git clone -b <firmware release tag> --depth 1 https://qpm-git.qualcomm.com/home2/git/qualcomm/qualcomm-linux-spf-1-0_ap_standard_oem_nomodem.git` | `qualcomm-linux-spf-1-0_ap_standard_oem_nomodem` |
| Qualcomm\_Linux.SPF.1.0|AP|Standard|OEM|NM\_QIMPSDK | `git clone -b <firmware release tag> --depth 1 https://qpm-git.qualcomm.com/home2/git/qualcomm/qualcomm-linux-spf-1-0_ap_standard_oem_nm-qimpsdk.git` | `qualcomm-linux-spf-1-0_ap_standard_oem_nm-qimpsdk` |
| Qualcomm\_Linux.SPF.1.0|AP|Standard|OEM|NM\_QIRPSDK | `git clone -b <firmware release tag> --depth 1 https://qpm-git.qualcomm.com/home2/git/qualcomm/qualcomm-linux-spf-1-0_ap_standard_oem_nm-qirpsdk.git` | `qualcomm-linux-spf-1-0_ap_standard_oem_nm-qirpsdk` |
| Qualcomm\_Linux.SPF.1.0|AP|Standard|OEM| | `git clone -b <firmware release tag> --depth 1 https://qpm-git.qualcomm.com/home2/git/qualcomm/qualcomm-linux-spf-1-0_ap_standard_oem.git` | `qualcomm-linux-spf-1-0_ap_standard_oem` |
| Qualcomm\_Linux.SPF.1.0|AP|Standard|OEM|QIMPSDK | `git clone -b <firmware release tag> --depth 1 https://qpm-git.qualcomm.com/home2/git/qualcomm/qualcomm-linux-spf-1-0_ap_standard_oem_qimpsdk.git` | `qualcomm-linux-spf-1-0_ap_standard_oem_qimpsdk` |
| Qualcomm\_Linux.SPF.1.0|AMSS|Standard|OEM| | `git clone -b <firmware release tag> --depth 1 https://qpm-git.qualcomm.com/home2/git/qualcomm/qualcomm-linux-spf-1-0_amss_standard_oem.git` | `qualcomm-linux-spf-1-0_amss_standard_oem` |
| Qualcomm\_Linux.SPF.1.0|AMSS|Standard|OEM|QIMPSDK | `git clone -b <firmware release tag> --depth 1 https://qpm-git.qualcomm.com/home2/git/qualcomm/qualcomm-linux-spf-1-0_amss_standard_oem_qimpsdk.git` | `qualcomm-linux-spf-1-0_amss_standard_oem_qimpsdk` |

Note

以下部分中的命令基于不带 modem 和 GPS 的固件镜像的二进制文件和源文件（请参阅 [固件发行版本和 git 存储库映射](https://docs.qualcomm.com/doc/80-70015-254Y/topic/build_addn_info.html#mapping-firmware-table) 中的命令）。因此， `qualcomm-linux-spf-1-0_ap_standard_oem_nm-qimpsdk` 被使用。如果使用的是任何其他发行版本，可相应地更新该目录。

**Git 命令** 列（请参阅 [固件发行版和 git 存储库的映射](https://docs.qualcomm.com/doc/80-70015-254Y/topic/build_addn_info.html#mapping-firmware-table)）提供有关包含固件源的 git 存储库的信息。这些代码仓库托管在 Qualcomm 服务器上。根据您的访问 profile 和用例克隆适当的代码仓库。

以下 `git clone` 命令将选定的固件组件下载到源文件中，modem 除外：

mkdir -p <FIRMWARE_ROOT>
    cd <FIRMWARE_ROOT>
    git clone -b <firmware release tag> --depth 1 https://qpm-git.qualcomm.com/home2/git/qualcomm/qualcomm-linux-spf-1-0_ap_standard_oem_nm-qimpsdk.git
    # 示例<firmware release tag> is r1.0_00049.0
    Copy to clipboard

Note

- 该 `git clone` 命令将内容克隆到目录中 `<FIRMWARE_ROOT>/qualcomm-linux-spf-1-0_ap_standard_oem_nm-qimpsdk`。
- 有关最新 `<firmware release tag>` 信息，请参阅 [发布说明](https://docs.qualcomm.com/bundle/publicresource/topics/RNO-240929204440/) 中的 **Build-critical release tags** 章节。

### 编译固件

> 
> 
> Tab QCS6490/QCS5430
> Tab QCS9075
> 
> > 
> > 
> > 前提条件
> > 
> > - 确保工作 shell 为 `bash`。
> > 
> > 
> > 
> > > 
> > > 
> > > echo $0
> > >         Copy to clipboard
> > > 
> > > 
> > > 该命令的预期输出应为 `bash`。如果不是，则输入 bash shell：
> > > 
> > > 
> > > bash
> > >         Copy to clipboard
> 
> 
> - 使用以下命令安装 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
> >         Copy to clipboard
> - 安装 LLVM 进行 AOP、TZ 和 BOOT 编译：
> 
> 
> 
> > 
> > 
> > cd <FIRMWARE_ROOT>
> >         mkdir llvm
> >         
> >         # 登录 qpm-cli 并激活许可证
> >         qpm-cli --login
> >         qpm-cli --license-activate sdllvm_arm
> >         
> >         # BOOT 编译的 LLVM 要求为 14.0.4
> >         qpm-cli --install sdllvm_arm --version 14.0.4 --path <FIRMWARE_ROOT>/llvm/14.0.4
> >         chmod -R 777 <FIRMWARE_ROOT>/llvm/14.0.4
> >         
> >         # TZ 编译的 LLVM 要求为 16.0.7
> >         qpm-cli --install sdllvm_arm --version 16.0.7 --path <FIRMWARE_ROOT>/llvm/16.0.7
> >         chmod -R 777 <FIRMWARE_ROOT>/llvm/16.0.7
> >         Copy to clipboard
> - export `SECTOOLS` 变量并编译固件编译（`<FIRMWARE_ROOT>/qualcomm-linux-spf-1-0_ap_standard_oem_nm-qimpsdk` 是 top-level 目录）：
> 
> 
> 
> > 
> > 
> > export SECTOOLS=<FIRMWARE_ROOT>/qualcomm-linux-spf-1-0_ap_standard_oem_nm-qimpsdk/<product>/common/sectoolsv2/ext/Linux/sectools
> >         export SECTOOLS_DIR=<FIRMWARE_ROOT>/qualcomm-linux-spf-1-0_ap_standard_oem_nm-qimpsdk/<product>/common/sectoolsv2/ext/Linux
> >         # 举个例子 <product> QCM6490.LE.1.0，请参阅最新的发布说明（https://docs.qualcomm.com/bundle/publicresource/topics/RNO-240929204440/）。
> >         Copy to clipboard
> - 安装和搭建 Qualcomm^®^ Hexagon^™^ 处理器：
> 
> 
> 
> > 
> > 
> > qpm-cli --extract hexagon8.4 --版本 8.4.07
> >         export HEXAGON_ROOT=$HOME/Qualcomm/HEXAGON_Tools
> >         echo $HEXAGON_ROOT
> >         Copy to clipboard
> > 
> > 
> > Note
> > 
> > 
> > 将环境变量 HEXAGON\_ROOT 设置为 Hexagon SDK 的安装路径。要在使用 `qpm-cli` 时更改安装路径，请参阅 [更改 Hexagon 工具安装路径](https://docs.qualcomm.com/doc/80-70015-254Y/topic/how_to.html#section-nqg-cj3-v1c-vinayjk-03-23-24-006-3-877)。
> 
> 
> 
> 
> > 
> > 
> > 编译 cDSP
> > 
> > 
> > **所需工具**
> > 
> > 
> > 
> > > 
> > > 
> > > - 编译器版本：Hexagon 8.4.07
> > > - Python 版本：Python 3.10.2
> > > - libffi6 软件包
> > 
> > 
> > 
> > **编译步骤**
> > 
> > 
> > 
> > > 
> > > 
> > > 1. 导航至以下目录：
> > > 
> > > 
> > > cd <FIRMWARE_ROOT>/qualcomm-linux-spf-1-0_ap_standard_oem_nm-qimpsdk/CDSP.HT.2.5.c3/cdsp_proc/build/ms
> > >         Copy to clipboard
> > > 2. 清理编译：
> > > 
> > > 
> > > python ./build_variant.py kodiak.cdsp.prod --clean
> > >         Copy to clipboard
> > > 3. 编译镜像：
> > > 
> > > 
> > > python ./build_variant.py kodiak.cdsp.prod
> > >         Copy to clipboard
> > 
> > 
> > 
> > 编译 aDSP
> > 
> > 
> > **所需工具**
> > 
> > 
> > 
> > > 
> > > 
> > > - 编译器版本：Hexagon 8.4.07
> > > - Python 版本：Python 3.10.2
> > > - libffi6 软件包
> > 
> > 
> > 
> > **Nanopb 集成（一次性设置）**
> > 
> > 
> > 
> > > 
> > > 
> > > cd <FIRMWARE_ROOT>/qualcomm-linux-spf-1-0_ap_standard_oem_nm-qimpsdk/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>/qualcomm-linux-spf-1-0_ap_standard_oem_nm-qimpsdk/ADSP.HT.5.5.c8/adsp_proc/
> > >     python qsh_api/build/config_nanopb_dependency.py -f nanopb-0.3.9.5-linux-x86
> > >     Copy to clipboard
> > 
> > 
> > 
> > **编译步骤**
> > 
> > 
> > 
> > > 
> > > 
> > > 1. 导航至以下目录：
> > > 
> > > 
> > > 
> > > > 
> > > > 
> > > > cd <FIRMWARE_ROOT>/qualcomm-linux-spf-1-0_ap_standard_oem_nm-qimpsdk/ADSP.HT.5.5.c8/adsp_proc/build/ms
> > > >         Copy to clipboard
> > > 2. 清理编译：
> > > 
> > > 
> > > 
> > > > 
> > > > 
> > > > python ./build_variant.py kodiak.adsp.prod --clean
> > > >         Copy to clipboard
> > > 3. 编译镜像：
> > > 
> > > 
> > > 
> > > > 
> > > > 
> > > > python ./build_variant.py kodiak.adsp.prod
> > > >         Copy to clipboard
> > 
> > 
> > 
> > 编译 Boot
> > 
> > 
> > **所需工具**
> > 
> > 
> > 
> > > 
> > > 
> > > - 编译器版本：LLVM 版本必须更新到 14.0.4
> > > 
> > > 
> > > 
> > > 
> > > > 
> > > > 
> > > > Note
> > > > 
> > > > 
> > > > 若要避免编译错误，请确保命令末尾有一个 `/`。
> > > > 
> > > > 
> > > > export LLVM=<FIRMWARE_ROOT>/llvm/14.0.4/
> > > >     Copy to clipboard
> > > 
> > > 
> > > - Python 版本：Python 3.10
> > > - libffi6 软件包
> > 
> > 
> > 
> > 
> > - **编译步骤**
> >     - 1. 安装设备树编译器：
> > 
> > 
> > sudo apt-get install device-tree-compiler
> >         export DTC=/usr/bin
> >         Copy to clipboard
> > 2. 导航至以下目录：
> > 
> > 
> > 
> > > 
> > > 
> > > cd <FIRMWARE_ROOT>/qualcomm-linux-spf-1-0_ap_standard_oem_nm-qimpsdk/BOOT.MXF.1.0.c1/
> > >         Copy to clipboard
> > 3. 安装依赖项：
> > 
> > 
> > 
> > > 
> > > 
> > > python -m pip install -r boot_images/boot_tools/dtschema_tools/oss/requirements.txt
> > >         Copy to clipboard
> > 4. 清理编译：
> > 
> > 
> > 
> > > 
> > > 
> > > python -u boot_images/boot_tools/buildex.py -t kodiak，QcomToolsPkg -v LAA -r RELEASE --build_flags=cleanall
> > >         Copy to clipboard
> > 5. 编译镜像：
> > 
> > 
> > 
> > > 
> > > 
> > > python -u boot_images/boot_tools/buildex.py -t kodiak，QcomToolsPkg -v LAA -r 发布
> > >         Copy to clipboard
> > > 
> > > 
> > > Note
> > > 
> > > 
> > > 对于调试build，请替换 `RELEASE` 为 `DEBUG`。
> > 
> > 
> > 
> > 
> > TZ 固件
> > 
> > 
> > **所需工具**
> > 
> > 
> > 
> > > 
> > > 
> > > - 编译器版本：LLVM 16.0.7
> > > - Python 版本：Python 3.10
> > 
> > 
> > 
> > **编译步骤**
> > 
> > 
> > 
> > > 
> > > 
> > > 1. 安装 LLVM：
> > > 
> > > 
> > > 
> > > > 
> > > > 
> > > > cd <FIRMWARE_ROOT>/qualcomm-linux-spf-1-0_ap_standard_oem_nm-qimpsdk/TZ.XF.5.29/trustzone_images/build/ms/
> > > >         vi build_config_deploy_kodiak.xml
> > > >         # 将所有出现的 /pkg/qct/software/llvm/release/arm/16.0.7/ 编辑为 <FIRMWARE_ROOT>/llvm/16.0.7/
> > > >         Copy to clipboard
> > > 2. 清理编译：
> > > 
> > > 
> > > 
> > > > 
> > > > 
> > > > python build_all.py -b TZ.XF.5.0 CHIPSET=kodiak --cfg=build_config_deploy_kodiak.xml --clean
> > > >         Copy to clipboard
> > > 3. 编译镜像：
> > > 
> > > 
> > > 
> > > > 
> > > > 
> > > > cd <FIRMWARE_ROOT>/qualcomm-linux-spf-1-0_ap_standard_oem_nm-qimpsdk/TZ.XF.5.29/trustzone_images/build/ms/
> > > >         python build_all.py -b TZ.XF.5.0 CHIPSET=kodiak --cfg=build_config_deploy_kodiak.xml
> > > >         Copy to clipboard
> > 
> > 
> > 
> > AOP 固件
> > 
> > 
> > **所需工具**
> > 
> > 
> > 
> > > 
> > > 
> > > - 编译器版本：LLVM 14.0.4
> > > - Python 版本：Python 3.10
> > 
> > 
> > 
> > **编译步骤**
> > 
> > 
> > 
> > > 
> > > 
> > > 1. 导航至以下目录：
> > > 
> > > 
> > > cd <FIRMWARE_ROOT>/qualcomm-linux-spf-1-0_ap_standard_oem_nm-qimpsdk/AOP.HO.3.6/aop_proc/build/
> > >         Copy to clipboard
> > > 2. 编译镜像：
> > > 
> > > 
> > > ./build_kodiak.sh -l <FIRMWARE_ROOT>/llvm/14.0.4/
> > >         Copy to clipboard
> > 
> > 
> > 
> > CPUCP 固件
> > 
> > 
> > CPUCP 固件以二进制文件格式发布，不需要编译。
> > 
> > 
> > CPUSYS.VM 固件
> > 
> > 
> > CPUSYS.VM 固件以二进制文件格式发布，不需要编译。
> > 
> > 
> > BTFM 固件
> > 
> > 
> > BTFM 固件以二进制文件格式发布，不需要编译。
> > 
> > 
> > WLAN 固件
> > 
> > 
> > WLAN 固件以二进制文件格式发布，不需要编译。
> > 
> > 
> > 生成固件预编译文件（启动关键和拆分固件二进制文件）
> > 
> > 
> > 从编译的各个组件创建集成固件二进制文件：
> > 
> > 
> > 
> > > 
> > > 
> > > # cd <FIRMWARE_ROOT>/qualcomm-linux-spf-1-0_ap_standard_oem_nm-qimpsdk/<product>/common/build
> > >     # 示例: <product> 为 QCM6490.LE.1.0，可以运行下面的命令：
> > >     # 对于<product> 的值，请参阅最新的发布说明（https://docs.qualcomm.com/bundle/publicresource/topics/RNO-240929204440/）
> > >     cd <FIRMWARE_ROOT>/qualcomm-linux-spf-1-0_ap_standard_oem_nm-qimpsdk/QCM6490.LE.1.0/common/build
> > >     python build.py --imf
> > >     Copy to clipboard
> > > 
> > > 
> > > Note
> > > 
> > > 
> > > 如果在目录 `<FIRMWARE_ROOT>/qualcomm-linux-spf-1-0_ap_standard_oem_nm-qimpsdk/QCM6490.LE.1.0/common/build/ufs/bin` 中生成了以下 zip 文件，则固件预编译成功：
> > > 
> > > - `QCM6490_bootbinaries.zip`
> > > - `QCM6490_dspso.zip`
> > > - `QCM6490_fw.zip`
> 
> > 
> > 
> > 前提条件
> 
> 
> - 确保工作 shell 为 `bash`。
> 
> 
> 
> > 
> > 
> > echo $0
> >         Copy to clipboard
> > 
> > 
> > 该命令的预期输出应为 `bash`。如果不是，则输入 bash shell：
> > 
> > 
> > bash
> >         Copy to clipboard
> - 使用以下命令安装 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
> >         Copy to clipboard
> - 安装 LLVM 进行 AOP、TZ 和 BOOT 编译：
> 
> 
> 
> > 
> > 
> > cd <FIRMWARE_ROOT>
> >         mkdir llvm
> >         
> >         # 登录 qpm-cli 并激活许可证
> >         qpm-cli --login
> >         qpm-cli --license-activate sdllvm_arm
> >         
> >         # BOOT 编译的 LLVM 要求为 14.0.4
> >         qpm-cli --install sdllvm_arm --version 14.0.4 --path <FIRMWARE_ROOT>/llvm/14.0.4
> >         chmod -R 777 <FIRMWARE_ROOT>/llvm/14.0.4
> >         
> >         # TZ 编译的 LLVM 要求为 16.0.7
> >         qpm-cli --install sdllvm_arm --version 16.0.7 --path <FIRMWARE_ROOT>/llvm/16.0.7
> >         chmod -R 777 <FIRMWARE_ROOT>/llvm/16.0.7
> >         Copy to clipboard
> - export `SECTOOLS` 变量并编译固件编译（`<FIRMWARE_ROOT>/qualcomm-linux-spf-1-0_ap_standard_oem_nm-qimpsdk` 是 top-level 目录）：
> 
> 
> 
> > 
> > 
> > export SECTOOLS=<FIRMWARE_ROOT>/qualcomm-linux-spf-1-0_ap_standard_oem_nm-qimpsdk/<product>/common/sectoolsv2/ext/Linux/sectools
> >         export SECTOOLS_DIR=<FIRMWARE_ROOT>/qualcomm-linux-spf-1-0_ap_standard_oem_nm-qimpsdk/<product>/common/sectoolsv2/ext/Linux
> >         # 举个例子 <product> QCS9100.LE.1.0，请参阅最新的发布说明（https://docs.qualcomm.com/bundle/publicresource/topics/RNO-240929204440/）。
> >         Copy to clipboard
> - 安装和搭建 Qualcomm^®^ Hexagon^™^ 处理器：
> 
> 
> 
> > 
> > 
> > qpm-cli --extract hexagon8.6 --版本 8.6.05.2
> >         export HEXAGON_ROOT=$HOME/Qualcomm/HEXAGON_Tools
> >         echo $HEXAGON_ROOT
> >         Copy to clipboard
> > 
> > 
> > Note
> > 
> > 
> > 将环境变量 HEXAGON\_ROOT 设置为 Hexagon SDK 的安装路径。要在使用 `qpm-cli` 时更改安装路径，请参阅 [更改 Hexagon 工具安装路径](https://docs.qualcomm.com/doc/80-70015-254Y/topic/how_to.html#section-nqg-cj3-v1c-vinayjk-03-23-24-006-3-877)。
> 
> 
> 
> 
> > 
> > 
> > 编译 DSP
> > 
> > 
> > **所需工具**
> > 
> > 
> > 
> > > 
> > > 
> > > - 编译器版本：Hexagon 8.6.05.2
> > > - Python 版本：Python 3.8.2
> > 
> > 
> > 
> > **编译步骤**
> > 
> > 
> > 
> > > 
> > > 
> > > 1. 安装设备树编译器：
> > > 
> > > 
> > > sudo apt-get install device-tree-compiler
> > >         export DTC_PATH=/usr/bin
> > >         Copy to clipboard
> > > 2. 安装依赖项：
> > > 
> > > 
> > > pip install ruamel.yaml==0.17.17
> > >         pip install dtschema==2021.10
> > >         pip install jsonschema==4.0.0
> > >         Copy to clipboard
> > > 3. 导航至以下目录：
> > > 
> > > 
> > > cd <FIRMWARE_ROOT>/qualcomm-linux-spf-1-0_ap_standard_oem_nm-qimpsdk/DSP.AT.1.0/dsp_proc/build/ms
> > >         Copy to clipboard
> > > 4. 清理编译：
> > > 
> > > 
> > > 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
> > >         Copy to clipboard
> > > 5. 编译镜像：
> > > 
> > > 
> > > 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
> > >         Copy to clipboard
> > 
> > 
> > 
> > 编译 Boot
> > 
> > 
> > **所需工具**
> > 
> > 
> > 
> > > 
> > > 
> > > - 编译器版本：LLVM 版本必须更新到 14.0.4
> > > 
> > > 
> > > export LLVM=<FIRMWARE_ROOT>/llvm/14.0.4/
> > >         Copy to clipboard
> > > - Python 版本：Python 3.10
> > > - libffi6 软件包
> > 
> > 
> > 
> > **编译步骤**
> > 
> > 
> > 
> > > 
> > > 
> > > 1. 安装设备树编译器：
> > > 
> > > 
> > > sudo apt-get install device-tree-compiler
> > >         export DTC=/usr/bin
> > >         Copy to clipboard
> > > 2. 导航至以下目录：
> > > 
> > > 
> > > cd <FIRMWARE_ROOT>/qualcomm-linux-spf-1-0_ap_standard_oem_nm-qimpsdk/BOOT.MXF.1.0.c1/
> > >         Copy to clipboard
> > > 3. 安装依赖项：
> > > 
> > > 
> > > python -m pip install -r boot_images/boot_tools/dtschema_tools/oss/requirements.txt
> > >         Copy to clipboard
> > > 4. 清理编译：
> > > 
> > > 
> > > python -u boot_images/boot_tools/buildex.py -t lemans,QcomToolsPkg - v LAA -r RELEASE --build_flags=cleanall
> > >         Copy to clipboard
> > > 5. 编译镜像：
> > > 
> > > 
> > > python -u boot_images/boot_tools/buildex.py -t lemans,QcomToolsPkg - v LAA -r RELEASE
> > >         Copy to clipboard
> > > 
> > > 
> > > Note
> > > 
> > > 
> > > 对于调试build，请替换 `RELEASE` 为 `DEBUG`。
> > 
> > 
> > 
> > TZ 固件
> > 
> > 
> > **所需工具**
> > 
> > 
> > 
> > > 
> > > 
> > > - 编译器版本：LLVM 16.0.7
> > > - Python 版本：Python 3.10
> > 
> > 
> > 
> > **编译步骤**
> > 
> > 
> > 
> > > 
> > > 
> > > 1. 安装 LLVM：
> > > 
> > > 
> > > cd <FIRMWARE_ROOT>/qualcomm-linux-spf-1-0_ap_standard_oem_nm-qimpsdk/TZ.XF.5.29/trustzone_images/build/ms/
> > >         vi build_config_deploy_lemans.xml
> > >            # 将所有出现的 /pkg/qct/software/llvm/release/arm/16.0.7/ 编辑为 <FIRMWARE_ROOT>/llvm/16.0.7/
> > >         Copy to clipboard
> > > 2. 清理编译：
> > > 
> > > 
> > > python build_all.py -b TZ.XF.5.0 CHIPSET=lemans --cfg=build_config_deploy_lemans.xml --clean
> > >         Copy to clipboard
> > > 3. 编译镜像：
> > > 
> > > 
> > > cd <FIRMWARE_ROOT>/qualcomm-linux-spf-1-0_ap_standard_oem_nm-qimpsdk/TZ.XF.5.29/trustzone_images/build/ms/
> > >         python build_all.py -b TZ.XF.5.0 CHIPSET=lemans --cfg=build_config_deploy_lemans.xml
> > >         Copy to clipboard
> > 
> > 
> > 
> > AOP 固件
> > 
> > 
> > AOP 固件以二进制文件格式发布，不需要编译。
> > 
> > 
> > CPUCP 固件
> > 
> > 
> > CPUCP 固件以二进制文件格式发布，不需要编译。
> > 
> > 
> > CPUSYS.VM 固件
> > 
> > 
> > CPUSYS.VM 固件以二进制文件格式发布，不需要编译。
> > 
> > 
> > BTFM 固件
> > 
> > 
> > BTFM 固件以二进制文件格式发布，不需要编译。
> > 
> > 
> > WLAN 固件
> > 
> > 
> > WLAN 固件以二进制文件格式发布，不需要编译。
> > 
> > 
> > 生成固件预编译文件（启动关键和拆分固件二进制文件）
> > 
> > 
> > 从编译的各个组件创建集成固件二进制文件：
> > 
> > 
> > # cd <FIRMWARE_ROOT>/qualcomm-linux-spf-1-0_ap_standard_oem_nm-qimpsdk/<product>/common/build
> >     # 示例： <product> 为 QCS9100.LE.1.0，可以运行下面的命令：
> >     # 对于<product>的值，请参阅最新的 `发布说明<https://docs.qualcomm.com/bundle/publicresource/topics/RNO-240929204440/>`_
> >     cd <FIRMWARE_ROOT>/qualcomm-linux-spf-1-0_ap_standard_oem_nm-qimpsdk/QCS9100.LE.1.0/common/build
> >     python build.py --imf
> >     Copy to clipboard
> > 
> > 
> > Note
> > 
> > 
> > 如果在目录 `<FIRMWARE_ROOT>/qualcomm-linux-spf-1-0_ap_standard_oem_nm-qimpsdk/QCS9100.LE.1.0/common/build/ufs/bin` 中，生成了以下 zip 文件，则固件预编译成功：
> > 
> > - `QCS9100_bootbinaries.zip`
> > - `QCS9100_dspso.zip`
> > - `QCS9100_fw.zip`

### 编译包含extras的BSP镜像

1. 下载 Qualcomm Yocto 和带有附加功能的支持层：

# cd 到有 300 GB 可用存储空间的目录，用于创建工作区
        mkdir <WORKSPACE_DIR>
        cd <WORKSPACE_DIR>
        repo init -u https://github.com/quic-yocto/qcom-manifest -b qcom-linux-kirkstone -m <manifest release tag>
        # 示例，<manifest release tag> is qcom-6.6.38-QLI.1.2-Ver.1.1.xml
        repo sync
        git clone https://qpm-git.qualcomm.com/home2/git/qualcomm/qualcomm-linux-spf-1-0_hlos_oem_metadata.git -b <meta-qcom-extras release tag> --depth 1
        # 示例，<meta-qcom-extras release tag> is r1.0_00049.0
        mkdir -p layers/meta-qcom-extras
        cp -rf qualcomm-linux-spf-1-0_hlos_oem_metadata/<product>/common/config/meta-qcom-extras/* layers/meta-qcom-extras/
        # 举个例子 <product> QCM6490.LE.1.0。有关 <product>的更多信息，请参见最新的发布说明（https://docs.qualcomm.com/bundle/publicresource/topics/RNO-240929204440/）。
        Copy to clipboard

Note

对于 `<manifest release tag>` 和 `<meta-qcom-extras release tag>` 信息，请参阅 [发布说明](https://docs.qualcomm.com/bundle/publicresource/topics/RNO-240929204440/) 的 **Build-critical release tags** 章节。
2. 设置 Yocto 版本：

# 将额外的元图层export到 EXTRALAYERS。假定位置位于 <WORKSPACE DIR>/layers 下。
        export EXTRALAYERS="meta-qcom-extras"
        
        # CUST_ID 用于克隆 meta-qcom-extras 下载的专有源码仓库。
        # 它允许对 meta-qcom-hwe 中存在的相应二进制文件进行源码编译。
        # 固件库 qualcomm-linux-spf-1-0_ap_standard_oem_nm-qirpsdk.git 的 ID 是常量的。
        # CUST_ID 必须初始化为“许可开发者（联系高通访问）”的<PARTY_ID>。
        # 例如，对于"Qualcomm_Linux.SPF.1.0|AP|Standard|OEM|"和"Qualcomm_Linux.SPF.1.0|AMSS|Standard|OEM|"等发行版，
        # 在注册映射到“许可开发者（联系 Qualcomm 获取访问权限）”的发行版时提供<PARTY_ID>。
        # 要查找<PARTY_ID>，请在 qualcomm.com 登录您的帐户。
        # 单击个人资料图标，选择“帐户设置”，然后向下滚动到“公司信息”部分。
        # 使用export ID 指定的编号作为<PARTY_ID>。
        export CUST_ID=“213195”
        
        # 固件配方是在启动 Yocto build 时编译的。固件配方需要
        # 固件路径。您已生成固件预编译（启动关键和拆分固件二进制文件）
        # 使用上一节中描述的步骤。目录路径必须包含 QCM6490_bootbinaries.zip，
        # QCM6490_dspso.zip 和 QCM6490_fw.zip。
        # 设置环境变量来获取预编译：
        export FWZIP_PATH=“<FIRMWARE_ROOT>/qualcomm-linux-spf-1-0_ap_standard_oem_nm-qimpsdk/<product>/common/build/ufs/bin”
        # 举个例子 <product> QCM6490.LE.1.0。有关 <product>的更多信息，请参见最新的发布说明（https://docs.qualcomm.com/bundle/publicresource/topics/RNO-240929204440/）。
        Copy to clipboard
3. 搭建编译环境：

MACHINE=<machine> DISTRO=qcom-wayland QCOM_SELECTED_BSP=custom source setup-environment
        # 示例 MACHINE=qcs6490-rb3gen2-vision-kit DISTRO=qcom-wayland QCOM_SELECTED_BSP=custom source setup-environment
        # source setup-environment: 设置环境，创建编译目录 build-qcom-wayland，
        # 并进入 build-qcom-wayland 目录。
        Copy to clipboard

Note

要了解 `MACHINE` 参数值，请参阅 [发布说明](https://docs.qualcomm.com/bundle/publicresource/topics/RNO-240929204440/)。
4. 编译 Yocto 版本：

bitbake qcom-multimedia-image
        Copy to clipboard

Note

清理 Yocto 版本：

bitbake -fc cleansstate qcom-multimedia-image
        bitbake -fc cleanall qcom-multimedia-image
        Copy to clipboard

    成功生成后，检查文件是否 `system.img` 位于目录中 `<workspace_path>/build-qcom-wayland/tmp-glibc/deploy/images/qcs6490-rb3gen2-vision-kit/qcom-multimedia-image` ：

cd <workspace_path>/build-qcom-wayland/tmp-glibc/deploy/images/qcs6490-rb3gen2-vision-kit/qcom-multimedia-image
        ls -al system.img
        Copy to clipboard
5. 使用 [Flash 镜像](https://docs.qualcomm.com/doc/80-70015-254Y/topic/flash_images.html) 刷写生成的编译。

### 编译包含extras的QIMP SDK 镜像

1. 利用额外功能下载 QIMP SDK 层、Qualcomm Yocto 层和支持层

# cd 到有 300 GB 可用存储空间的目录，用于创建工作区
        mkdir <WORKSPACE_DIR>
        cd <WORKSPACE_DIR>
        repo init -u https://github.com/quic-yocto/qcom-manifest -b qcom-linux-kirkstone -m <manifest release tag>
        # 示例，<manifest release tag> is qcom-6.6.38-QLI.1.2-Ver.1.1.xml
        repo sync
        git clone https://qpm-git.qualcomm.com/home2/git/qualcomm/qualcomm-linux-spf-1-0_hlos_oem_metadata.git -b <meta-qcom-extras release tag> --depth 1
        # 示例，<meta-qcom-extras release tag> is r1.0_00049.0
        mkdir -p layers/meta-qcom-extras
        cp -rf qualcomm-linux-spf-1-0_hlos_oem_metadata/<product>/common/config/meta-qcom-extras/* layers/meta-qcom-extras/
        # 举个例子 <product> QCM6490.LE.1.0。有关 <product>的更多信息，请参见最新的发布说明（https://docs.qualcomm.com/bundle/publicresource/topics/RNO-240929204440/）。
        git clone https://github.com/quic-yocto/meta-qcom-qim-product-sdk -b qcom-6.6.38-QLI.1.2-Ver.1.1_qim-product-sdk-1.1.2 layers/meta-qcom-qim-product-sdk
        Copy to clipboard

Note

对于 `<manifest release tag>` 和 `<meta-qcom-extras release tag>` 信息，请参阅 [发布说明](https://docs.qualcomm.com/bundle/publicresource/topics/RNO-240929204440/) 中的 **Build-critical release tags** 章节。
2. 设置 Yocto 版本：

# 将额外的元图层export到 EXTRALAYERS。假定位置位于 <WORKSPACE DIR>/layers 下。
        export EXTRALAYERS="meta-qcom-extras meta-qcom-qim-product-sdk"
        
        # CUST_ID 用于克隆 meta-qcom-extras 下载的专有源码仓库。
        # 它允许对 meta-qcom-hwe 中存在的相应二进制文件进行源码编译。
        # 固件库 qualcomm-linux-spf-1-0_ap_standard_oem_nm-qirpsdk.git 的 ID 是常量的。
        # CUST_ID 必须初始化为“许可开发者（联系高通访问）”的<PARTY_ID>。
        # 例如，对于"Qualcomm_Linux.SPF.1.0|AP|Standard|OEM|"和"Qualcomm_Linux.SPF.1.0|AMSS|Standard|OEM|"等发行版，
        # 在注册映射到“许可开发者（联系 Qualcomm 获取访问权限）”的发行版时提供<PARTY_ID>。
        # 要查找<PARTY_ID>，请在 qualcomm.com 登录您的帐户。
        # 单击个人资料图标，选择“帐户设置”，然后向下滚动到“公司信息”部分。
        # 使用export ID 指定的编号作为<PARTY_ID>。
        export CUST_ID=“213195”
        
        # 固件配方是在启动 Yocto build 时编译的。固件配方需要
        # 固件路径。您已生成固件预编译（启动关键和拆分固件二进制文件）
        # 使用上一节中描述的步骤。目录路径必须包含 QCM6490_bootbinaries.zip，
        # QCM6490_dspso.zip 和 QCM6490_fw.zip。
        # 设置环境变量来获取预编译：
        export FWZIP_PATH=“<FIRMWARE_ROOT>/qualcomm-linux-spf-1-0_ap_standard_oem_nm-qimpsdk/<product>/common/build/ufs/bin”
        # 举个例子 <product> QCM6490.LE.1.0。有关 <product>的更多信息，请参见最新的发布说明（https://docs.qualcomm.com/bundle/publicresource/topics/RNO-240929204440/）。
        Copy to clipboard
3. 搭建编译环境：

MACHINE=<machine> DISTRO=qcom-wayland QCOM_SELECTED_BSP=custom source setup-environment
        # 示例 MACHINE=qcs6490-rb3gen2-vision-kit DISTRO=qcom-wayland QCOM_SELECTED_BSP=custom source setup-environment
        # source setup-environment: 设置环境，创建编译目录 build-qcom-wayland，
        # 并进入 build-qcom-wayland 目录。
        Copy to clipboard

Note

要了解 `MACHINE` 参数值，请参阅 [发布说明](https://docs.qualcomm.com/bundle/publicresource/topics/RNO-240929204440/)。
4. 编译 QIMP SDK 版本：

bitbake qcom-multimedia-image
        # 编译 SDK 镜像
        bitbake qcom-qim-product-sdk
        Copy to clipboard

Note

清理 QIMP SDK 版本：

bitbake -fc cleansstate qcom-multimedia-image
        bitbake -fc cleanall qcom-multimedia-image
        
        bitbake -fc cleansstate qcom-qim-product-sdk
        bitbake -fc cleanall qcom-qim-product-sdk
        Copy to clipboard

    成功生成后，检查 `system.img` 文件是否位于 `<workspace_path>/build-qcom-wayland/tmp-glibc/deploy/images/qcs6490-rb3gen2-vision-kit/qcom-multimedia-image` 目录中：

cd <workspace_path>/build-qcom-wayland/tmp-glibc/deploy/images/qcs6490-rb3gen2-vision-kit/qcom-multimedia-image
        ls -al system.img
        Copy to clipboard
5. 使用 [Flash 镜像](https://docs.qualcomm.com/doc/80-70015-254Y/topic/flash_images.html) 刷写生成的编译。

### 编译包含extras的QIRP SDK镜像

Note

在开始之前，请克隆 QIRP SDK 的相应固件，例如 `qualcomm-linux-spf-1-0_ap_standard_oem_nm-qirpsdk`。

1. 使用附加组件下载 QIRP SDK 层、Qualcomm Yocto 和支持层

# cd 到有 300 GB 可用存储空间的目录，用于创建工作区
        mkdir <WORKSPACE_DIR>
        cd <WORKSPACE_DIR>
        repo init -u https://github.com/quic-yocto/qcom-manifest -b qcom-linux-kirkstone -m <manifest release tag>
        # 示例，<manifest release tag> is qcom-6.6.38-QLI.1.2-Ver.1.1.xml
        repo sync
        git clone https://qpm-git.qualcomm.com/home2/git/qualcomm/qualcomm-linux-spf-1-0_hlos_oem_metadata.git -b <meta-qcom-extras release tag> --depth 1
        # 示例，<meta-qcom-extras release tag> is r1.0_00049.0
        mkdir -p layers/meta-qcom-extras
        mkdir -p layers/meta-qcom-robotics-extras
        cp -rf qualcomm-linux-spf-1-0_hlos_oem_metadata/<product>/common/config/meta-qcom-extras/* layers/meta-qcom-extras/
        cp -rf qualcomm-linux-spf-1-0_hlos_oem_metadata/<product>/common/config/meta-qcom-robotics-extras/* layers/meta-qcom-robotics-extras/
        # 举个例子 <product> QCM6490.LE.1.0。有关 <product>的更多信息，请参见最新的发布说明（https://docs.qualcomm.com/bundle/publicresource/topics/RNO-240929204440/）。
        
        git clone https://github.com/ros/meta-ros -b Kirkstone layers/meta-ros
        git clone https://github.com/quic-yocto/meta-qcom-robotics.git layers/meta-qcom-robotics
        git clone https://github.com/quic-yocto/meta-qcom-robotics-distro.git layers/meta-qcom-robotics-distro
        git clone https://github.com/quic-yocto/meta-qcom-robotics-sdk.git layers/meta-qcom-robotics-sdk
        git clone https://github.com/quic-yocto/meta-qcom-qim-product-sdk -b <meta-qcom-qim-product-sdk release tag> layers/meta-qcom-qim-product-sdk
        # 示例，<meta-qcom-qim-product-sdk release tag> is qcom-6.6.38-QLI.1.2-Ver.1.1_qim-product-sdk-1.1.2
        Copy to clipboard

Note

有关 `<manifest release tag>`、 `<meta-qcom-extras release tag>``和 ``<meta-qcom-qim-product-sdk release tag>` 信息，请参阅 [发布说明](https://docs.qualcomm.com/bundle/publicresource/topics/RNO-240626095531/) 中的 **Build-critical release tags** 章节。
2. 设置 Yocto 版本：

# 将额外的元图层export到 EXTRALAYERS。假定位置位于 <WORKSPACE DIR>/layers 下。
        export EXTRALAYERS="meta-qcom-extras meta-qcom-robotics-extras"
        
        # CUST_ID 用于克隆 meta-qcom-extras 下载的专有源码仓库。
        # 它允许对 meta-qcom-hwe 中存在的相应二进制文件进行源码编译。
        # 固件库 qualcomm-linux-spf-1-0_ap_standard_oem_nm-qirpsdk.git 的 ID 是常量的。
        # CUST_ID 必须初始化为“许可开发者（联系高通访问）”的<PARTY_ID>。
        # 例如，对于"Qualcomm_Linux.SPF.1.0|AP|Standard|OEM|"和"Qualcomm_Linux.SPF.1.0|AMSS|Standard|OEM|"等发行版，
        # 在注册映射到“许可开发者（联系 Qualcomm 获取访问权限）”的发行版时提供<PARTY_ID>。
        # 要查找<PARTY_ID>，请在 qualcomm.com 登录您的帐户。
        # 单击个人资料图标，选择“帐户设置”，然后向下滚动到“公司信息”部分。
        # 使用export ID 指定的编号作为<PARTY_ID>。
        export CUST_ID=“213195”
        
        # 固件配方是在启动 Yocto build 时编译的。固件配方需要
        # 固件路径。您已生成固件预编译（启动关键和拆分固件二进制文件）
        # 使用上一节中描述的步骤。目录路径必须包含 QCM6490_bootbinaries.zip，
        # QCM6490_dspso.zip 和 QCM6490_fw.zip。
        # 设置环境变量来获取预编译：
        export FWZIP_PATH=“<FIRMWARE_ROOT>/qualcomm-linux-spf-1-0_ap_standard_oem_nm-qirpsdk/<product>/common/build/ufs/bin”
        # 举个例子 <product> QCM6490.LE.1.0。有关 <product>的更多信息，请参见最新的发布说明（https://docs.qualcomm.com/bundle/publicresource/topics/RNO-240929204440/）。
        Copy to clipboard
3. 编译 QIRP SDK 版本：

ln -s layers/meta-qcom-robotics-distro/set_bb_env.sh ./setup-robotics-environment
        ln -s layers/meta-qcom-robotics-sdk/scripts/qirp-build ./qirp-build
        MACHINE=<machine> DISTRO=qcom-robotics-ros2-humble QCOM_SELECTED_BSP=custom source setup-robotics-environment
        # 示例，MACHINE=qcs6490-rb3gen2-vision-kit DISTRO=qcom-robotics-ros2-humble QCOM_SELECTED_BSP=custom source setup-robotics-environment
        # source setup-robotics-environment：设置环境，创建编译目录 build-qcom-robotics-ros2-humble，
        # 并进入 build-qcom-robotics-ros2-humble 目录。
        ../qirp-build qcom-robotics-full-image
        Copy to clipboard

Note

要了解 `MACHINE` 参数值，请参阅 [发布说明](https://docs.qualcomm.com/bundle/publicresource/topics/RNO-240929204440/)。

    成功生成后，请检查 QIRP SDK 编译 artifacts 是否位于以下路径：

QIRP SDK artifacts: <workspace_path>/build-qcom-robotics-ros2-humble/tmp-glibc/deploy/qirpsdk_artifacts/qirp-sdk_<version>.tar.gz
        # system.img 存在于以下路径中
        Robotics镜像：<workspace_path>/build-qcom-robotics-ros2-humble/tmp-glibc/deploy/images/qcs6490-rb3gen2-vision-kit/qcom-robotics-full-image
        Copy to clipboard
4. 使用 [Flash 镜像](https://docs.qualcomm.com/doc/80-70015-254Y/topic/flash_images.html) 刷写生成的编译。

Last Published: Jan 26, 2026

[Previous Topic
刷写](https://docs.qualcomm.com/bundle/publicresource/80-70015-254Y/topics/build_from_source_github_intro.md) [Next Topic
Flash 镜像](https://docs.qualcomm.com/bundle/publicresource/80-70015-254Y/topics/flash_images.md)

Source: [https://docs.qualcomm.com/doc/80-70015-254Y/topic/build_addn_info.html](https://docs.qualcomm.com/doc/80-70015-254Y/topic/build_addn_info.html)