# Qualcomm Linux 元数据层

以下层代表 Qualcomm 板级支持包 (BSP) 元数据：

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

以下层定义 `qcom-wayland` 参考分发包：

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

以下层定义可选的 Qualcomm IM SDK：

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

以下元数据层定义可选的 BSP：

- [meta-qcom-extras](https://docs.qualcomm.com/doc/80-70020-27SC/topic/qualcomm_linux_metadata_layers_overview.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 Download (QDL) 刷写工具与显示 ID 05c6:9008 的 USB 设备通信以上传刷写加载程序，并使用此配方刷写镜像。 |
| `recipes-support/pd-mapper/pd-mapper_git.bb` | Qualcomm pd-mapper 是保护域映射器服务的一种实现。该服务配置和管理保护域，确保应用程序和各种远程处理器之间的安全通信。 |
| `recipes-support/qrtr/qrtr_git.bb` | Qualcomm Router（QRTR）是 Qualcomm SoC 中使用的进程间通信机制。它使用用户空间中的套接字样式编程接口，实现系统中不同处理器（如应用处理器和 modem）之间的通信。 |
| `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 设备提供了额外的软件支持。

Note

本指南中所称 QCM6490 和 QCS6490 硬件 SoC可互换使用。`meta-qcom-hwe/conf/machine/` 目录中定义的 `qcs6490-rb3gen2-core-kit.conf` 和 `qcs6490-rb3gen2-vision-kit.conf` 机器配置文件支持 QCM6490、QCS6490 和 QCS5430 硬件 SoC。

- **BitBake 类**

    有关 BitBake 类的介绍，请参阅[Classes](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 无线升级系统的要求实现镜像创建。 |
- **机器配置**

    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 的开发套件的机器配置文件**

Note

对于 Qualcomm Linux 1.2 及其后续版本，必须使用下表列出的新机器配置文件。Qualcomm Linux 1.2 已替换了 Qualcomm Linux 1.1 之前的机器配置文件 `qcm6490.conf`。

    | 配置文件 | 说明 |
    | --- | --- |
    | `conf/machine/qcm6490-idp.conf` | 该文件适用于 QCM6490 的集成开发平台（IDP）。 |
    | `conf/machine/qcs6490-rb3gen2-core-kit.conf` | 此文件适用于搭载 QCS6490 SoC 的 Qualcomm Dragonwing^™^ RB3 Gen 2 Core 开发套件。 |
    | `conf/machine/qcs6490-rb3gen2-vision-kit.conf` | 此文件适用于搭载 QCS6490 SoC 的 Qualcomm Dragonwing^™^ RB3 Gen 2 机器视觉开发套件，其中包含低/高分辨率 CSI 摄像头。 |
    | `conf/machine/qcs6490-rb3gen2-industrial-kit.conf` | 此文件适用于搭载 QCS6490 SoC 的 Qualcomm Dragonwing^™^ RB3 Gen 2 Industrial 开发套件。 |

    **基于 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 来确定最终镜像是由 Qualcomm 定制 BSP 软件组件还是上游软件组件组成，具体取决于编译时生效的OVERRIDE覆盖参数。

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

    | 有效 OVERRIDE | PREFERRED\_PROVIDER 用于 `egl`、`libgl`、`libgles1`、`libgles2` |
    | --- | --- |
    | `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

Note

在本次发布版本中，`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
> 
> 以下代码块展示了如何将 `KERNEL_DEVICETREE` 设置为 `linux-qcom-base`，从而得到 `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
> 
> 以下代码块展示了如何将 `KERNEL_DEVICETREE` 设置为 `linux-qcom-custom`，从而得到 `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 名称。
> 
> 
> Note
> 
> 
> Qualcomm Linux 仅支持 `custom` 变体的设备树二进制覆盖层。
> 
> 
>     来自 `qcs9100-ride-sx.conf` 的以下示例展示如何使用 DTBO。
> 
> 
> 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 硬件 SoC 启动时，各个子系统在重置后运行固件。

        | 固件配方 | 说明 |
        | --- | --- |
        | `firmware-qcom-hlosfw_1.0.bb` | 处理子系统固件二进制文件（例如 aDSP、cDSP、modem 和 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` 中，请参阅 `packagegroup-firmware-qcm6490` 包括在 `MACHINE_EXTRA_RDEPENDS` 变量中：

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

Note

`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` | 在上游一致base软件之上添加 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 片段 |
    | --- | --- |
    | `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` 编译调试内核镜像，在您使用 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 串行 shell。您可以选择 SSH 或 UART 来访问设备。您还可以使用 ADB 来调试 IP 接口关闭时的问题或传输大文件。

    下表介绍了 BitBake 类，见[Classes](https://github.com/qualcomm-linux/meta-qcom-distro/tree/scarthgap/classes)。

    | BitBake 类 | 说明 |
    | --- | --- |
    | `image-adbd.bbclass` | `meta-qcom-distro` 中的 `image-adbd.bbclass` 类在镜像中安装 adbd。adbd 守护进程保持禁用状态，除非 `IMAGE_FEATURES` 包含 `enable-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-distro` 中 `meta-qcom-hwe` 定义。这些软件包组可帮助您了解 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>> Note<br>> <br>> <br>> 在 `meta-qcom-extras` 元数据层中定义了 `packagegroup-qcom-location`。 |
    | `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` | 定义要引导到 shell 的小型 `rootfs`。<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` | 包括要测试 `qcom-multimedia-image` 的 `rootfs` 测试包。 |
    | `qcom-multimedia-crossesdk-image.bb` | 生成 eSDK `qcom-multimedia-image`。 |
    | `qcom-guestvm-image.bb` | 基于内核的最小虚拟机 （KVM） 镜像，支持启动到 shell。 |
- **QDL 刷写工具**

    QDL 是一个刷写工具，可以与 USB 设备通信，将刷写加载程序上传到设备。刷写加载程序将镜像刷写到设备内置的通用闪存 (UFS) 或嵌入式多媒体卡 (eMMC)。有关 `QDL flashing` 的更多信息，请参阅 [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 配方进行维护。[实时](https://wiki.linuxfoundation.org/realtime/start)中包括了待处理的抢占式 RT 补丁。这些补丁获取后将被打到 `linux-qcom-custom-rt_6.6.bb` 层，该层公开托管于 [Codelinaro](https://git.codelinaro.org/clo/la/kernel/qcom.git)。

    要为 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
- **在build中** **启用** `meta-qcom-realtime`

    要在编译中启用 `meta-qcom-realtime`，将 `meta-qcom-realtime` 层导出到 `bblayers.conf` 中的 EXTRALAYERS，具体步骤如下：

    1. 用source设置环境。

        以下是为基于 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`。固件配方附加文件具有您可能想要使用的 zip 文件的 `SRC_URI` 设置，而不是随此 Qualcomm Linux 发布版本分发的默认 zip 文件。

    按照 [Qualcomm Linux 编译指南](https://docs.qualcomm.com/bundle/publicresource/topics/80-70020-254/build_addn_info.html)的步骤来编译 cDSP、aDSP、Boot的固件，并生成可使用提供的配方附加文件来集成该 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 Intelligent Multimedia (QIM) SDK artifact 打包到存档中。它由 <code class="docutils literal notranslate"><span class="pre">qim-product-sdk</span></code> 配方调用。</p></li><br><li><p>配方编译完成后，易于安装的artifact档案位于 <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 Multimedia SDK 软件包和易用的安装脚本一起打包到归档文件中。生成的归档文件包括了相应的软件包，可以分别用于开发、部署和调试。</p></li><br><li><p>易于安装的artifact归档文件位于 <code class="docutils literal notranslate"><span class="pre">&lt;workspace&gt;/build-qcom-wayland/tmp-glibc/deploy/qimsdk_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 artifact 打包成多个归档文件以供开发、部署和调试。在编译过程中由 <code class="docutils literal notranslate"><span class="pre">tflite-sdk</span></code> 配方调用。</p></li><br><li><p>配方编译完成后，易于安装的artifact档案位于 <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> Neural Processing SDK 版本</p></li><br>> <li><p>支持的 Qualcomm Neural Network（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` | 该配方用于安装 QIMP SDK，其中包括了QIM SDK、Qualcomm Neural Processing SDK、QNN 和 Lite runtime SDK。 |
    | `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: Jul 24, 2025

[Previous Topic
Qualcomm Linux 特性](https://docs.qualcomm.com/bundle/publicresource/80-70020-27SC/topics/qualcomm_linux_features.md) [Next Topic
在 Qualcomm Linux 元数据层中使用 BitBake OVERRIDES](https://docs.qualcomm.com/bundle/publicresource/80-70020-27SC/topics/use-of-bitbake-overrides.md)