# Qualcomm Linux 元數據層

以下各層表示 Qualcomm 板級支援套件 (BSP) 元數據：

- [meta-qcom](https://docs.qualcomm.com/doc/80-70020-27TC/topic/qualcomm_bsp_metadata_layers.html#meta-qcom-section)
- [meta-qcom-hwe](https://docs.qualcomm.com/doc/80-70020-27TC/topic/qualcomm_bsp_metadata_layers.html#meta-qcom-hwe-section)
- [meta-qcom-realtime](https://docs.qualcomm.com/doc/80-70020-27TC/topic/qualcomm_bsp_metadata_layers.html#meta-qcom-realtime-section)

下列層定義 `qcom-wayland` 參考發行版：

- [meta-qcom-distro](https://docs.qualcomm.com/doc/80-70020-27TC/topic/qualcomm_bsp_metadata_layers.html#meta-qcom-distro-section)

下列層定義選用的 Qualcomm IM SDK：

- [meta-qcom-qim-product-sdk](https://docs.qualcomm.com/doc/80-70020-27TC/topic/qualcomm_bsp_metadata_layers.html#meta-qcom-qim-product-sdk-section)

下列元數據層定義選用的 BSP：

- [meta-qcom-extras](https://docs.qualcomm.com/doc/80-70020-27TC/topic/qualcomm_bsp_metadata_layers.html#meta-qcom-extras-section)

## meta-qcom

`meta-qcom` 元數據層託管在 [git.yoctoproject.org](http://git.yoctoproject.org) ，並提供建置 Qualcomm OSS 的配方。軟體影像則使用 `meta-qcom` 層的下列配方建置。

| 配方 | 說明 |
| --- | --- |
| `recipes-devtools/qdl/qdl_git.bb` | Qualcomm 下載 (QDL) 燒錄工具與顯示 ID 05c6:9008的USB 裝置進行通訊，以上傳燒錄加載程式並使用此配方燒錄影像。 |
| `recipes-support/pd-mapper/pd-mapper_git.bb` | Qualcomm pd-mapper 是一項用於保護網域對應程式服務的實作。此服務負責設定及管理保護網域，確保應用程式與各種遠端處理器之間的安全通訊。 |
| `recipes-support/qrtr/qrtr_git.bb` | Qualcomm 路由器 (QRTR) 是一種用於 Qualcomm 系統單晶片的行程間通訊機制。利用使用者空間中的套接字程式設計介面，可在系統中的不同處理器之間通訊，例如應用程式處理器與數據機。 |
| `recipes-support/initrdscripts/initramfs-module-copy-modules_1.0.bb` | `initramfs-framework` 模組用於將核心模組從 `initramfs` 複製到 `rootfs`。 |

## meta-qcom-hwe

`meta-qcom-hwe` 元數據層可在 [GitHub](https://github.com/qualcomm-linux/meta-qcom-hwe/tree/scarthgap) 上使用。為啟用 Qualcomm 裝置提供額外的軟體支援。

備註

本指南使用可互換使用的 QCM6490 與 QCS6490 硬體晶片組。在 `meta-qcom-hwe/conf/machine/` 目錄中定義的 `qcs6490-rb3gen2-core-kit.conf` 和 `qcs6490-rb3gen2-vision-kit.conf` 機器組態檔案支援的 QCM6490、QCS6490 和 QCS5430 硬體晶片組。

- **BitBake 類**

    如需 BitBake 類別的介紹，請參閱 [類別](https://github.com/qualcomm-linux/meta-qcom-hwe/tree/scarthgap/classes) 。

    | 檔案 | 說明 |
    | --- | --- |
    | `classes/qprebuilt.bbclass` | 執行使用預建套件的邏輯，而非擷取和編譯原始碼。如為任何繼承 **qprebuilt** 的配方，此類別將解壓縮 <cite>tar.gz</cite> 壓縮檔中的二進位檔，並透過 BitBake 任務將這些二進位檔封裝。 |
    | `classes/qmodule.bbclass` | 預設情況下，Qualcomm BSP 在核心中透過啟用 `CONFIG_MODULE_SIG_FORCE` 來強制簽署核心模組。不過，某些外部模組可能未正確簽署。為了避免模組加載問題，`qmodule.bbclass` 會檢查提供核心模組的所有套件並簽署未簽署的模組。 |
    | `classes/image_types_ota_sdboot.bbclass` | 此 BitBake 類別根據 OSTree OTA 升級系統的需求實作映像建立。 |
- **MACHINE 配置文件**

    Qualcomm Linux 機器組態檔案可在 [GitHub](https://github.com/qualcomm-linux/meta-qcom-hwe/tree/scarthgap/conf/machine) 上取得。

    位於 `meta-qcom-hwe/conf/machine/include` 目錄中的檔案定義並設定所需的 BitBake 變數，這些變數可供 Qualcomm BSP 定義的機器組態共用。下表提供這些檔案的概覽。

    | 檔案 | 說明 |
    | --- | --- |
    | `meta-qcom-hwe/conf/machine/include/qcom-base.inc` | 此檔案設定在 Qualcomm BSP 中定義的所有機器組態共用的 BitBake 變數。例如 `SOC_ARCH` 、 `PREFERRED_PROVIDER` 和 `IMAGE_FSTYPES`。 |
    | `meta-qcom-hwe/conf/machine/include/qcom-qcs6490.inc` | 此檔案將 `SOC_FAMILY` 變數設為 `qcm6490`。這允許 Qualcomm Linux 配方使用 `qcm6490` OVERRIDE 實作針對 Qualcomm BSP 的變更。此檔案也定義了基於 QCS6490 的所有 Qualcomm 開發套件共用的組態變數。 |
    | `meta-qcom-hwe/conf/machine/include/qcom-qcs9100.inc` | 此檔案將 `SOC_FAMILY` 變數設為 `qcs9100`。這允許 Qualcomm Linux 配方使用 `qcs9100` OVERRIDE 實作針對 Qualcomm BSP 的變更。此檔案也定義了基於 QCS9100 的所有 Qualcomm 開發套件共用的組態變數。 |
    | `meta-qcom-hwe/conf/machine/include/qcom-qcs8300.inc` | 此檔案將 `SOC_FAMILY` 變數設為 `qcs8300`。這允許 Qualcomm Linux 配方使用 `qcs8300` OVERRIDE 實作針對 Qualcomm BSP 的變更。此檔案也定義了基於 QCS8300 的所有 Qualcomm 開發套件共用的組態變數。 |
    | `meta-qcom-hwe/conf/machine/include/qcom-qcs615.inc` | 此檔案設定 `SOC_FAMILY` 變數為 `qcs615`。這允許 Qualcomm Linux 配方使用 `qcs615` OVERRIDE 來實現 Qualcomm BSP 的特定變更。此檔案也定義了基於 QCS615 的所有 Qualcomm 開發套件共用的組態變數。 |

    **基於 QCS6490 的開發套件的機器配置文件**

備註

如為 Qualcomm Linux 1.2 及後續版本，您必須使用下表中新的機器組態檔案。Qualcomm Linux 1.2 已取代 Qualcomm Linux 1.1 中先前的機器組態檔案 `qcm6490.conf`。

    | 配置檔案 | 說明 |
    | --- | --- |
    | `conf/machine/qcm6490-idp.conf` | 此檔案適用於整合開發平台 (IDP) 與 QCM6490。 |
    | `conf/machine/qcs6490-rb3gen2-core-kit.conf` | 此檔案適用於搭載 QCS6490 SoC 的 Qualcomm Dragonwing^™^ RB3 Gen 2 核心開發套件。 |
    | `conf/machine/qcs6490-rb3gen2-vision-kit.conf` | 此檔案適用於搭載 QCS6490 SoC 的 Qualcomm^®^ RB3 Gen 2 視覺開發套件，其中包含低 / 高解析度 CSI 攝影機。 |
    | `conf/machine/qcs6490-rb3gen2-industrial-kit.conf` | 此檔案適用於搭載 QCS6490 SoC 的 Qualcomm Dragonwing^™^ RB3 Gen 2 工業開發套件。 |

    **基於 IQ-9075 和 IQ-9100 的開發套件的機器配置文件**

    | 配置檔案 | 說明 |
    | --- | --- |
    | `conf/machine/qcs9100-ride-sx.conf` | 此檔案適用於搭載 IQ-9100 SoC 的 Qualcomm^®^ IQ-9 Beta 評估套件 (EVK)。 |
    | `conf/machine/qcs9075-ride-sx.conf` | 此檔案適用於搭載 IQ-9075 SoC 的 Qualcomm IQ-9 Beta EVK。 |
    | `conf/machine/qcs9075-iq-9075-evk.conf` | 此檔案適用於搭載 IQ-9075 SoC 的 Qualcomm Dragonwing^™^ IQ-9075 EVK。 |
    | `conf/machine/qcs9075-iq-9075-evk-ifp.conf` | 此檔案適用於搭載 IQ-9075 SoC 的 Dragonwing IQ-9075 EVK。 |

    **基於 IQ-8275 的開發套件的機器配置文件**

    | 配置檔案 | 說明 |
    | --- | --- |
    | `conf/machine/qcs8300-ride-sx.conf` | 此檔案適用於搭載 IQ-8300 SoC 的 Qualcomm^®^ IQ-8 Beta EVK。 |
    | `qcs8275-iq-8275-evk.conf` | 此檔案適用於搭載 IQ-8275 SoC 的 Qualcomm Dragonwing^™^ IQ-8275 EVK。 |
    | `qcs8275-iq-8275-evk-ifp.conf` | 此檔案適用於搭載 IQ-8275 SoC 的 Dragonwing^™^ IQ-8275 EVK。 |

    **基於 IQ-615 的開發套件的機器配置文件**

    | 配置檔案 | 說明 |
    | --- | --- |
    | `conf/machine/qcs615-adp-air.conf` | 此檔案適用於搭載 IQ-615 SoC 的 Qualcomm Dragonwing^™^ IQ-615 EVK。 |

    在 `meta-qcom-hwe` 中 **使用 OVERRIDES**

    Qualcomm BSP 使用 BitBake OVERRIDES 來定義兩種不同的 BSP 建置方法。

    元數據層從 `meta-qcom-hwe/conf/machine/include/qcom-base.inc` 文件中的 `QCOM_SELECTED_BSP` 派生出 `MACHINEOVERRIDES`，如下所示：

MACHINEOVERRIDES =. "qcom-${QCOM_SELECTED_BSP}-bsp:"
        Copy to clipboard

    `meta-qcom-hwe` 中的兩個 MACHINEOVERRIDES 是 `qcom-custom-bsp` 和 `qcom-base-bsp`。這些 OVERRIDES 被 `meta-qcom-hwe` 元數據層內的機器組態檔、配方及其他組態檔使用。組態檔和配方使用這些 OVERRIDE 構件有條件地設定變數並視需要附加任務。

    配方和組態檔案使用 MACHINEOVERRIDES 決定了最終影像是在建置時根據有效的 OVERRIDE 組成 Qualcomm 自訂 BSP 軟體組件還是上游軟體元件。

    例如，`egl`、`libgl`、`libgles1` 和 `libgles2` 的 PREFERRED\_PROVIDER 設置如下：

    | 有效的 OVERRIDE | `egl`、`libgl`、`libgles1` 和 `libgles2` 的 PREFERRED\_PROVIDER |
    | --- | --- |
    | `qcom-custom-bsp` | `adreno` |
    | `qcom-base-bsp` | `mesa` |

    在 BitBake 程式碼片段中，OVERRIDES 有條件設定變數如下：

# Provider for Graphics Library.
        # qcom-base-bsp uses 'mesa' as GL provider
        GL_PROVIDER ?= "adreno"
        GL_PROVIDER:qcom-base-bsp ?= "mesa"
        
        PREFERRED_PROVIDER_virtual/egl      = "${GL_PROVIDER}"
        PREFERRED_PROVIDER_virtual/libgl    = "${GL_PROVIDER}"
        PREFERRED_PROVIDER_virtual/libgles1 = "${GL_PROVIDER}"
        PREFERRED_PROVIDER_virtual/libgles2 = "${GL_PROVIDER}"
        
        PREFERRED_PROVIDER_virtual/egl-native      = "mesa-native"
        PREFERRED_PROVIDER_virtual/libgl-native    = "mesa-native"
        PREFERRED_PROVIDER_virtual/libgles1-native = "mesa-native"
        PREFERRED_PROVIDER_virtual/libgles2-native = "mesa-native"
        Copy to clipboard

備註

在此版本中，`qcom-base-bsp` OVERRIDE 僅為 `qcs9100-ride-sx.conf` 和 `qcs8300-ride-sx.conf` 進行建置。

> 
> 
> - **核心命令行**
> 
> 
>     `meta-qcom-hwe/conf/machine/include/qcom-qcs6490.inc`、`meta-qcom-hwe/conf/machine/include/qcom-qcs9100.inc` 和 `meta-qcom-hwe/conf/machine/include/qcom-qcs8300.inc` 包含文件使用 `KERNEL_CMDLINE_EXTRA` 變數來設定核心命令行參數，如下所示：
> 
> 
> Tab qcom-qcs6490.inc
> Tab qcom-qcs9100.inc
> Tab qcom-qcs8300.inc
> 
> 以下程式碼片段來自 `qcom-qcs6490.inc` 文件：
> 
> 
> # Additional Kernel cmdline parameters for debug builds
>         DBG_CMDLINE = "${@oe.utils.conditional('DEBUG_BUILD','1','earlycon page_owner=on qcom_scm.download_mode=1 slub_debug=FZP,zs_handle,zspage;FZPU','',d)}"
>         
>         KERNEL_CMDLINE_EXTRA ?= "pcie_pme=nomsi kernel.sched_pelt_multiplier=4 rcupdate.rcu_expedited=1 rcu_nocbs=0-7 kpti=off kasan=off kasan.stacktrace=off no-steal-acc ${DBG_CMDLINE} swiotlb=128 mitigations=auto net.ifnames=0"
>         Copy to clipboard
> 
> 以下程式碼片段來自 `qcom-qcs9100.inc` 文件：
> 
> 
> # Additional Kernel cmdline parameters for debug builds
>         DBG_CMDLINE = "${@oe.utils.conditional('DEBUG_BUILD','1','earlycon reboot=panic_warm page_owner=on qcom_scm.download_mode=1 slub_debug=FZP,zs_handle,zspage;FZPU','',d)}"
>         
>         KERNEL_CMDLINE_EXTRA ?= "pcie_pme=nomsi net.ifnames=0 pci=noaer kpti=off kasan=off kasan.stacktrace=off swiotlb=128 ${DBG_CMDLINE} mitigations=auto kernel.sched_pelt_multiplier=4 rcupdate.rcu_expedited=1 rcu_nocbs=0-7 no-steal-acc vfio_iommu_type1.allow_unsafe_interrupts=1 fw_devlink.strict=1"
>         Copy to clipboard
> 
> 以下程式碼片段來自 `qcom-qcs8300.inc` 文件：
> 
> 
> # Additional Kernel cmdline parameters for debug builds
>         DBG_CMDLINE = "${@oe.utils.conditional('DEBUG_BUILD','1','earlycon reboot=panic_warm page_owner=on qcom_scm.download_mode=1 slub_debug=FZP,zs_handle,zspage;FZPU','',d)}"
>         
>         KERNEL_CMDLINE_EXTRA ?= "pcie_pme=nomsi net.ifnames=0 pci=noaer kpti=off kasan=off kasan.stacktrace=off swiotlb=128 ${DBG_CMDLINE} mitigations=auto kernel.sched_pelt_multiplier=4 rcupdate.rcu_expedited=1 rcu_nocbs=0-7 no-steal-acc arm64.nopauth  fw_devlink.strict=1"
>         Copy to clipboard
> - **包含 DTB**
> 
> 
>     有條件使用 OVERRIDES 機制設定 `KERNEL_DEVICETREE` 變數，確保包括正確的裝置樹狀結構二進位 (DTB)。這是在 `meta-qcom-hwe/conf/machine` 中的各單獨機器組態檔案中管理。
> 
> 
>     在機器組態檔案中，為 `custom` 和 `base` 變體分別設定 `KERNEL_DEVICETREE` 變數。來自 `conf/machine/qcs9100-ride-sx.conf` 的下列範例顯示機器組態檔案如何選擇 DTB：
> 
> 
> Tab linux-qcom-base
> Tab linux-qcom-custom
> 
> 以下程式碼塊顯示了如何為 `linux-qcom-base` 設定 `KERNEL_DEVICETREE`，讓 `base` 變體使用上游的 DTB。
> 
> 
> KERNEL_DEVICETREE:pn-linux-qcom-base = " \
>                              qcom/qcs9100-ride.dtb \
>                              qcom/qcs9100-ride-r3.dtb \
>                              qcom/sa8775p-ride.dtb \
>                              qcom/sa8775p-ride-r3.dtb \
>                              "
>         Copy to clipboard
> 
> 以下程式碼塊顯示了如何為 `linux-qcom-custom` 設定 `KERNEL_DEVICETREE`，讓 `custom` 變體使用上游的 DTB。
> 
> 
> KERNEL_DEVICETREE:pn-linux-qcom-custom = " \
>                              qcom/qcs9100-addons-ride.dtb \
>                              qcom/qcs9100-addons-ride-r3.dtb \
>                              qcom/sa8775p-addons-ride.dtb \
>                              qcom/sa8775p-addons-ride-r3.dtb \
>                              "
>         Copy to clipboard
> - **包含其他DTBO**
> 
> 
>     要在核心設備樹上覆蓋額外的設備樹覆蓋 (DTBO) ，請使用 `KERNEL_TECH_DTBOS` 變數列出 DTBO 的名稱。
> 
> 
> 備註
> 
> 
> Qualcomm Linux 僅支援 `custom` 變體的設備樹二進制覆蓋。
> 
> 
>     以下來自 `qcs9100-ride-sx.conf` 的範例顯示了 DTBOs 的使用方式。
> 
> 
> KERNEL_TECH_DTBOS[sa8775p-addons-ride] = " \
>            sa8775p-video.dtbo qcs9100-graphics.dtbo \
>            qcs9100-ride-sx-camera.dtbo \
>            "
>         KERNEL_TECH_DTBOS[sa8775p-addons-ride-r3] = " \
>            sa8775p-video.dtbo qcs9100-graphics.dtbo \
>            qcs9100-ride-sx-camera.dtbo \
>            "
>         
>         KERNEL_TECH_DTBOS[qcs9100-addons-ride] = " \
>            sa8775p-video.dtbo qcs9100-graphics.dtbo \
>            qcs9100-ride-sx-camera.dtbo \
>            "
>         
>         KERNEL_TECH_DTBOS[qcs9100-addons-ride-r3] = " \
>            sa8775p-video.dtbo qcs9100-graphics.dtbo \
>            qcs9100-ride-sx-camera.dtbo \
>            "
>         
>         KERNEL_TECH_DTBO_PROVIDERS = "\
>            qcom-graphicsdevicetree \
>            qcom-videodtb \
>            cameradtb \
>            "
>         Copy to clipboard

- **韌體配方**

    Qualcomm Linux 韌體配方檔案可在 [GitHub](https://github.com/qualcomm-linux/meta-qcom-hwe/tree/scarthgap/recipes-firmware) 上取得。Qualcomm Linux 原始碼同步後，韌體配方位於 `<workspace>/layers/meta-qcom-hwe/recipes-firmware/firmware` 目錄中。

    - **關鍵啟動二進位文件**

        需要關鍵啟動韌體映像才能在裝置上啟動核心。以下韌體配方提供硬體 SoC 專用啟動韌體。

        | 韌體配方 | 說明 |
        | --- | --- |
        | `firmware-qcom-bootbins_1.0.bb` | 為相容目標處理關鍵啟動韌體二進位檔的擷取、解壓縮和部署。`QCM6490_bootbinaries.zip` 、 `QCS9100_bootbinaries.zip` 和 `QCS8300_bootbinaries.zip` 檔案提供 QCS6490、QCS9075 與 QCS8300 架構機器所需的啟動韌體。 |

        產生建置檔後，這些 zip 檔案中的韌體二進位檔可在下列目錄中進行燒錄：

        `<workspace>/build-qcom-wayland/tmp-glibc/deploy/images/<machine-name>/<image-name>/`
    - **子系統韌體二進位檔**

        Qualcomm Linux 包含在相應子系統上加載與執行的韌體二進位檔。隨著 Qualcomm 硬體晶片組啟動，各個子系統在完成重置後執行韌體。

        | 韌體配方 | 說明 |
        | --- | --- |
        | `firmware-qcom-hlosfw_1.0.bb` | 處理子系統韌體二進位檔的擷取、解壓縮與安裝，如 aDSP、cDSP、數據機與 WLAN。`QCM6490_fw.zip` 、 `QCS9100_fw.zip` 和 `QCS8300_fw.zip` 檔案為 QCM6490、QCS9075 及 QCS8300 架構機器封裝韌體檔案 |

        `firmware-qcom-hlosfw_1.0.bb` 配方執行以下操作：

> 
> 
> 1. 根據 SRC\_URI 從遠端伺服器獲取子系統韌體二進位文件。
>         2. 解壓縮 zip 文件。
>         3. 在 `rootfs` 中安裝韌體。
    - **DSP 庫**

        使用者空間公用程式是指 DSP 函式庫，必須存在於 `rootfs` 映像中。以下韌體配方提供硬體 SoC 專用 DSP 函式庫：

        | 韌體配方 | 說明 |
        | --- | --- |
        | `firmware-qcom-dspso_1.0.bb` | 為 DSP 程式庫處理擷取、解壓縮及安裝。`QCM6490_dspso.zip` 、 `QCS9100_dspso.zip` 和 `QCS8300_dspso.zip` zip 檔為 QCM6490、QCS9075 及 QCS8300 架構機器封裝程式庫。 |

        `firmware-qcom-dspso_1.0.bb` 配方執行以下操作：

> 
> 
> 1. 根據 SRC\_URI 從遠端伺服器獲取 DSP 庫。
>         2. 解壓縮 zip 文件。
>         3. 在 `rootfs` 中安裝 DSP 庫。
    - **安裝開機、子系統和 dspso**

        建置 Qualcomm Linux 時，建置系統會使用韌體配方根據在機器組態檔中設定的 `MACHINE_EXTRA_RDEPENDS` 組態變數來部署預建韌體。例如，在 `qcom-qcs6490.inc` 中，可看到 `MACHINE_EXTRA_RDEPENDS` 變數中包含 `packagegroup-firmware-qcm6490`：

MACHINE_EXTRA_RDEPENDS += " \
               packagegroup-firmware-qcm6490 \
               "
            Copy to clipboard

備註

`packagegroup-firmware-qcm6490` 配方位於 `<workspace>/layers/meta-qcom-hwe/recipes-firmware/packagegroups/` 目錄中。它將韌體配方分組以產生映像。

        當 Qualcomm Linux 被建置時，根據機器配置和軟體包組配方文件中的配置，會建置來自 `<workspace>/layers/meta-qcom-hwe/recipes-firmware/firmware` 目錄中的相應韌體配方。
- **核心配方**

    Qualcomm Linux 使用的 Qualcomm Linux 核心配方位於 `<workspace>/layers/meta-qcom-hwe/recipes-kernel/linux`。

    Qualcomm Linux 支援長期支援 (LTS) Qualcomm Linux 核心 v6.6.x。在 `meta-qcom-hwe` 層中，共有兩個不同的核心配方：

    - `linux-qcom-custom_6.6.bb` 配方支援 `custom` BSP 並從托管在 `git.codelinaro.org` 的 `qcom.git` 獲取核心來源。
    - `linux-qcom-base_6.6.bb` 配方支援 `base` BSP 並從托管在 `git.kernel.org` 的 `linux.git` 獲取核心來源。

Tab linux-qcom-custom\_6.6.bb
Tab linux-qcom-base\_6.6.bb

inherit kernel sota
        
        COMPATIBLE_MACHINE = "(qcom)"
        
        SRCPROJECT = "git://git.codelinaro.org/clo/la/kernel/qcom.git;protocol=https"
        SRCBRANCH  = "kernel.qclinux.1.0.r1-rel"
        SRCREV     = "d3ed32bf7ee64db22653833d4c3d9a80dd76896d"
        
        SRC_URI = "${SRCPROJECT};branch=${SRCBRANCH};destsuffix=kernel \
                 ${@bb.utils.contains('DISTRO_FEATURES', 'selinux', ' file://selinux.cfg', '', d)} \
                 ${@bb.utils.contains('DISTRO_FEATURES', 'selinux', ' file://selinux_debug.cfg', '', d)} \
                 "
        
        S = "${WORKDIR}/kernel"
        
        KERNEL_CONFIG ??= "qcom_defconfig"
        Copy to clipboard

inherit kernel sota
        
        COMPATIBLE_MACHINE = "(qcom)"
        
        SRC_URI = " git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git;protocol=https;branch=linux-6.6.y \
                    file://qcom.cfg \
                    file://vm-configs/qcom_vm.cfg \
                    file://qcom_debug.cfg \
                    "
        # Apply qcom patches
        require ${BPN}-${PV}/configs.inc
        require ${BPN}-${PV}/devicetree.inc
        require ${BPN}-${PV}/drivers.inc
        require ${BPN}-${PV}/dt-bindings.inc
        require ${BPN}-${PV}/tools.inc
        
        KERNEL_CONFIG_FRAGMENTS:append = " ${WORKDIR}/qcom.cfg"
        KERNEL_CONFIG_FRAGMENTS:append = " ${@oe.utils.vartrue('DEBUG_BUILD', '${WORKDIR}/qcom_debug.cfg', '', d)}"
        
        S = "${WORKDIR}/git"
        Copy to clipboard

    機器組態檔使用 OVERRIDES 選擇對應的核心配方變體。選擇 `base` 變體時，`qcom-base.inc` 檔案會選擇 `linux-qcom-base`。如果選擇 `custom` 變體，則會使用 `linux-qcom-custom` 配方來建置核心，如以下片段所示。

PREFERRED_PROVIDER_virtual/kernel ?= "linux-qcom-custom"
        PREFERRED_PROVIDER_virtual/kernel:qcom-base-bsp ?= "linux-qcom-base"
        Copy to clipboard

    **核心配置**

    Qualcomm Linux 核心配方對於 `base` 和 `custom` 變體使用了一套不同的核心配置和片段。

    | 變體 | 配置檔案和片段文件 |
    | --- | --- |
    | `base` | `defconfig`、`qcom.cfg`、`qcom_vm.cfg`、`qcom_debug.cfg` |
    | `custom` | `qcom_defconfig`、`qcom_addons.config`、`selinux.cfg`、`qcom_debug.config`、`qcom_addons_debug.config`、`selinux_debug.cfg` |

    下表提供用於 `custom` 變體的 `defconfig` 和 `fragments` 說明：

    | 核心配置片段文件 | 說明 |
    | --- | --- |
    | `<kernel_src>/arch/arm64/configs/qcom_defconfig` | 預設組態符合產品/效能需求的要求。 |
    | `<kernel_src>/arch/arm64/configs/qcom_debug.config` | 除錯配置片段文件 |
    | `<kernel_src>/arch/arm64/configs/qcom_addons.config` | 在上游對齊的基礎上額外增加的 Qualcomm 增值功能 |
    | `<kernel_src>/arch/arm64/configs/qcom_addons_debug.config` | Qualcomm 除錯啟用 |

    Qualcomm Linux `custom` 變體配方 `linux-qcom-custom_6.6.bb` 進一步支援 `perf` 和 `debug` 變體。使用 `linux-qcom-custom_6.6.bb` 建置核心的預設方法為 `perf`。

    | 建置變體 | Defconfig/config fragments |
    | --- | --- |
    | `Perf` | <ul class="simple"><br><li><p><code class="docutils literal notranslate"><span class="pre">arch/arm64/configs/qcom_defconfig</span></code></p></li><br><li><p><code class="docutils literal notranslate"><span class="pre">arch/arm64/configs/qcom_addons.config</span></code></p></li><br></ul> |
    | `Debug` | <ul class="simple"><br><li><p><code class="docutils literal notranslate"><span class="pre">arch/arm64/configs/qcom_defconfig</span></code></p></li><br><li><p><code class="docutils literal notranslate"><span class="pre">/arch/arm64/configs/qcom_debug.config</span></code></p></li><br><li><p><code class="docutils literal notranslate"><span class="pre">arch/arm64/configs/qcom_addons.config</span></code></p></li><br><li><p><code class="docutils literal notranslate"><span class="pre">/arch/arm64/configs/qcom_addons_debug.config</span></code></p></li><br></ul> |

    要使用 `linux-qcom-custom_6.6.bb` 建置 debug 核心影像，請在使用 BitBake 命令建置影像的 shell 中將 DEBUG\_BUILD 設置為 1。

    此選擇在以下程式碼中有效：

KERNEL_CONFIG ??= "qcom_defconfig"
        
        KERNEL_CONFIG_FRAGMENTS:append = " ${S}/arch/arm64/configs/qcom_addons.config"
        KERNEL_CONFIG_FRAGMENTS:append = " ${@oe.utils.vartrue('DEBUG_BUILD', '${S}/arch/arm64/configs/qcom_debug.config', '', d)}"
        KERNEL_CONFIG_FRAGMENTS:append = " ${@oe.utils.vartrue('DEBUG_BUILD', '${S}/arch/arm64/configs/qcom_addons_debug.config', '', d)}"
        
        # Enable selinux support
        SELINUX_CFG = "${@oe.utils.vartrue('DEBUG_BUILD', 'selinux_debug.cfg', 'selinux.cfg', d)}"
        KERNEL_CONFIG_FRAGMENTS:append = " ${@bb.utils.contains('DISTRO_FEATURES', 'selinux', '${WORKDIR}/${SELINUX_CFG}', '', d)}"
        Copy to clipboard

    若要自動載入 Qualcomm 平台的核心模組，請更新 Qualcomm Linux 核心配方中的 KERNEL\_MODULE\_AUTOLOAD 變數。例如，自動載入 CoreSight 和 STM 模組，如下所示：

KERNEL_MODULE_AUTOLOAD += "coresight coresight-tmc coresight-funnel"
        KERNEL_MODULE_AUTOLOAD += "coresight-replicator coresight-etm4x coresight-stm"
        KERNEL_MODULE_AUTOLOAD += "coresight-cti coresight-tpdm coresight-tpda coresight-dummy"
        KERNEL_MODULE_AUTOLOAD += "coresight-remote-etm coresight-tgu"
        KERNEL_MODULE_AUTOLOAD += "stm_core stm_p_ost stm_console stm_heartbeat stm_ftrace "
        Copy to clipboard
- **授權**

    `meta-qcom-hwe` 中配方的授權列在 `<workspace>/meta-qcom-hwe/files/common-licenses`。

common-licenses/
        ├── BSD-3-Clause-Clear
        ├── GPLv2.0-with-linux-syscall-note
        └── Qualcomm-Technologies-Inc.-Proprietary
        Copy to clipboard

    Yocto 可根據映像建立而自動建立 SPDX SBOM 文件。若要啟用此功能，請繼承 `local.conf` 中的 `create-spdx` 類別，如下所示：

INHERIT += "create-spdx"
        Copy to clipboard

    繼承該類別後，可使用 BitBake 命令重建影像：

bitbake qcom-multimedia-image
        Copy to clipboard

    您可在下列目錄中找到 SPDX 輸出：

    - 對於每個配方，生成的文件可在 `tmp/deploy/spdx/<machine>` 目錄中找到。
    - 上方 SPDX 輸出文件位於 `tmp/deploy/images/MACHINE/<image-recipe>-<MACHINE>.spdx.json` 目錄中。

## meta-qcom-distro

此層為 Qualcomm Linux 提供參考發行版組態。此層定義了影像配方和套件群組。

- **BitBake 類**

    Qualcomm Linux 支援 SSH 和 UART 序列殼層以進行裝置存取。您可以選擇 SSH 或 UART 來存取裝置。您也可以使用 ADB 在 IP 介面故障時進行除錯，或傳輸大型檔案。

    下表介紹了 BitBake 類別，這些類可在 [類別](https://github.com/qualcomm-linux/meta-qcom-distro/tree/scarthgap/classes) 中取得。

    | BitBake 類 | 說明 |
    | --- | --- |
    | `image-adbd.bbclass` | `meta-qcom-distro` 中的 `image-adbd.bbclass` 類別會在映像中安裝 adbd。除非 `IMAGE_FEATURES` 包含 `enable-adbd` 功能，否則 adbd 精靈會保持停用。您可以手動從 `rootfs` 中移除 `/etc/usb-debugging-enabled` 以停用 adbd。 |
    | `image-qcom-deploy.bbclass` | 部署 `<workspace>/build-<distro>/tmp-glibc/deploy/images/<machine>/<image-name>` 中的映像檔。產生的映像被部署在 `<image-name>` 子目錄中。 |
- **分發版組態**

    下表介紹了發行版組態，這些組態可在 [GitHub](https://github.com/qualcomm-linux/meta-qcom-distro/tree/scarthgap/conf/distro) 中取得。

    | 發行版組態 | 說明 |
    | --- | --- |
    | `conf/distro/qcom-wayland.conf` | 此分發版組態檔案定義了 `qcom-wayland` 分發版。您可以在以下範例命令中使用 `qcom-wayland` 發行版：<br><br><br><br>> <br>> <br>> MACHINE=qcs6490-rb3gen2-core-kit DISTRO=qcom-wayland QCOM_SELECTED_BSP=base source setup-environment<br>>         Copy to clipboard<br><br><br><br>`meta-qcom-distro/conf/distro/include/qcom-base.inc` 組態定義通用 DISTRO\_FEATURES。`meta-qcom-distro/conf/distro/qcom-wayland.conf` 組態新增以下功能：<br><br><br><br>> <br>> <br>> <ul class="simple"><br>> <li><p><code class="docutils literal notranslate"><span class="pre">wayland</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">vulkan</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">opengl</span></code></p></li><br>> </ul><br><br><br><br>Yocto 專案說明文件在 [發行版功能](https://docs.yoctoproject.org/5.0.6/singleindex.html#distro-features) 定義這些分發版功能。 |
    | `conf/distro/include/qcom-base.inc` | INIT\_MANAGER 設為 `systemd`。如需有關 INIT\_MANAGER 的 Yocto 專案說明文件資訊，請參閱 [INIT_MANAGER](https://docs.yoctoproject.org/5.0.6/singleindex.html#term-INIT_MANAGER) 。其他啟用的 DISTRO\_FEATURES 有：<br><br><br>DISTRO_FEATURES:append = ” pam overlayfs acl xattr selinux ptest security virtualization tpm usrmerge sota”<br>        Copy to clipboard<br><br><br>要瞭解這些 DISTRO\_FEATURES 的目的，請參閱 [發行版功能](https://docs.yoctoproject.org/5.0.6/singleindex.html#distro-features) 。<br><br><br>此文件選擇 `systemd` 作為 INIT\_MANAGER 和 `udev` 作為 DEV\_MANAGER。 |
    | `conf/distro/include/qcom-security_flags.inc` | 此檔案包含在 [安全旗標](https://git.yoctoproject.org/poky/tree/meta/conf/distro/include/security_flags.inc?h=scarthgap) 中定義的安全旗標。 |
- **套件組**

    在 `meta-qcom-hwe` 和 `meta-qcom-distro` 中定義套件群組。這些套件群組有助於瞭解由 Qualcomm BSP 定義的功能。下表提供套件群組的簡介：

    | 套件組 | 說明 |
    | --- | --- |
    | `packagegroup-qcom.bb` | 包含所有基本套件的套件組。 |
    | `packagegroup-qcom-multimedia.bb` | 包含啟用多媒體支援的套件的套件組：<br><br><br><br>> <br>> <br>> <ul class="simple"><br>> <li><p><code class="docutils literal notranslate"><span class="pre">packagegroup-container</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">packagegroup-qcom-audio</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">packagegroup-qcom-camera</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">packagegroup-qcom-display</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">packagegroup-qcom-fastcv</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">packagegroup-qcom-graphics</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">packagegroup-qcom-k8s</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">packagegroup-qcom-opencv</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">packagegroup-qcom-video</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">python3-docker-compose</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">packagegroup-qcom-iot-base-utils</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">packagegroup-qcom-location</span></code></p></li><br>> </ul><br>> <br>> 備註<br>> <br>> <br>> `packagegroup-qcom-location` 在 `meta-qcom-extras` 元數據層中定義。 |
    | `packagegroup-qcom-test-pkgs.bb` | 包含測試套件的套件組。 |
- **影像配方**

    `meta-qcom-distro` Qualcomm Linux 元數據層負責定義影像配方，此配方可在 [GitHub](https://github.com/qualcomm-linux/meta-qcom-distro/tree/scarthgap/recipes-products/images) 中取得。下表列出各種影像、影像的 `IMAGE_FEATURES`，以及影像發揮的功能：

    | 映像配方 | 影像說明 |
    | --- | --- |
    | `qcom-minimal-image.bb` | 定義一個小型 `rootfs` 用於啟動至 shell。<br><br><br>啟用的 `IMAGE_FEATURES` 如下所示：<br><br><br>IMAGE_FEATURES += "splash tools-debug allow-root-login post-install-logging enable-adbd"<br>        Copy to clipboard<br><br><br>如需有關 `IMAGE_FEATURES` 的詳細資訊，請參閱 [影像功能](https://docs.yoctoproject.org/5.0.6/singleindex.html#image-features) 。 |
    | `qcom-console-image.bb` | 透過添加更多的軟體包和啟用更多的 `IMAGE_FEATURES` 來擴展 `qcom-minimal-image`：<br><br><br>IMAGE_FEATURES += “package-management ssh-server-openssh”<br>        Copy to clipboard |
    | `qcom-multimedia-image.bb` | 需要 `DISTRO_FEATURE` wayland，並且包含了 `rootfs` 中的所有多媒體包。 |
    | `qcom-multimedia-test-image.bb` | 在 `rootfs` 中包含測試套件以測試 `qcom-multimedia-image`。 |
    | `qcom-multimedia-crossesdk-image.bb` | 生成適用於 `qcom-multimedia-image` 的 eSDK。 |
    | `qcom-guestvm-image.bb` | 一個具有啟動到命令行支援的最小化基於核心的虛擬機 (KVM) 影像。 |
- **QDL 燒錄工具**

    QDL 是一款燒錄工具，用於與 USB 裝置進行通訊，以上傳燒錄加載器至裝置。燒錄加載器會燒錄影像檔至裝置內建的通用快閃記憶體儲存 (UFS) 或嵌入式多媒體卡 (eMMC)。欲深入瞭解 `QDL 刷寫`，請參閱 [QDL](https://docs.qualcomm.com/bundle/publicresource/topics/80-70020-254/flash_images.html)。

## meta-qcom-realtime

`meta-qcom-realtime` 元數據層可在 [GitHub](https://github.com/qualcomm-linux/meta-qcom-realtime) 上使用。此層為 Qualcomm 裝置建置即時核心提供額外的軟體支援。

- **核心配方**

    Qualcomm Linux 支援 LTS Qualcomm Linux 核心 v6.6.x 與即時擴充。透過 `meta-qcom-realtime` 層下 `recipes-kernel/linux` 中的 `linux-qcom-custom-rt_6.6.bb` 與 `linux-qcom-base-rt_6.6.bb` Yocto 配方進行維護。而在 [realtime](https://wiki.linuxfoundation.org/realtime/start) 可找到閒置的先行 RT 修補檔。這些修補檔皆於 [Codelinaro](https://git.codelinaro.org/clo/la/kernel/qcom.git) 公開託管的 `linux-qcom-custom-rt_6.6.bb` 上進行擷取及套用。

    為 Qualcomm 設備編譯實時核心：

> 
> 
> - 如果您選擇了 `custom` OVERRIDE，`conf/layer.conf` 會選擇 `linux-qcom-custom-rt`。
>     - 如果您選擇了 `base` OVERRIDE，`conf/layer.conf` 會選擇 `linux-qcom-base-rt`。

    **核心配置**

    兩個配方都附加 `qcom_rt.cfg` 片段，如下所示：:

KERNEL_CONFIG_FRAGMENTS:append = " ${WORKDIR}/qcom_rt.cfg"
        Copy to clipboard
- **在建置檔** 中 **啟用** `meta-qcom-realtime`

    若要在建置中啟用 `meta-qcom-realtime`，請如以下步驟所述將 `meta-qcom-realtime` 層匯出至 `bblayers.conf` 中的 EXTRALAYERS：

    1. 設定環境。

        下列是為 QCS6490 架構機器和 `qcom-wayland` 發行版配置環境的範例：

MACHINE=qcs6490-rb3gen2-core-kit DISTRO=qcom-wayland source setup-environment
            Copy to clipboard
    2. 打開 `build-qcom-wayland/conf/bblayers.conf` 檔案並按如下方式更新 EXTRALAYERS 變數。

EXTRALAYERS ?= " \
              ${WORKSPACE}/layers/meta-qcom-realtime \
             "
            Copy to clipboard
    3. 運行建置命令以如下方式使用 `meta-qcom-realtime` 重新建置：

bitbake qcom-multimedia-image
            Copy to clipboard

## meta-qcom-extras

此層為供註冊使用者選用的元數據層。此層允許對選取的元件進行來源編譯，否則這些元件將當成二進位檔存在於 `meta-qcom-hwe` 中。如果您有權接收此元數據層，則可使用 [Qualcomm Linux 建置指南](https://docs.qualcomm.com/bundle/publicresource/topics/80-70020-254/build_addn_info.html) 中分享的步驟。

- **韌體配方**

    `meta-qcom-extras` 層提供在 `meta-qcom-hwe/recipes-firmware/firmware` 下 `meta-qcom-hwe` 層中定義韌體配方的配方附加檔案。下列程式碼片段顯示這些含 `.bbapend` 副檔名的配方附加檔案。韌體配方附加檔案中的 `SRC_URI` 設為您要用於取代此 Qualcomm Linux 版本發行的預設 zip 檔。

    依照 [Qualcomm Linux 建置指南](https://docs.qualcomm.com/bundle/publicresource/topics/80-70020-254/build_addn_info.html) 建置 cDSP、aDSP、啟動韌體，並產生可使用隨附的配方附加檔案整合的 zip 檔案。

    | recipes-firmware<br>        └── firmware<br>           ├── firmware-qcom-bootbins_1.0.bbappend<br>           ├── firmware-qcom-dspso_1.0.bbappend<br>           ├── firmware-qcom-hlosfw_1.0.bbappend<br>           └── firmware-qcom-partconf_1.0.bbappend<br>        Copy to clipboard | `meta-qcom-extras` 中的配方會覆寫來自 `meta-qcom-hwe` 的配方中的 `SRC_URI`。`meta-qcom-hwe` 層預設使用預先編譯好的韌體二進位檔，`meta-qcom-extras` 層則建置使用者提供的韌體 zip。<br><br><br>`meta-qcom-extras` 層會忽略預設 .zip 檔案中的預先編譯二進位檔。這些配方會改為搜尋使用者在 FWZIP\_PATH 中設定的 .zip 檔案，如下所示：<br><br><br><br>> <br>> <br>> <ul class="simple"><br>> <li><p><code class="docutils literal notranslate"><span class="pre">firmware-qcom-bootbins_1.0.bbappend</span></code>：在 <code class="docutils literal notranslate"><span class="pre">FWZIP_PATH</span></code> 變數定義的路徑下搜尋 zip 壓縮檔。</p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">firmware-qcom-hlosfw_1.0.bbappend</span></code>：在 <code class="docutils literal notranslate"><span class="pre">FWZIP_PATH</span></code> 變數定義的路徑下搜尋 zip 壓縮檔。</p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">firmware-qcom-dspso_1.0.bbappend</span></code>：在 <code class="docutils literal notranslate"><span class="pre">FWZIP_PATH</span></code> 變數定義的路徑下搜尋 zip 壓縮檔。</p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">firmware-qcom-partconf_1.0.bbappend</span></code>：在 <code class="docutils literal notranslate"><span class="pre">FWZIP_PATH</span></code> 變數定義的路徑下搜尋 zip 壓縮檔。</p></li><br>> </ul> |
    | --- | --- |

## meta-qcom-qim-product-sdk

- **BitBake 類**

    下表列出了在 `meta-qcom-qim-product-sdk` 元數據層中定義的 BitBake 類：

    | BitBake 類 | 說明 |
    | --- | --- |
    | `qim-prod-sdk-pkg.bbclass` | <ul class="simple"><br><li><p>提供封裝任務，將 Qualcomm 智慧多媒體 (QIM) SDK 工件封裝成壓縮檔，這是由 <code class="docutils literal notranslate"><span class="pre">qim-product-sdk</span></code> 配方叫用。</p></li><br><li><p>配方建置完成後，易於安裝的工件存檔可在 <code class="docutils literal notranslate"><span class="pre">&lt;workspace&gt;/build-qcom-wayland/tmp-glibc/deploy/qim_prod_sdk_artifacts</span></code> 目錄中找到。</p></li><br></ul> |
    | `qimsdk-pkg.bbclass` | <ul class="simple"><br><li><p>提供將 Qualcomm 多媒體 SDK 套件封裝成壓縮檔的任務，以及易於使用的安裝指令碼。產生的壓縮檔分別包含用來開發、部署和除錯的套件。</p></li><br><li><p>易於安裝的工件存檔可在 <code class="docutils literal notranslate"><span class="pre">&lt;workspace&gt;/build-qcom-wayland/tmp-glibc/deploy/qim_prod_sdk_artifacts</span></code> 目錄中找到。</p></li><br><li><p>在建置過程中由 <code class="docutils literal notranslate"><span class="pre">qim-sdk</span></code> 配方調用。</p></li><br></ul> |
    | `tflitesdk-pkg.bbclass` | <ul class="simple"><br><li><p>提供一個封裝任務，將 Lite Runtime SDK 成品封裝至多個封存檔中，以便開發、部署和偵錯。在建置過程中由 <code class="docutils literal notranslate"><span class="pre">tflite-sdk</span></code> 配方叫用。</p></li><br><li><p>配方建置完成後，易於安裝的工件存檔可在 <code class="docutils literal notranslate"><span class="pre">&lt;workspace&gt;/build-qcom-wayland/tmp-glibc/deploy/qim_prod_sdk_artifacts</span></code> 目錄中找到。</p></li><br></ul> |
- **分發版組態**

    | `layer.conf` | 使用以下資訊配置專案層：<br><br><br><br>> <br>> <br>> <ul class="simple"><br>> <li><p>配方文件路徑資訊</p></li><br>> <li><p>支援的 Yocto 版本</p></li><br>> <li><p>支援的 Qualcomm<sup>®</sup> Hexagon<sup>™</sup> 處理器版本</p></li><br>> <li><p>支援的 Qualcomm<sup>®</sup> 神經處理 SDK 版本</p></li><br>> <li><p>支援的 Qualcomm 神經網路 (QNN) SDK 版本</p></li><br>> </ul> |
    | --- | --- |
- **影像配方**

    | 配方 | 說明 |
    | --- | --- |
    | `recipes-gst` | 包括上游 GStreamer 配方更改 (`.bbapend`) 以及 Qualcomm 配方：<br><br><br><br>> <br>> <br>> <ul class="simple"><br>> <li><p><code class="docutils literal notranslate"><span class="pre">gstreamer1.0-plugins-good_1.20%.bbappend</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">gstreamer1.0-plugins-qcom-oss-base.bb</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">gstreamer1.0-plugins-qcom-oss-batch.bb</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">gstreamer1.0-plugins-qcom-oss-metamux.bb</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">gstreamer1.0-plugins-qcom-oss-mldemux.bb</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">gstreamer1.0-plugins-qcom-oss-mlmeta.bb</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">gstreamer1.0-plugins-qcom-oss-mlmuxer.bb</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">gstreamer1.0-plugins-qcom-oss-mlqnn.bb</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">gstreamer1.0-plugins-qcom-oss-mlsnpe.bb</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">gstreamer1.0-plugins-qcom-oss-mltflite.bb</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">gstreamer1.0-plugins-qcom-oss-mlvclassification.bb</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">gstreamer1.0-plugins-qcom-oss-mlvconverter.bb</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">gstreamer1.0-plugins-qcom-oss-mlvdetection.bb</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">gstreamer1.0-plugins-qcom-oss-mlvpose.bb</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">gstreamer1.0-plugins-qcom-oss-mlvsegmentation.bb</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">gstreamer1.0-plugins-qcom-oss-overlay.bb</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">gstreamer1.0-plugins-qcom-oss-qmmfsrc.bb</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">gstreamer1.0-plugins-qcom-oss-socket.bb</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">gstreamer1.0-plugins-qcom-oss-tools.bb</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">gstreamer1.0-plugins-qcom-oss-vcomposer.bb</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">gstreamer1.0-plugins-qcom-oss-vsplit.bb</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">gstreamer1.0-plugins-qcom-oss-vtransform.bb</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">gstreamer1.0-qcom-oss-sample-apps.bb</span></code></p></li><br>> </ul> |
    | `recipes-qcom-ml` | 由兩個配方組成：<br><br><br><br>> <br>> <br>> <ul class="simple"><br>> <li><p><code class="docutils literal notranslate"><span class="pre">qnn.bb</span></code>：用來封裝 QNN SDK</p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">snpe.bb</span></code>：用來封裝 Qualcomm Neural Processing SDK</p></li><br>> </ul> |
    | `recipes-qim-product-sdk` | 安裝 QIM 產品 SDK 的配方，其中包含 QIM、Qualcomm 神經處理、QNN 和 Lite Runtime SDKs。 |
    | `recipes-tensorflow-lite` | Lite Runtime 配方為以下版本建置和安裝 Lite Runtime：<br><br><br><br>> <br>> <br>> <ul class="simple"><br>> <li><p>2.12.1, 2.13.1, 2.14.1, 和 2.15.0</p></li><br>> <li><p>預設版本：2.15.0</p></li><br>> </ul> |
- **套件組**

    | 套件組 | 說明 |
    | --- | --- |
    | `packagegroup-qcom-gstrecipes-gst` | 啟用上游基本 GStreamer 以及 Qualcomm 外掛程式的套件組：<br><br><br><br>> <br>> <br>> <ul class="simple"><br>> <li><p><code class="docutils literal notranslate"><span class="pre">gstreamer1.0-plugins-qcom-oss-base</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">gstreamer1.0-plugins-qcom-oss-tools</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">gstreamer1.0-plugins-qcom-oss-batch</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">gstreamer1.0-plugins-qcom-oss-metamux</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">gstreamer1.0-plugins-qcom-oss-mldemux</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">gstreamer1.0-plugins-qcom-oss-mlmeta</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">gstreamer1.0-plugins-qcom-oss-mlvconverter</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">gstreamer1.0-plugins-qcom-oss-mlvclassification</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">gstreamer1.0-plugins-qcom-oss-mlvdetection</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">gstreamer1.0-plugins-qcom-oss-mlvpose</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">gstreamer1.0-plugins-qcom-oss-mlvsegmentation</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">gstreamer1.0-plugins-qcom-oss-overlay</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">gstreamer1.0-plugins-qcom-oss-qmmfsrc</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">gstreamer1.0-plugins-qcom-oss-socket</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">gstreamer1.0-plugins-qcom-oss-vcomposer</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">gstreamer1.0-plugins-qcom-oss-vsplit</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">gstreamer1.0-plugins-qcom-oss-vtransform</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">gstreamer1.0-qcom-oss-sample-apps</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">gstreamer1.0-plugins-qcom-oss-mlsnpe</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">gstreamer1.0-plugins-qcom-oss-mlqnn</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">gstreamer1.0-plugins-qcom-oss-mltflite</span></code></p></li><br>> </ul><br><br><br><br>一併打包了上游 GStreamer 套件：<br><br><br><br>> <br>> <br>> <ul class="simple"><br>> <li><p><code class="docutils literal notranslate"><span class="pre">cairo</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">gdk-pixbuf</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">liba52</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">libdaemon</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">libgudev</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">lame</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">libpsl</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">librsvg</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">libsoup-2.4</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">libtheora</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">libwebp</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">mpg123</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">orc</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">sbc</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">speex</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">taglib</span></code></p></li><br>> </ul> |
    | `packagegroup-qcom-gst-basic` | 啟用上游 GStreamer 的套件組：<br><br><br><br>> <br>> <br>> <ul class="simple"><br>> <li><p><code class="docutils literal notranslate"><span class="pre">gstreamer1.0</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">gstreamer1.0-plugins-base</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">gstreamer1.0-plugins-good</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">gstreamer1.0-plugins-bad</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">gstreamer1.0-rtsp-server</span></code></p></li><br>> </ul> |
    | `packagegroup-qcom-qim-product` | 將以下套件與安裝腳本一起打包的套件組：<br><br><br><br>> <br>> <br>> <ul class="simple"><br>> <li><p><code class="docutils literal notranslate"><span class="pre">packagegroup-qcom-gst</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">packagegroup-qcom-ml</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">install.sh</span></code></p></li><br>> </ul> |
    | `packagegroup-qcom-ml` | 將 Qualcomm ML 框架打包的套件組：<br><br><br><br>> <br>> <br>> <ul class="simple"><br>> <li><p><code class="docutils literal notranslate"><span class="pre">tensorflow-lite</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">qnn</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">snpe</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">libgomp-dev</span></code></p></li><br>> </ul> |

Last Published: Dec 23, 2025

[Previous Topic
Qualcomm Linux 功能](https://docs.qualcomm.com/bundle/publicresource/80-70020-27TC/topics/qualcomm_linux_features.md) [Next Topic
在 Qualcomm Linux 元數據層中使用 BitBake OVERRIDES](https://docs.qualcomm.com/bundle/publicresource/80-70020-27TC/topics/use-of-bitbake-overrides.md)