# Biên dịch với GitHub bằng firmware và thành phần bổ sung

Ghi chú

Thông tin này chỉ áp dụng cho người dùng được cấp quyền. Để cập nhật quyền truy cập của bạn, hãy truy cập [http://www.qualcomm.com/support/working-with-qualcomm](http://www.qualcomm.com/support/working-with-qualcomm).

Dùng thông tin này để biên dịch các lớp Qualcomm Linux Yocto khác nhau, bao gồm lớp `meta-qcom-hwe`, `meta-qcom-extras`, `meta-qcom-qim-product-sdk` và `meta-qcom-robotics-sdk` bằng các mã nguồn đóng và tệp thực thi/thư viện tùy chọn.

## Yêu cầu đối với máy chủ

| Cấu hình | Công cụ | Quyền |
| --- | --- | --- |
| Máy x86 | Git 1.8.3.1 trở lên | Cần có quyền `sudo` để chạy một vài lệnh |
| CPU lõi tứ, ví dụ: Intel i7-2600 ở tốc độ 3,4 GHz (tương đương hoặc mạnh hơn) | Tar 1.28 trở lên | Cần có quyền `sudo` để chạy một vài lệnh |
| 300 GB dung lượng đĩa trống (phân vùng swap &gt; 32 GB) | Python 3.10.2 trở lên | Cần có quyền `sudo` để chạy một vài lệnh |
| 16 GB RAM | GCC 8.0 trở lên | Cần có quyền `sudo` để chạy một vài lệnh |
| Ubuntu 22.04 | GNU Make 4.0 trở lên | Cần có quyền `sudo` để chạy một vài lệnh |
|  |  |  |
|  |  |  |
|  |  |  |
|  |  |  |

Ghi chú

Để thiết lập máy ảo (VM) chạy Ubuntu 22.04 trên Microsoft^®^ Windows^®^ hoặc Apple^®^ macOS^®^, hãy xem [Hướng dẫn thiết lập máy ảo Qualcomm Linux](https://docs.qualcomm.com/bundle/publicresource/topics/80-70018-41/). Quá trình biên dịch mã trên máy ảo diễn ra chậm và thường mất vài giờ. Bạn nên dùng máy chủ Ubuntu vật lý để biên dịch.

## Cài đặt QSC CLI

1. Cài đặt curl (nếu chưa cài đặt):

sudo apt install curl
        Copy to clipboard
2. Tải xuống gói Debian cho `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. Cài đặt gói Debian cho `qsc-cli`:

sudo apt update
        sudo apt install ./qsc_installer.deb
        Copy to clipboard
4. Đăng nhập vào `qsc-cli` bằng ID email đã đăng ký:

Ghi chú

Để đăng ký, hãy truy cập [https://www.qualcomm.com/support/working-with-qualcomm](https://www.qualcomm.com/support/working-with-qualcomm).

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

Ghi chú

Để biết thêm thông tin, hãy xem các chủ đề liên quan đến `qsc-cli` trong [Cách đồng bộ hóa](https://docs.qualcomm.com/doc/80-70018-254V/topic/how_to.html#howto-sync).

## Thiết lập máy chủ Ubuntu

Máy chủ Ubuntu cần được cài đặt và cấu hình các công cụ phần mềm bắt buộc để sử dụng.

1. Cài đặt các gói sau:

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. Thêm ID đăng nhập Qualcomm với PAT của bạn vào tệp `~/.netrc` trong thư mục home:

# 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

Ghi chú

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

[Info]: Starting qsc-cli version 0.0.0.9

**5LThNlklb55mMVLB5C2KqUGU2jCF**
3. Dùng trình soạn thảo văn bản để chỉnh sửa tệp `~/.netrc` và thêm các mục sau:

Ghi chú

Tạo tệp `~/.netrc` nếu chưa có.

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. Thiết lập ngôn ngữ (nếu chưa thiết lập):

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. Cập nhật cấu hình 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. Thiết lập Python 3.10.2:

Ghi chú

Bỏ qua các hướng dẫn sau nếu bạn đã có Python 3.10.2 hoặc các phiên bản mới hơn.

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

## Biên dịch bằng mã nguồn firmware

### Đồng bộ hóa firmware

Bảng bên dưới mô tả các lớp Qualcomm Yocto và phiên bản phát hành:

| Cấp độ truy cập | Lớp Yocto | Phiên bản phát hành | Ví dụ |
| --- | --- | --- | --- |
| Nhà phát triển mã nguồn mở (chưa đăng ký) | `meta-qcom-hwe` | phiên bản phát hành manifest | qcom-6.6.65-QLI.1.4-Ver.1.1.xml |
| Nhà phát triển mã nguồn mở (chưa đăng ký) | `meta-qcom-qim-product-sdk` | phiên bản phát hành manifest | qcom-6.6.65-QLI.1.4-Ver.1.1\_qim-product-sdk-1.1.2.xml |
| Nhà phát triển mã nguồn mở (chưa đăng ký) | `meta-qcom-robotics-sdk` | phiên bản phát hành manifest | qcom-6.6.65-QLI.1.4-Ver.1.0\_robotics-product-sdk-1.0.xml |
| Nhà phát triển được cấp phép quyền truy cập | `meta-qcom-extras` | phiên bản phát hành meta-qcom-extras | r1.0\_00077.0 |
| Xem [Ánh xạ cấp độ truy cập đến bản phân phối firmware](https://docs.qualcomm.com/doc/80-70018-254V/topic/build_addn_info.html#build-mapping-access-levels) | NA | Phiên bản phát hành firmware | r1.0\_00075.0 |
|  |  |  |  |
|  |  |  |  |

Các bảng dưới đây mô tả các bản phân phối firmware mà bạn có thể tải xuống theo nhu cầu và quyền:

| **Cấp độ truy cập** | **Bản phân phối** | Lớp Yocto |
| --- | --- | --- |
| Nhà phát triển được cấp phép quyền truy cập | Bản build BSP: Hệ điều hành cấp cao và mã nguồn firmware (chỉ 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` |
| Nhà phát triển được cấp phép quyền truy cập | Bản build 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` |
| Nhà phát triển được cấp phép quyền truy cập | Bản build 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` |
| Nhà phát triển được cấp phép (liên hệ với Qualcomm để có quyền truy cập) | Bản build BSP: Hệ điều hành cấp cao và mã nguồn firmware (chỉ 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` |
| Nhà phát triển được cấp phép (liên hệ với Qualcomm để có quyền truy cập) | Bản build BSP + QIMP SDK (chỉ 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` |
| Nhà phát triển được cấp phép (liên hệ với Qualcomm để có quyền truy cập) | Bản build BSP: Hệ điều hành cấp cao và mã nguồn firmware (GPS và 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` |
| Nhà phát triển được cấp phép (liên hệ với Qualcomm để có quyền truy cập) | Bản build BSP + QIMP SDK (GPS và modem)<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` |
|  |  |  |
|  |  |  |
|  |  |  |

Ghi chú

Để biết thêm thông tin về lớp Yocto, hãy xem [Qualcomm Linux metadata layers](https://docs.qualcomm.com/bundle/publicresource/topics/80-70018-27/qualcomm_linux_metadata_layers_overview.html#qualcomm-linux-metadata-layers).

Ánh xạ bản phân phối firmware tương ứng git repositories

| Bản phân phối firmware | Lệnh Git | Thư mục mà firmware được đồng bộ hóa khi thực hiện lệnh 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` |

Ghi chú

Các lệnh trong những phần sau dựa trên tệp thực thi và mã nguồn cho bản firmware không có modem và GPS (xem lệnh trong [Ánh xạ bản phân phối firmware tương ứng với  git repositories](https://docs.qualcomm.com/doc/80-70018-254V/topic/build_addn_info.html#mapping-firmware-table)). Do đó, `qualcomm-linux-spf-1-0_ap_standard_oem_nm-qimpsdk` được dùng. Nếu bạn dùng bất kỳ bản phân phối nào khác, hãy cập nhật thư mục cho phù hợp.

Cột **Lệnh Git** (xem [Ánh xạ bản phân phối firmware tương ứng với git repositories](https://docs.qualcomm.com/doc/80-70018-254V/topic/build_addn_info.html#mapping-firmware-table)) cung cấp thông tin về các git repositories  chứa mã nguồn firmware. Máy chủ Qualcomm lưu trữ các repositories này. Hãy tải các repositories phù hợp dựa trên quyền truy cập và mục đích sử dụng của bạn.

Lệnh `git clone` sau đây tải xuống các thành phần firmware đã chọn trong mã nguồn, ngoại trừ 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
    # Example, <firmware release tag> is r1.0_00075.0
    Copy to clipboard

Ghi chú

- Lệnh `git clone` tải nội dung vào thư mục `<FIRMWARE_ROOT>/qualcomm-linux-spf-1-0_ap_standard_oem_nm-qimpsdk`.
- Để biết phiên bản `<firmware release tag>` mới nhất, hãy xem phần *Những phiên bản phát hành quan trọng* trong [Release Notes](https://docs.qualcomm.com/bundle/publicresource/topics/RNO-250403001134/).

### Biên dịch firmware

Tab QCS6490/QCS5430
Tab QCS9075
Tab QCS8275

Điều kiện tiên quyết

- Đảm bảo rằng shell đang dùng là `bash`.

echo $0
        Copy to clipboard

    Đầu ra mong đợi của lệnh này phải là `bash`. Nếu không, hãy chuyển sang shell bash:

bash
        Copy to clipboard
- Cài đặt gói libffi6 bằng các lệnh sau. Đây là điều kiện bắt buộc đối với trình biên dịch QAIC, để tạo header và tệp mã nguồn từ các tệp 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
- Cài đặt LLVM để biên dịch AOP, Qualcomm^®^ Trusted Execution Environment (TEE) và các thành phần khởi động:

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
- Xuất biến `SECTOOLS` và biên dịch firmware (`<FIRMWARE_ROOT>/qualcomm-linux-spf-1-0_ap_standard_oem_nm-qimpsdk` là thư mục cấp cao nhất):

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
- Cài đặt và thiết lập Qualcomm^®^ Hexagon^™^ Processor:

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

Ghi chú

Đặt biến môi trường HEXAGON\_ROOT thành đường dẫn nơi cài đặt Hexagon SDK. Để thay đổi đường dẫn cài đặt khi dùng `qpm-cli`, hãy xem [Thay đổi đường dẫn cài đặt công cụ Hexagon](https://docs.qualcomm.com/doc/80-70018-254V/topic/how_to.html#change-hex-tool-install-path).

Biên dịch cDSP

**Công cụ cần thiết**

- Phiên bản trình biên dịch: Hexagon 8.4.07
- Phiên bản Python: Python 3.10.2
- Gói libffi6

**Các bước biên dịch**

1. Điều hướng đến thư mục sau:

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. Dọn dẹp bản build:

python ./build_variant.py kodiak.cdsp.prod --clean
        Copy to clipboard
3. Biên dịch tệp ảnh:

python ./build_variant.py kodiak.cdsp.prod
        Copy to clipboard

Biên dịch aDSP

**Công cụ cần thiết**

- Phiên bản trình biên dịch: Hexagon 8.4.07
- Phiên bản Python: Python 3.10.2
- Gói libffi6

**Tích hợp Nanopb (thiết lập 1 lần)**

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

**Các bước biên dịch**

1. Điều hướng đến thư mục sau:

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. Dọn dẹp bản build:

python ./build_variant.py kodiak.adsp.prod --clean
        Copy to clipboard
3. Biên dịch tệp ảnh:

python ./build_variant.py kodiak.adsp.prod
        Copy to clipboard

Biên dịch thành phần khởi động

**Công cụ cần thiết**

- Phiên bản trình biên dịch: LLVM phải được cập nhật lên phiên bản 14.0.4

Ghi chú

Để tránh lỗi biên dịch, hãy đảm bảo có ký hiệu `/` ở cuối lệnh.

export LLVM=<FIRMWARE_ROOT>/llvm/14.0.4/
        Copy to clipboard
- Phiên bản Python: Python 3.10
- Gói libffi6

**Các bước biên dịch**

1. Cài đặt trình biên dịch cho device tree:

sudo apt-get install device-tree-compiler
        export DTC=/usr/bin
        Copy to clipboard
2. Điều hướng đến thư mục sau:

cd <FIRMWARE_ROOT>/qualcomm-linux-spf-1-0_ap_standard_oem_nm-qimpsdk/BOOT.MXF.1.0.c1/
        Copy to clipboard
3. Cài đặt phần phụ thuộc:

python -m pip install -r boot_images/boot_tools/dtschema_tools/oss/requirements.txt
        pip install json-schema-for-humans
        Copy to clipboard
4. Dọn dẹp bản build:

python -u boot_images/boot_tools/buildex.py -t kodiak,QcomToolsPkg -v LAA -r RELEASE --build_flags=cleanall
        Copy to clipboard
5. Biên dịch tệp ảnh:

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

Ghi chú

Đối với các bản build biến thể gỡ lỗi, hãy thay `RELEASE` bằng `DEBUG`.

Firmware Qualcomm TEE

**Công cụ cần thiết**

- Phiên bản trình biên dịch: LLVM 16.0.7
- Phiên bản Python: Python 3.10

**Các bước biên dịch**

1. Cài đặt 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. Dọn dẹp bản build:

python build_all.py -b TZ.XF.5.0 CHIPSET=kodiak --cfg=build_config_deploy_kodiak.xml --clean
        Copy to clipboard
3. Biên dịch tệp ảnh:

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

Firmware AOP

**Công cụ cần thiết**

- Phiên bản trình biên dịch: LLVM 14.0.4
- Phiên bản Python: Python 3.10

**Các bước biên dịch**

1. Điều hướng đến thư mục sau:

cd <FIRMWARE_ROOT>/qualcomm-linux-spf-1-0_ap_standard_oem_nm-qimpsdk/AOP.HO.3.6/aop_proc/build/
        Copy to clipboard
2. Dọn dẹp bản build:

./build_kodiak.sh -c -l <FIRMWARE_ROOT>/llvm/14.0.4/
        Copy to clipboard
3. Biên dịch tệp ảnh:

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

Firmware CPUCP

Firmware CPUCP được phát hành dưới dạng tệp thực thi và không cần biên dịch lại.

Firmware CPUSYS.VM

Firmware CPUSYS.VM được phát hành dưới dạng tệp thực thi và không cần biên dịch lại.

Firmware BTFM

Firmware BTFM được phát hành dưới dạng tệp thực thi và không cần biên dịch lại.

Firmware WLAN

Firmware WLAN được phát hành dưới dạng tệp thực thi và không cần biên dịch lại.

Tạo bản biên dịch sẵn của firmware (gồm các tệp thực thi quan trọng cho khởi động và firmware được chia tách)

Tạo một tệp thực thi firmware tích hợp từ các thành phần riêng lẻ mà bạn đã biên dịch:

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

Ghi chú

Bản biên dịch sẵn của firmware sẽ thành công nếu các tệp zip sau được tạo trong thư mục `<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`

Điều kiện tiên quyết

- Đảm bảo rằng shell đang dùng là `bash`.

echo $0
        Copy to clipboard

    Đầu ra mong đợi của lệnh này phải là `bash`. Nếu không, hãy chuyển sang shell bash:

bash
        Copy to clipboard
- Cài đặt gói libffi6 bằng các lệnh sau. Đây là điều kiện bắt buộc đối với trình biên dịch QAIC, để tạo header và tệp mã nguồn từ các tệp 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
- Cài đặt LLVM để biên dịch AOP, Qualcomm TEE và các thành phần khởi động:

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
- Xuất biến `SECTOOLS` và biên dịch firmware (`<FIRMWARE_ROOT>/qualcomm-linux-spf-1-0_ap_standard_oem_nm-qimpsdk` là thư mục cấp cao nhất):

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
- Cài đặt và thiết lập Hexagon:

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

Ghi chú

Đặt biến môi trường HEXAGON\_ROOT thành đường dẫn nơi cài đặt Hexagon SDK. Để thay đổi đường dẫn cài đặt khi dùng `qpm-cli`, hãy xem [Thay đổi đường dẫn cài đặt công cụ Hexagon](https://docs.qualcomm.com/doc/80-70018-254V/topic/how_to.html#change-hex-tool-install-path).

Biên dịch DSP

**Công cụ cần thiết**

- Phiên bản trình biên dịch: Hexagon 8.6.05.2
- Phiên bản Python: Python 3.8.2

**Các bước biên dịch**

1. Cài đặt trình biên dịch cho device tree:

sudo apt-get install device-tree-compiler
        export DTC_PATH=/usr/bin
        Copy to clipboard
2. Cài đặt phần phụ thuộc:

pip install ruamel.yaml==0.17.17
        pip install dtschema==2021.10
        pip install jsonschema==4.0.0
        Copy to clipboard
3. Điều hướng đến thư mục sau:

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. Dọn dẹp bản build:

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. Biên dịch tệp ảnh:

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

Biên dịch thành phần khởi động

**Công cụ cần thiết**

- Phiên bản trình biên dịch: LLVM phải được cập nhật lên phiên bản 14.0.4

export LLVM=<FIRMWARE_ROOT>/llvm/14.0.4/
        Copy to clipboard
- Phiên bản Python: Python 3.10
- Gói libffi6

**Các bước biên dịch**

1. Cài đặt trình biên dịch cho device tree:

sudo apt-get install device-tree-compiler
        export DTC=/usr/bin
        Copy to clipboard
2. Điều hướng đến thư mục sau:

cd <FIRMWARE_ROOT>/qualcomm-linux-spf-1-0_ap_standard_oem_nm-qimpsdk/BOOT.MXF.1.0.c1/
        Copy to clipboard
3. Cài đặt phần phụ thuộc:

python -m pip install -r boot_images/boot_tools/dtschema_tools/oss/requirements.txt
        pip install json-schema-for-humans
        Copy to clipboard
4. Dọn dẹp bản build:

python -u boot_images/boot_tools/buildex.py -t lemans,QcomToolsPkg - v LAA -r RELEASE --build_flags=cleanall
        Copy to clipboard
5. Biên dịch tệp ảnh:

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

Ghi chú

Đối với các bản build biến thể gỡ lỗi, hãy thay `RELEASE` bằng `DEBUG`.

Firmware Qualcomm TEE

**Công cụ cần thiết**

- Phiên bản trình biên dịch: LLVM 16.0.7
- Phiên bản Python: Python 3.10

**Các bước biên dịch**

1. Cài đặt 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. Dọn dẹp bản build:

python build_all.py -b TZ.XF.5.0 CHIPSET=lemans --cfg=build_config_deploy_lemans.xml --clean
        Copy to clipboard
3. Biên dịch tệp ảnh:

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

Firmware AOP

**Công cụ cần thiết**

- Phiên bản trình biên dịch: LLVM 14.0.4
- Phiên bản Python: Python 3.10

**Các bước biên dịch**

1. Điều hướng đến thư mục sau:

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. Dọn dẹp bản build:

./build_lemansau.sh -c -l <FIRMWARE_ROOT>/llvm/14.0.4/
        Copy to clipboard
3. Biên dịch tệp ảnh:

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

Firmware CPUCP

Firmware CPUCP được phát hành dưới dạng tệp thực thi và không cần biên dịch lại.

Firmware CPUSYS.VM

Firmware CPUSYS.VM được phát hành dưới dạng tệp thực thi và không cần biên dịch lại.

Firmware BTFM

Firmware BTFM được phát hành dưới dạng tệp thực thi và không cần biên dịch lại.

Firmware WLAN

Firmware WLAN được phát hành dưới dạng tệp thực thi và không cần biên dịch lại.

Tạo bản biên dịch sẵn của firmware (gồm các tệp thực thi quan trọng cho khởi động và firmware được chia tách)

Tạo một tệp thực thi firmware tích hợp từ các thành phần riêng lẻ mà bạn đã biên dịch:

Ghi chú

Áp dụng tất cả các thay đổi từ phần *Thông tin bổ sung* trong [Release Notes](https://docs.qualcomm.com/bundle/publicresource/topics/RNO-250403001134/ReleaseNote.html#additional-information).

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

Ghi chú

- Bản biên dịch sẵn của firmware sẽ thành công nếu các tệp zip sau được tạo trong thư mục `<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`

Điều kiện tiên quyết

- Đảm bảo rằng shell đang dùng là `bash`.

echo $0
        Copy to clipboard

    Đầu ra mong đợi của lệnh này phải là `bash`. Nếu không, hãy chuyển sang shell bash:

bash
        Copy to clipboard
- Cài đặt gói libffi6 bằng các lệnh sau. Đây là điều kiện bắt buộc đối với trình biên dịch QAIC, để tạo header và tệp mã nguồn từ các tệp 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
- Cài đặt LLVM để biên dịch AOP, Qualcomm TEE và các thành phần khởi động:

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
- Xuất biến `SECTOOLS` và biên dịch firmware (`<FIRMWARE_ROOT>/qualcomm-linux-spf-1-0_ap_standard_oem_nm-qimpsdk` là thư mục cấp cao nhất):

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
- Cài đặt và thiết lập 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

Ghi chú

Đặt biến môi trường HEXAGON\_ROOT thành đường dẫn nơi cài đặt Hexagon SDK. Để thay đổi đường dẫn cài đặt khi dùng `qpm-cli`, hãy xem [Thay đổi đường dẫn cài đặt công cụ Hexagon](https://docs.qualcomm.com/doc/80-70018-254V/topic/how_to.html#change-hex-tool-install-path).

Biên dịch DSP

**Công cụ cần thiết**

- Phiên bản trình biên dịch: Hexagon 8.6.05.2 và 8.7.02.1
- Phiên bản Python: Python 3.8.2

**Các bước biên dịch**

1. Cài đặt trình biên dịch cho device tree:

sudo apt-get install device-tree-compiler
        export DTC_PATH=/usr/bin
        Copy to clipboard
2. Cài đặt phần phụ thuộc:

pip install ruamel.yaml==0.17.17
        pip install dtschema==2021.10
        pip install jsonschema==4.0.0
        Copy to clipboard
3. Điều hướng đến thư mục sau:

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. Dọn dẹp bản build:

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. Biên dịch tệp ảnh:

python ./build_variant.py lemans.adsp.prod && python ./build_variant.py monaco.cdsp0.prod && python ./build_variant.py lemans.gpdsp0.prod
        Copy to clipboard

Biên dịch thành phần khởi động

**Công cụ cần thiết**

- Phiên bản trình biên dịch: LLVM phải được cập nhật lên phiên bản 14.0.4

export LLVM=<FIRMWARE_ROOT>/llvm/14.0.4/
        Copy to clipboard
- Phiên bản Python: Python 3.10
- Gói libffi6

**Các bước biên dịch**

1. Cài đặt trình biên dịch cho device tree:

sudo apt-get install device-tree-compiler
        export DTC=/usr/bin
        Copy to clipboard
2. Điều hướng đến thư mục sau:

cd <FIRMWARE_ROOT>/qualcomm-linux-spf-1-0_ap_standard_oem_nm-qimpsdk/BOOT.MXF.1.0.c1/
        Copy to clipboard
3. Cài đặt phần phụ thuộc:

python -m pip install -r boot_images/boot_tools/dtschema_tools/oss/requirements.txt
        pip install json-schema-for-humans
        Copy to clipboard
4. Dọn dẹp bản build:

python -u boot_images/boot_tools/buildex.py -t monaco,QcomToolsPkg - v LAA -r RELEASE --build_flags=cleanall
        Copy to clipboard
5. Biên dịch tệp ảnh:

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

Ghi chú

Đối với các bản build biến thể gỡ lỗi, hãy thay `RELEASE` bằng `DEBUG`.

Firmware Qualcomm TEE

**Công cụ cần thiết**

- Phiên bản trình biên dịch: LLVM 16.0.7
- Phiên bản Python: Python 3.10

**Các bước biên dịch**

1. Cài đặt 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. Dọn dẹp bản build:

python build_all.py -b TZ.XF.5.0 CHIPSET=monaco --cfg=build_config_deploy_monaco.xml --clean
        Copy to clipboard
3. Biên dịch tệp ảnh:

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

Firmware AOP

**Công cụ cần thiết**

- Phiên bản trình biên dịch: LLVM 14.0.4
- Phiên bản Python: Python 3.10

**Các bước biên dịch**

1. Điều hướng đến thư mục sau:

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. Dọn dẹp bản build:

./build_monaco.sh -c -l <FIRMWARE_ROOT>/llvm/14.0.4/
        Copy to clipboard
3. Biên dịch tệp ảnh:

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

Firmware CPUCP

Firmware CPUCP được phát hành dưới dạng tệp thực thi và không cần biên dịch lại.

Firmware CPUSYS.VM

Firmware CPUSYS.VM được phát hành dưới dạng tệp thực thi và không cần biên dịch lại.

Firmware BTFM

Firmware BTFM được phát hành dưới dạng tệp thực thi và không cần biên dịch lại.

Firmware WLAN

Firmware WLAN được phát hành dưới dạng tệp thực thi và không cần biên dịch lại.

Tạo bản biên dịch sẵn của firmware (gồm các tệp thực thi quan trọng cho khởi động và firmware được chia tách)

Tạo một tệp thực thi firmware tích hợp từ các thành phần riêng lẻ mà bạn đã biên dịch:

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

Ghi chú

Bản biên dịch sẵn của firmware sẽ thành công nếu các tệp zip sau được tạo trong thư mục `<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`

### Biên dịch tệp ảnh BSP kèm thành phần bổ sung

Bản build ảnh BSP có các thành phần phần mềm hỗ trợ thiết bị Qualcomm và các tính năng phần mềm  mở rộng áp dụng cho Qualcomm SoC. Bản build này bao gồm cấu hình tham khảo cho Qualcomm development kits. Lớp `meta-qcom-extras` cho phép biên dịch từ mã nguồn đối với một số thành phần, thường chỉ có sẵn dưới dạng tệp thực thi.

Để biết thêm chi tiết, hãy xem [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. Tải xuống Qualcomm Yocto và các lớp hỗ trợ kèm thành phần bổ sung:

# 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

Ghi chú

Để biết thông tin về `<manifest release tag>` và `<meta-qcom-extras release tag>`, hãy xem phần *Phiên bản phát hành quan trọng* trong [Release Notes](https://docs.qualcomm.com/bundle/publicresource/topics/RNO-250403001134/).
2. Thiết lập biên dịch 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. Thiết lập môi trường biên dịch:

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

Ghi chú

Để biết các giá trị tham số `MACHINE`, hãy xem [Release Notes](https://docs.qualcomm.com/bundle/publicresource/topics/RNO-250403001134/).
4. Biên dịch Yocto:

bitbake qcom-multimedia-image
        Copy to clipboard

Ghi chú

Dọn dẹp Yocto:

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

    Sau khi  biên dịch thành công, hãy kiểm tra xem tệp `system.img` có nằm trong thư mục `<workspace_path>/build-qcom-wayland/tmp-glibc/deploy/images/qcs6490-rb3gen2-vision-kit/qcom-multimedia-image` hay không:

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 bản build đã tạo dựa trên tài liệu [Flash ảnh phần mềm](https://docs.qualcomm.com/doc/80-70018-254V/topic/flash_images.html).

### Biên dịch tệp ảnh QIMP SDK kèm thành phần bổ sung

QIMP SDK là tập hợp gồm 4 SDK chức năng độc lập, gồm Qualcomm IM SDK, Qualcomm Neural Processing SDK, Qualcomm AI Engine Direct SDK và LiteRT. SDK này cũng bao gồm các ứng dụng tham khảo mà bạn có thể dùng để phát triển các ứng dụng cụ thể. Lớp `meta-qcom-extras` cho phép biên dịch từ mã nguồn đối với một số thành phần, thường chỉ có sẵn dưới dạng tệp thực thi.

Để biết thêm chi tiết, hãy xem [Hướng dẫn bắt đầu nhanh về QIMP SDK](https://docs.qualcomm.com/bundle/publicresource/topics/80-70018-51).

1. Tải xuống lớp QIMP SDK, lớp Qualcomm Yocto và các lớp hỗ trợ kèm thành phần bổ sung:

# 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

Ghi chú

Để biết thông tin về `<manifest release tag>` và `<meta-qcom-extras release tag>`, hãy xem phần *Phiên bản phát hành quan trọng* trong [Release Notes](https://docs.qualcomm.com/bundle/publicresource/topics/RNO-250403001134/).
2. Thiết lập biên dịch 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. Thiết lập môi trường biên dịch:

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

Ghi chú

Để biết các giá trị tham số `MACHINE`, hãy xem [Release Notes](https://docs.qualcomm.com/bundle/publicresource/topics/RNO-250403001134/).
4. Biên dịch QIMP SDK:

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

Ghi chú

Dọn dẹp 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

    Sau khi  biên dịch thành công, hãy kiểm tra xem tệp `system.img` có nằm trong thư mục `<workspace_path>/build-qcom-wayland/tmp-glibc/deploy/images/qcs6490-rb3gen2-vision-kit/qcom-multimedia-image` hay không:

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 bản build đã tạo dựa trên tài liệu [Flash ảnh phần mềm](https://docs.qualcomm.com/doc/80-70018-254V/topic/flash_images.html).

### Biên dịch tệp ảnh QIRP SDK kèm thành phần bổ sung

QIRP SDK 2.0 là một tập hợp các thành phần cho phép bạn phát triển tính năng robot trên các bản phát hành Qualcomm Linux. Lớp `meta-qcom-extras` cho phép biên dịch từ mã nguồn đối với một số thành phần, thường chỉ có sẵn dưới dạng tệp thực thi.

Để biết thêm chi tiết, hãy xem [Hướng dẫn sử dụng QIRP SDK 2.0](https://docs.qualcomm.com/bundle/publicresource/topics/80-70018-265).

Ghi chú

Trước khi bắt đầu, hãy tải xuống firmware tương ứng cho QIRP SDK, ví dụ: `qualcomm-linux-spf-1-0_ap_standard_oem_nm-qirpsdk`.

1. Tải xuống lớp QIRP SDK, Qualcomm Yocto và các lớp hỗ trợ kèm thành phần bổ sung:

# 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

Ghi chú

Để biết thông tin về `<manifest release tag>`, `<meta-qcom-extras release tag>` và `<meta-qcom-qim-product-sdk release tag>`, hãy xem phần *Phiên bản phát hành quan trọng* trong [Release Notes](https://docs.qualcomm.com/bundle/publicresource/topics/RNO-240626095531/).
2. Thiết lập biên dịch 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. Biên dịch 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

Ghi chú

Để biết các giá trị tham số `MACHINE`, hãy xem [Release Notes](https://docs.qualcomm.com/bundle/publicresource/topics/RNO-250403001134/).

    Sau khi  biên dịch thành công, hãy kiểm tra xem các cấu phần phần mềm của bản build SDK QIRP có nằm ở các đường dẫn sau không:

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 bản build đã tạo dựa trên tài liệu [Flash ảnh phần mềm](https://docs.qualcomm.com/doc/80-70018-254V/topic/flash_images.html).

Last Published: Oct 23, 2025

[Previous Topic
Biên dịch với GitHub cho người dùng đã đăng ký](https://docs.qualcomm.com/bundle/publicresource/80-70018-254V/topics/build_from_source_github_intro.md) [Next Topic
Flash ảnh phần mềm](https://docs.qualcomm.com/bundle/publicresource/80-70018-254V/topics/flash_images.md)

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