# 使用韌體和附加功能在 GitHub 上構建

備註

此資訊僅適用於授權用戶。要升級你的訪問權限，請前往 [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` 權限來運行一些命令 |
| 四核中央處理器，例如，Intel i7-2600，時脈為3.4 GHz（相等或更好） | Tar 1.28 或更高版本 | 需要 `sudo` 權限來運行一些命令 |
| 300 GB 免費磁碟空間（交換分割區 &gt; 32 GB） | Python 3.10.2 或更高版本 | 需要 `sudo` 權限來運行一些命令 |
| 16 GB RAM | GCC 8.0 或更高版本 | 需要 `sudo` 權限來運行一些命令 |
| Ubuntu 22.04 | GNU Make 4.0 或更高版本 | 需要 `sudo` 權限來運行一些命令 |
|  |  |  |
|  |  |  |
|  |  |  |
|  |  |  |

備註

若要在 Microsoft:sup:® Windows^®^ 或 Apple^®^ macOS^®^ 上設置運行 Ubuntu 22.04 的虛擬機器 (VM)，請參閱 [Qualcomm Linux Virtual Machine Setup Guide](https://docs.qualcomm.com/bundle/publicresource/topics/80-70018-41/)。在 VM 上進行程式碼編譯是一個緩慢的過程，可能需要幾個小時。高通建議使用 Ubuntu 主機電腦進行編譯。

## 安裝 QSC CLI

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

sudo apt install curl
        Copy to clipboard
2. 下載 `qsc-cli` 的 Debian 軟體包：

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 apt update
        sudo apt install ./qsc_installer.deb
        Copy to clipboard
4. 使用您註冊的電子郵件 ID 登入 `qsc-cli`：

備註

要註冊，請前往 [https://www.qualcomm.com/support/working-with-qualcomm](https://www.qualcomm.com/support/working-with-qualcomm).。

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

備註

如需更多資訊，請參閱 [如何同步](https://docs.qualcomm.com/doc/80-70020-254T/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 g++ libacl1
        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. 將你的 Qualcomm 登入 ID 和 PAT 添加到主目錄中的 `~/.netrc` 檔案：

# Log in to qsc-cli to generate PAT
        qsc-cli login -u <username>
        # Run the following command to generate PAT
        qsc-cli pat --get
        # This command gives output as shown in the following note
        # The last line in this output is the token, which can be used to access
        # Qualcomm Proprietary repositories. This token expires in two weeks.
        Copy to clipboard

備註

user@hostname:/local/mnt/workspace$ qsc-cli pat –get

[資訊]：開始 qsc-cli 版本 0.0.0.9

**5LThNlklb55mMVLB5C2KqUGU2jCF**
3. 使用你偏好的文字編輯器編輯 `~/.netrc` 檔案並添加以下條目：

備註

如果 `~/.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 配置：

# Check if your identity is configured in .gitconfig
        git config --get user.email
        git config --get user.name
        
        # Run the following commands if you don't have your account identity set in .gitconfig
        git config --global user.email <Your email ID>
        git config --global user.name <"Your Name">
        
        # Add the following UI color option for output of console (optional)
        git config --global color.ui auto
        
        # 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
        Copy to clipboard
6. 設置 Python 3.10.2：

備註

如果你已經有 Python 3.10.2 或更高版本，請跳過以下指示。

python --version
        # Download it in a directory of your choice
        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
        # Use sudo if you need to access /opt
        ./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 層 | 發行標籤 | 範例 |
| --- | --- | --- | --- |
| 公共開發者（未註冊） | `meta-qcom-hwe` | manifest 發行標籤 | qcom-6.6.65-QLI.1.4-Ver.1.1.xml |
| 公共開發者（未註冊） | `meta-qcom-qim-product-sdk` | manifest 發行標籤 | qcom-6.6.65-QLI.1.4-Ver.1.1\_qim-product-sdk-1.1.2.xml |
| 公共開發者（未註冊） | `meta-qcom-robotics-sdk` | manifest 發行標籤 | qcom-6.6.65-QLI.1.4-Ver.1.0\_robotics-product-sdk-1.0.xml |
| 持有授權訪問的許可開發者 | `meta-qcom-extras` | meta-qcom-extras release tag | r1.0\_00077.0 |
| 參見 [將存取級別映射到韌體發行版本](https://docs.qualcomm.com/doc/80-70020-254T/topic/build_addn_info.html#build-mapping-access-levels) | NA | 韌體發行標籤 | r1.0\_00075.0 |
|  |  |  |  |
|  |  |  |  |

以下表格描述了您可以根據需求和權限下載的韌體發行版本：

| **訪問級別** | **發行版** | Yocto 層 |
| --- | --- | --- |
| 持有授權訪問的許可開發者 | BSP 構建：高階操作系統和韌體源（僅 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 構建 + 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 構建 + 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 構建：高級 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 構建 + 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 構建：高級 OS 和韌體（GPS 和調製解調器）源<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 構建 + 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` |
|  |  |  |
|  |  |  |
|  |  |  |

備註

有關 Yocto 層的更多資訊，請參閱 [Qualcomm Linux metadata layers](https://docs.qualcomm.com/bundle/publicresource/topics/80-70018-27/qualcomm_linux_metadata_layers_overview.html#qualcomm-linux-metadata-layers).

將韌體發行版本到 git 儲存庫

| 韌體發行版本 | 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` |

備註

以下部分的命令基於不含數據機和 GPS 的韌體影像的二進制和原始碼（請參閱 [Mapping firmware distributions to git repositories](https://docs.qualcomm.com/doc/80-70020-254T/topic/build_addn_info.html#mapping-firmware-table) 中的命令）。因此，使用 `qualcomm-linux-spf-1-0_ap_standard_oem_nm-qimpsdk`。如果您使用其他發行版本，請相應地更新目錄。

**Git 命令** 欄（請參閱 [Mapping firmware distributions to git repositories](https://docs.qualcomm.com/doc/80-70020-254T/topic/build_addn_info.html#mapping-firmware-table)）提供了有關包含韌體原始碼的 git 儲存庫的信息。這些儲存庫由 Qualcomm 伺服器託管。根據您的訪問配置克隆相應的儲存庫並使用

以下 `git clone` 命令下載選定的韌體元件原始碼，除了數據機：

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
    # Example, <firmware release tag> is r1.0_00075.0
    Copy to clipboard

備註

- `git clone` 命令會將內容克隆到 `<FIRMWARE_ROOT>/qualcomm-linux-spf-1-0_ap_standard_oem_nm-qimpsdk` 目錄中。
- 欲了解最新的  `<firmware release tag>`, 請參閱 [Release Notes](https://docs.qualcomm.com/bundle/publicresource/topics/RNO-250403001134/) 中的 *Build-critical release tags* 部分。

### 構建韌體

Tab QCS6490/QCS5430
Tab QCS9075
Tab QCS8275

先決條件

- 確保工作 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、Qualcomm^®^ 受信執行環境（TEE）, 和啟動編譯：

cd <FIRMWARE_ROOT>
        mkdir llvm
        
        # Log in to qpm-cli and activate the license
        qpm-cli --login
        qpm-cli --license-activate sdllvm_arm
        
        # LLVM requirement for boot compilation is 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
        
        # LLVM requirement for Qualcomm TEE compilation is 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
- 匯出 `SECTOOLS` 變數並編譯韌體構建 (`<FIRMWARE_ROOT>/qualcomm-linux-spf-1-0_ap_standard_oem_nm-qimpsdk` 是頂層目錄):

export SECTOOLS=<FIRMWARE_ROOT>/qualcomm-linux-spf-1-0_ap_standard_oem_nm-qimpsdk/QCM6490.LE.1.0/common/sectoolsv2/ext/Linux/sectools
        export SECTOOLS_DIR=<FIRMWARE_ROOT>/qualcomm-linux-spf-1-0_ap_standard_oem_nm-qimpsdk/QCM6490.LE.1.0/common/sectoolsv2/ext/Linux
        Copy to clipboard
- 安裝並設置 Qualcomm^®^ Hexagon^™^ 處理器：

qpm-cli --extract hexagon8.4 --version 8.4.07
        export HEXAGON_ROOT=$HOME/Qualcomm/HEXAGON_Tools
        echo $HEXAGON_ROOT
        Copy to clipboard

備註

將環境變數 HEXAGON\_ROOT 設置為 Hexagon SDK 的安裝路徑。若要更改使用 qpm-cli 時的安裝路徑，請參閱 [更改 Hexagon 工具安裝路徑](https://docs.qualcomm.com/doc/80-70020-254T/topic/how_to.html#change-hex-tool-install-path) 。

構建 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

備註

為避免建置錯誤，請確保命令末尾有一個 `/`。

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
        pip install json-schema-for-humans
        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 RELEASE
        Copy to clipboard

備註

對於偵錯變體建置，將 `RELEASE` 替換為 `DEBUG`。

Qualcomm TEE 韌體

**所需工具**

- 編譯器版本：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.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/
        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.1/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 -c -l <FIRMWARE_ROOT>/llvm/14.0.4/
        Copy to clipboard
3. 建置影像

./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/QCM6490.LE.1.0/common/build
    python build.py --imf
    Copy to clipboard

備註

當以下壓縮檔案生成於 `<FIRMWARE_ROOT> /qualcomm-linux-spf-1-0_ap_standard_oem_nm-qimpsdk/QCM6490.LE.1.0/common/build/ufs/bin` 目錄中時，韌體預構建成功：

- `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、Qualcomm TEE 和啟動編譯：

cd <FIRMWARE_ROOT>
        mkdir llvm
        
        # Log in to qpm-cli and activate the license
        qpm-cli --login
        qpm-cli --license-activate sdllvm_arm
        
        # LLVM requirement for boot compilation is 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
        
        # LLVM requirement for Qualcomm TEE compilation is 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
- 匯出 `SECTOOLS` 變數並編譯韌體構建 (`<FIRMWARE_ROOT>/qualcomm-linux-spf-1-0_ap_standard_oem_nm-qimpsdk` 是頂層目錄):

export SECTOOLS=<FIRMWARE_ROOT>/qualcomm-linux-spf-1-0_ap_standard_oem_nm-qimpsdk/QCS9100.LE.1.0/common/sectoolsv2/ext/Linux/sectools
        export SECTOOLS_DIR=<FIRMWARE_ROOT>/qualcomm-linux-spf-1-0_ap_standard_oem_nm-qimpsdk/QCS9100.LE.1.0/common/sectoolsv2/ext/Linux
        Copy to clipboard
- 安裝並設置 Qualcomm^®^ Hexagon^™^ 處理器：

qpm-cli --extract hexagon8.6 --version 8.6.05.2
        export HEXAGON_ROOT=$HOME/Qualcomm/HEXAGON_Tools
        echo $HEXAGON_ROOT
        Copy to clipboard

備註

將環境變數 HEXAGON\_ROOT 設置為 Hexagon SDK 的安裝路徑。若要更改使用 qpm-cli 時的安裝路徑，請參閱 [更改 Hexagon 工具安裝路徑](https://docs.qualcomm.com/doc/80-70020-254T/topic/how_to.html#change-hex-tool-install-path) 。

構建 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
        pip install json-schema-for-humans
        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

備註

對於偵錯變體建置，將 `RELEASE` 替換為 `DEBUG`。

Qualcomm TEE 韌體

**所需工具**

- 編譯器版本：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.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/
        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.1/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 韌體

**所需工具**

- 編譯器版本：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.1/aop_proc/build/
        Copy to clipboard
2. 導航到以下目錄：

./build_lemansau.sh -c -l <FIRMWARE_ROOT>/llvm/14.0.4/
        Copy to clipboard
3. 建置影像

./build_lemansau.sh -l <FIRMWARE_ROOT>/llvm/14.0.4/
        Copy to clipboard

CPUCP 韌體

CPUCP 韌體以二進位檔形式發布，不需要進行構建編譯。

CPUSYS.VM 韌體

CPUSYS.VM 韌體以二進位檔形式發布，不需要進行構建編譯。

BTFM 韌體

BTFM 韌體以二進位檔形式發布，不需要進行構建編譯。

WLAN 韌體

WLAN 韌體以二進位檔形式發布，不需要進行構建編譯。

生成韌體預構建（啟動關鍵和分割韌體二進位檔）

從你編譯的各個組件中創建一個整合的韌體二進位檔：

備註

應用 Release Notes&lt;[https://docs.qualcomm.com/bundle/publicresource/topics/RNO-250403001134/ReleaseNote.html#additional-information](https://docs.qualcomm.com/bundle/publicresource/topics/RNO-250403001134/ReleaseNote.html#additional-information)&gt;`\_\_中 *附加信息* 部分的所有更改。.

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

備註

- 當以下壓縮檔案生成於 `<FIRMWARE_ROOT>/qualcomm-linux-spf-1-0_ap_standard_oem_nm-qimpsdk/QCS9100.LE.1.0/common/build/ufs/bin` 目錄中時，韌體預構建成功：
    - - `QCS9100_bootbinaries.zip`
- `QCS9100_dspso.zip`
- `QCS9100_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、Qualcomm TEE 和啟動編譯：

cd <FIRMWARE_ROOT>
        mkdir llvm
        
        # Log in to qpm-cli and activate the license
        qpm-cli --login
        qpm-cli --license-activate sdllvm_arm
        
        # LLVM requirement for boot compilation is 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
        
        # LLVM requirement for Qualcomm TEE compilation is 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
- 匯出 `SECTOOLS` 變數並編譯韌體構建 (`<FIRMWARE_ROOT>/qualcomm-linux-spf-1-0_ap_standard_oem_nm-qimpsdk` 是頂層目錄):

export SECTOOLS=<FIRMWARE_ROOT>/qualcomm-linux-spf-1-0_ap_standard_oem_nm-qimpsdk/QCS8300.LE.1.0/common/sectoolsv2/ext/Linux/sectools
        export SECTOOLS_DIR=<FIRMWARE_ROOT>/qualcomm-linux-spf-1-0_ap_standard_oem_nm-qimpsdk/QCS8300.LE.1.0/common/sectoolsv2/ext/Linux
        Copy to clipboard
- 安裝並設置 Qualcomm^®^ Hexagon^™^ 處理器：

qpm-cli --extract hexagon8.6 --version 8.6.05.2
        qpm-cli --extract hexagon8.7 --version 8.7.02.1
        export HEXAGON_ROOT=$HOME/Qualcomm/HEXAGON_Tools
        echo $HEXAGON_ROOT
        Copy to clipboard

備註

將環境變數 HEXAGON\_ROOT 設置為 Hexagon SDK 的安裝路徑。若要更改使用 qpm-cli 時的安裝路徑，請參閱 [更改 Hexagon 工具安裝路徑](https://docs.qualcomm.com/doc/80-70020-254T/topic/how_to.html#change-hex-tool-install-path) 。

構建 DSP

**所需工具**

- 編譯器版本：Hexagon 8.6.05.2 和 8.7.02.1
- 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 monaco.cdsp0.prod --clean
        python ./build_variant.py lemans.gpdsp0.prod --clean
        Copy to clipboard
5. 建置影像

python ./build_variant.py lemans.adsp.prod && python ./build_variant.py monaco.cdsp0.prod && python ./build_variant.py lemans.gpdsp0.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
        pip install json-schema-for-humans
        Copy to clipboard
4. 導航到以下目錄：

python -u boot_images/boot_tools/buildex.py -t monaco,QcomToolsPkg - v LAA -r RELEASE --build_flags=cleanall
        Copy to clipboard
5. 建置影像

python -u boot_images/boot_tools/buildex.py -t monaco,QcomToolsPkg - v LAA -r RELEASE
        Copy to clipboard

備註

對於偵錯變體建置，將 `RELEASE` 替換為 `DEBUG`。

Qualcomm TEE 韌體

**所需工具**

- 編譯器版本：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.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/
        Copy to clipboard
2. 導航到以下目錄：

python build_all.py -b TZ.XF.5.0 CHIPSET=monaco --cfg=build_config_deploy_monaco.xml --clean
        Copy to clipboard
3. 建置影像

cd <FIRMWARE_ROOT>/qualcomm-linux-spf-1-0_ap_standard_oem_nm-qimpsdk/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
        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.1/aop_proc/build/
        Copy to clipboard
2. 導航到以下目錄：

./build_monaco.sh -c -l <FIRMWARE_ROOT>/llvm/14.0.4/
        Copy to clipboard
3. 建置影像

./build_monaco.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/QCS8300.LE.1.0/common/build
    python build.py --imf
    Copy to clipboard

備註

當以下壓縮檔案生成於 `<FIRMWARE_ROOT>/qualcomm-linux-spf-1-0_ap_standard_oem_nm-qimpsdk/QCS8300.LE.1.0/common/build/ufs/bin` 目錄中時，韌體預構建成功：

- `QCS8300_bootbinaries.zip`
- `QCS8300_dspso.zip`
- `QCS8300_fw.zip`

### 建置包含額外元件的 BSP 影像

BSP 影像建置包含支援 Qualcomm 裝置的軟體元件和適用於 Qualcomm SoCs 的增值軟體功能。它包括 Qualcomm 開發套件的參考發行配置。 `meta-qcom-extras` 層允許選定元件的原始碼編譯，否則這些元件將以二進制形式存在。

更多詳情, 請參閱 [Qualcomm Linux metadata layers](https://docs.qualcomm.com/bundle/publicresource/topics/80-70018-27/qualcomm_linux_metadata_layers_overview.html#qualcomm-linux-metadata-layers).

1. 下載 Qualcomm Yocto 和支援層及額外元件：

# cd to directory where you have 300 GB of free storage space to create your workspaces
        mkdir <WORKSPACE_DIR>
        cd <WORKSPACE_DIR>
        repo init -u https://github.com/quic-yocto/qcom-manifest -b qcom-linux-scarthgap -m <manifest release tag>
        # Example, <manifest release tag> is qcom-6.6.65-QLI.1.4-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
        # Example, <meta-qcom-extras release tag> is r1.0_00077.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/
        # An example <product> is QCM6490.LE.1.0. For more information on <product>, see the latest Release Notes (https://docs.qualcomm.com/bundle/publicresource/topics/RNO-250403001134/).
        Copy to clipboard

備註

有關 `<manifest release tag>` 和  `<meta-qcom-extras release tag>` 資訊，請參閱 [Release Notes](https://docs.qualcomm.com/bundle/publicresource/topics/RNO-250403001134/) 中的 *Build-critical release tags* 部分。
2. 設置 Yocto 構建：

# Export additional meta layers to EXTRALAYERS. Location is assumed under <WORKSPACE DIR>/layers.
        export EXTRALAYERS="meta-qcom-extras"
        
        # CUST_ID is used to clone the proprietary source repositories downloaded by meta-qcom-extras.
        # It allows source compilation for the corresponding binaries present in meta-qcom-hwe.
        # CUST_ID must be set to "213195" for no-modem based distributions ("qualcomm-linux-spf-1-0_ap_standard_oem_nomodem",
        # "qualcomm-linux-spf-1-0_ap_standard_oem_nm-qimpsdk", "qualcomm-linux-spf-1-0_ap_standard_oem_nm-qirpsdk").
        # For other modem based distributions, CUST_ID must be set based on the "Customer ID".
        # To find "Customer ID", sign in to your account at qualcomm.com.
        # Click the Profile icon, select Account Settings, and then scroll down to the Company Information section.
        # export CUST_ID using the following command.
        export CUST_ID=<Customer ID>
        
        # The firmware recipe is compiled when the Yocto build is initiated. Firmware recipe expects the
        # path of firmware. You have generated firmware prebuilts (boot-critical and split-firmware binaries)
        # using the steps described in the previous section.
        # Example, for QCM6490, the directory path must contain QCM6490_bootbinaries.zip, QCM6490_dspso.zip, and QCM6490_fw.zip.
        # Set the environment variable to pick up the prebuilts:
        export FWZIP_PATH="<FIRMWARE_ROOT>/qualcomm-linux-spf-1-0_ap_standard_oem_nm-qimpsdk/<product>/common/build/ufs/bin"
        # An example <product> is QCM6490.LE.1.0. For more information on <product>, see the latest Release Notes (https://docs.qualcomm.com/bundle/publicresource/topics/RNO-250403001134/).
        Copy to clipboard
3. 設置構建環境：

MACHINE=<machine> DISTRO=qcom-wayland QCOM_SELECTED_BSP=custom source setup-environment
        # Example, MACHINE=qcs6490-rb3gen2-vision-kit DISTRO=qcom-wayland QCOM_SELECTED_BSP=custom source setup-environment
        # source setup-environment: Sets the environment, creates the build directory build-qcom-wayland,
        # and enters into build-qcom-wayland directory.
        Copy to clipboard

備註

要了解 `MACHINE` 參數值，請參閱 [Release Notes](https://docs.qualcomm.com/bundle/publicresource/topics/RNO-250403001134/)。
4. 編譯 Yocto 構建：

bitbake qcom-multimedia-image
        Copy to clipboard

備註

清理 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 software images](https://docs.qualcomm.com/doc/80-70020-254T/topic/flash_images.html) 來燒錄生成的建置。

### 建置包含額外元件的 QIMP SDK 影像

QIMP SDK 是四個獨立功能 SDK 的集合，分別是 Qualcomm IM SDK、Qualcomm 神經處理 SDK、Qualcomm AI 引擎直接 SDK 和 LiteRT。它還包括可用於開發用例的參考應用程式。`meta-qcom-extras` 層允許選定組件的原始碼編譯，這些組件通常以二進制形式存在。

更多詳情請參閱 [QIMP SDK 快速入門指南](https://docs.qualcomm.com/bundle/publicresource/topics/80-70018-51).。

1. 下載 QIMP SDK 層、Qualcomm Yocto 層及支援層及額外元件：

# cd to directory where you have 300 GB of free storage space to create your workspaces
        mkdir <WORKSPACE_DIR>
        cd <WORKSPACE_DIR>
        repo init -u https://github.com/quic-yocto/qcom-manifest -b qcom-linux-scarthgap -m <manifest release tag>
        # Example, <manifest release tag> is qcom-6.6.65-QLI.1.4-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
        # Example, <meta-qcom-extras release tag> is r1.0_0005.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/
        # An example <product> is QCM6490.LE.1.0. For more information on <product>, see the latest Release Notes (https://docs.qualcomm.com/bundle/publicresource/topics/RNO-250403001134/).
        git clone https://github.com/quic-yocto/meta-qcom-qim-product-sdk -b qcom-6.6.65-QLI.1.4-Ver.1.1_qim-product-sdk-1.1.2 layers/meta-qcom-qim-product-sdk
        Copy to clipboard

備註

有關 `<manifest release tag>` 和  `<meta-qcom-extras release tag>` 資訊，請參閱 [Release Notes](https://docs.qualcomm.com/bundle/publicresource/topics/RNO-250403001134/) 中的 *Build-critical release tags* 部分。
2. 設置 Yocto 構建：

# Export additional meta layers to EXTRALAYERS. Location is assumed under <WORKSPACE DIR>/layers.
        export EXTRALAYERS="meta-qcom-extras meta-qcom-qim-product-sdk"
        
        # CUST_ID is used to clone the proprietary source repositories downloaded by meta-qcom-extras.
        # It allows source compilation for the corresponding binaries present in meta-qcom-hwe.
        # CUST_ID must be set to "213195" for no-modem based distributions ("qualcomm-linux-spf-1-0_ap_standard_oem_nomodem",
        # "qualcomm-linux-spf-1-0_ap_standard_oem_nm-qimpsdk", "qualcomm-linux-spf-1-0_ap_standard_oem_nm-qirpsdk").
        # For other modem based distributions, CUST_ID must be set based on the "Customer ID".
        # To find "Customer ID", sign in to your account at qualcomm.com.
        # Click the Profile icon, select Account Settings, and then scroll down to the Company Information section.
        # export CUST_ID using the following command.
        export CUST_ID=<Customer ID>
        
        # The firmware recipe is compiled when the Yocto build is initiated. Firmware recipe expects the
        # path of firmware. You have generated firmware prebuilts (boot-critical and split-firmware binaries)
        # using the steps described in the previous section.
        # Example, for QCM6490, the directory path must contain QCM6490_bootbinaries.zip, QCM6490_dspso.zip, and QCM6490_fw.zip.
        # Set the environment variable to pick up the prebuilts:
        export FWZIP_PATH="<FIRMWARE_ROOT>/qualcomm-linux-spf-1-0_ap_standard_oem_nm-qimpsdk/<product>/common/build/ufs/bin"
        # An example <product> is QCM6490.LE.1.0. For more information on <product>, see the latest Release Notes (https://docs.qualcomm.com/bundle/publicresource/topics/RNO-250403001134/).
        Copy to clipboard
3. 設置構建環境：

MACHINE=<machine> DISTRO=qcom-wayland QCOM_SELECTED_BSP=custom source setup-environment
        # Example, MACHINE=qcs6490-rb3gen2-vision-kit DISTRO=qcom-wayland QCOM_SELECTED_BSP=custom source setup-environment
        # source setup-environment: Sets the environment, creates the build directory build-qcom-wayland,
        # and enters into build-qcom-wayland directory.
        Copy to clipboard

備註

要了解 `MACHINE` 參數值，請參閱 [Release Notes](https://docs.qualcomm.com/bundle/publicresource/topics/RNO-250403001134/)。
4. 編譯 QIMP SDK 構建：

bitbake qcom-multimedia-image
        # Build SDK image
        bitbake qcom-qim-product-sdk
        Copy to clipboard

備註

清理 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 software images](https://docs.qualcomm.com/doc/80-70020-254T/topic/flash_images.html) 來燒錄生成的建置。

### 建置包含額外元件的 QIRP SDK 影像

QIRP SDK 2.0 是一組元件，允許您在 Qualcomm Linux 發行版上開發機器人功能。`meta-qcom-extras` 層允許選定組件的原始碼編譯，這些組件通常以二進制形式存在。

更多詳情請參閱 [QIRP SDK 2.0 使用者指南](https://docs.qualcomm.com/bundle/publicresource/topics/80-70018-265).

備註

在開始之前，請克隆相應的 QIRP SDK 韌體，例如 qualcomm-linux-spf-1-0\_ap\_standard\_oem\_nm-qirpsdk。

1. 下載 QIRP SDK 層、Qualcomm Yocto 和支援層及額外元件：

# cd to directory where you have 300 GB of free storage space to create your workspaces
        mkdir <WORKSPACE_DIR>
        cd <WORKSPACE_DIR>
        repo init -u https://github.com/quic-yocto/qcom-manifest -b qcom-linux-scarthgap -m <manifest release tag>
        # Example, <manifest release tag> is qcom-6.6.65-QLI.1.4-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
        # Example, <meta-qcom-extras release tag> is r1.0_00077.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/
        # An example <product> is QCM6490.LE.1.0. For more information on <product>, see the latest Release Notes (https://docs.qualcomm.com/bundle/publicresource/topics/RNO-250403001134/).
        
        git clone https://github.com/ros/meta-ros -b scarthgap layers/meta-ros && cd layers/meta-ros && git checkout c560699e810e60a9526f4226c2c23f8d877280c8 && cd ../../
        git clone https://github.com/quic-yocto/meta-qcom-robotics.git -b qcom-6.6.65-QLI.1.4-Ver.1.0_robotics-product-sdk-1.0 layers/meta-qcom-robotics
        git clone https://github.com/quic-yocto/meta-qcom-robotics-distro.git -b qcom-6.6.65-QLI.1.4-Ver.1.0_robotics-product-sdk-1.0 layers/meta-qcom-robotics-distro
        git clone https://github.com/quic-yocto/meta-qcom-robotics-sdk.git -b qcom-6.6.65-QLI.1.4-Ver.1.0_robotics-product-sdk-1.0 layers/meta-qcom-robotics-sdk
        git clone https://github.com/quic-yocto/meta-qcom-qim-product-sdk -b qcom-6.6.65-QLI.1.4-Ver.1.1_qim-product-sdk-1.1.2 layers/meta-qcom-qim-product-sdk
        # Example, <meta-qcom-qim-product-sdk release tag> is qcom-6.6.65-QLI.1.4-Ver.1.1_qim-product-sdk-1.1.2
        Copy to clipboard

備註

有關 `<manifest release tag>`, `<meta-qcom-extras release tag>`, 和 `<meta-qcom-qim-product-sdk release tag>` 資訊，請參閱 [Release Notes](https://docs.qualcomm.com/bundle/publicresource/topics/RNO-240626095531/) 中的 *Build-critical release tags* 部分。
2. 設置 Yocto 構建：

# Export additional meta layers to EXTRALAYERS. Location is assumed under <WORKSPACE DIR>/layers.
        export EXTRALAYERS="meta-qcom-extras meta-qcom-robotics-extras"
        
        # CUST_ID is used to clone the proprietary source repositories downloaded by meta-qcom-extras.
        # It allows source compilation for the corresponding binaries present in meta-qcom-hwe.
        # CUST_ID must be set to "213195" for no-modem based distributions ("qualcomm-linux-spf-1-0_ap_standard_oem_nomodem",
        # "qualcomm-linux-spf-1-0_ap_standard_oem_nm-qimpsdk", "qualcomm-linux-spf-1-0_ap_standard_oem_nm-qirpsdk").
        # For other modem based distributions, CUST_ID must be set based on the "Customer ID".
        # To find "Customer ID", sign in to your account at qualcomm.com.
        # Click the Profile icon, select Account Settings, and then scroll down to the Company Information section.
        # export CUST_ID using the following command.
        export CUST_ID=<Customer ID>
        
        # The firmware recipe is compiled when the Yocto build is initiated. Firmware recipe expects the
        # path of firmware. You have generated firmware prebuilts (boot-critical and split-firmware binaries)
        # using the steps described in the previous section.
        # Example, for QCM6490, the directory path must contain QCM6490_bootbinaries.zip, QCM6490_dspso.zip, and QCM6490_fw.zip.
        # Set the environment variable to pick up the prebuilts:
        export FWZIP_PATH="<FIRMWARE_ROOT>/qualcomm-linux-spf-1-0_ap_standard_oem_nm-qirpsdk/<product>/common/build/ufs/bin"
        # An example <product> is QCM6490.LE.1.0. For more information on <product>, see the latest Release Notes (https://docs.qualcomm.com/bundle/publicresource/topics/RNO-250403001134/).
        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
        # Example, MACHINE=qcs6490-rb3gen2-vision-kit DISTRO=qcom-robotics-ros2-humble QCOM_SELECTED_BSP=custom source setup-robotics-environment
        # source setup-robotics-environment: Sets the environment, creates the build directory build-qcom-robotics-ros2-humble,
        # and enters into build-qcom-robotics-ros2-humble directory.
        ../qirp-build qcom-robotics-full-image
        Copy to clipboard

備註

要了解 `MACHINE` 參數值，請參閱 [Release Notes](https://docs.qualcomm.com/bundle/publicresource/topics/RNO-250403001134/)。

    成功構建後，檢查 QIRP SDK 構建工件是否位於以下路徑：

QIRP SDK artifacts: <workspace_path>/build-qcom-robotics-ros2-humble/tmp-glibc/deploy/qirpsdk_artifacts/qirp-sdk_<version>.tar.gz
        # system.img is present in the following path
        Robotics image: <workspace_path>/build-qcom-robotics-ros2-humble/tmp-glibc/deploy/images/qcs6490-rb3gen2-vision-kit/qcom-robotics-full-image
        Copy to clipboard
4. 使用 [Flash software images](https://docs.qualcomm.com/doc/80-70020-254T/topic/flash_images.html) 來燒錄生成的建置。

Last Published: Dec 23, 2025

[Previous Topic
註冊用戶使用 GitHub 構建](https://docs.qualcomm.com/bundle/publicresource/80-70020-254T/topics/build_from_source_github_intro.md) [Next Topic
燒錄軟體影像](https://docs.qualcomm.com/bundle/publicresource/80-70020-254T/topics/flash_images.md)

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