# Qualcomm Linux 元数据层概述

本节介绍 [Qualcomm manifest](https://github.com/qualcomm-linux/qcom-manifest) 中包含的层。此manifest包括重现参考编译版本所需的所有层。后续章节介绍 Yocto 项目维护的层。Qualcomm 维护 Qualcomm 开发套件特定的层，开发套件依赖于社区层来实现全部功能。

下图显示了Qualcomm Linux发行版中包含的层：

![../../_images/qualcomm_linux_metadata_layers.png](data:image/png;base64,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a3wglhvQHspdeRT6eV8t6AEHg0nuGexd7srzrK3sIyGRDtiq4z55vwLFqcS9AZCzb6spLn0HRnEeceyGjZz3pSglgPSwVWpCrJATtLqnlwWFDAp/kP+eyMT2TBmwlbpMoX2RK3IehD922JGG8wASxUmoFd3h6x79cMRTNciin/dVE0YY5GU5xa7qgc67Ka6c26+nqNPkn/EUS9WRXdRJ/OifDzbgbIrzYm4YTbKDwW0cZwwOhHZJnNxgDJ6zheFm3gPapECRqF5nk6ciTZmgqdmUVCyBOlbC02JJeuzKV55sREsHxv6YVCPIpilXcokmZEkR0AY6OZAUx0+y5WybuO7W5A14XgiDbY5jcpo6LUuzq/o8Ug5IZ1ab7/OOPmlVn0oWkkyjxjXTtHbJDfv8ZGM4fTC2JAcbbqZAg7pYhHBLVv3kiEChpeGsIeGQpcOQ9A3yeuqBIo3rLZBL0tV874FONkrStFiy/+ERz332sFdUPg3Ux3K4DWxCHtzG0CVwuA4OEWo+lRamirRxAEJ0GMCQChI14eM04brQaF3gMM+hwiLta4V5G553y4T4DysLMym7Gvd5SSYclaxWyKiMDYOrO/TOE6pbRcovC8dEpXeBrovSY76qPk9g8GHQLWopD3vyAA6REK4jRChTAZ/hT3CgKQgXFaUrwoMm9BJFkZ4vk/wZXpgvnchILsjk87JMIqofJiaiuEBOTimLTu8C2S9PL1JXZHl0CddTwuYNb/ZC/l49DzNjDUay+QrjeeODZfw9JB59OWTnYwdfdbn+wyEW/fKf7/rr8sSjL+Z1eZju2briAvqosndKj0V/+cO3/F6HirqPSX/nL6VMzPwV/+vgw8Yl/hrK+wyJ+x339av3cfSN/2j/feM/2n/af+cDlAkOoDwniMVs7SsYkaH2E2s/fxCHkUWZz0QGA+p9XlcCsb5skRmRwQB1Wz4tECu3kBmxwYBQ1eKwCpQZ0cHAZCQOm3UwozamJxLf0piRU346r5gD7yuCagRUeX8QFko/UZFMfAkbttzlM/XILHetDa13vraK0QZbe9dbG/5J1yJTijZkaN0ynra2di6HzaAM1VnkztfW2uU8y7U1LClCWdStc1vWLm/zzrdbk1oJarLVeud7u9yq1jvnFaGc821lR1C11Za+VIDyZbtV21F1L5Sg7rXKVdp/2n9JyQIAWE1QIHEBAAA8P3hwYWNrZXQgYmVnaW49J++7vycgaWQ9J1c1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCc/Pg0KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyI+PHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj48cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0idXVpZDpmYWY1YmRkNS1iYTNkLTExZGEtYWQzMS1kMzNkNzUxODJmMWIiIHhtbG5zOnRpZmY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vdGlmZi8xLjAvIj48dGlmZjpPcmllbnRhdGlvbj4xPC90aWZmOk9yaWVudGF0aW9uPjwvcmRmOkRlc2NyaXB0aW9uPjwvcmRmOlJERj48L3g6eG1wbWV0YT4NCjw/eHBhY2tldCBlbmQ9J3cnPz4A)

**图：Qualcomm Linux 元数据层**

表：Qualcomm Linux 元数据层及说明

| 元数据层 | 说明 |
| --- | --- |
| `meta-qcom-hwe` | 包含为 Qualcomm 开发套件编译软件组件的配方，并提供适用于 Qualcomm SoC的增值软件特性。 |
| `meta-qcom-distro` | 为 Qualcomm 开发套件提供参考分发包配置。镜像配方和软件包组在该层定义。 |
| `meta-qcom-extras` | 注册用户的可选元数据层。该层支持对选定组件进行源代码编译，除此以外这些组件在 `meta-qcom-hwe` 中以二进制形式提供。 |
| `meta-qcom-qim-product-sdk` | 提供基于 GStreamer 框架的 Qualcomm^®^ Intelligent Multimedia SDK (IM SDK) 和 AI SDK。包括一套 GStreamer 插件、多媒体示例应用程序和 AI 用例。 |
| `meta-qcom-realtime` | 为 Qualcomm Linux 内核提供补丁和配置以实现实时操作。 |
| `meta-qcom` | 包含 Qualcomm 设备支持和上游开源软件 (OSS) 组件。 |
| `meta-virtualization`<br><br><br>相关详细信息，请参阅 [meta-virtualization](https://git.yoctoproject.org/meta-virtualization)。 | 包含用于构建 OpenEmbedded 虚拟化解决方案和虚拟化堆栈（如Docker 和 Kubernetes）的软件包。 |
| `meta-selinux`<br><br><br>相关更多信息，请参阅 [meta-selinux](https://git.yoctoproject.org/meta-selinux)。 | 启用 SELinux 支持。该层包括参考 SELinux 策略并提供必要的工具。要为 Qualcomm Linux 启用 SELinux，请在 `meta-qcom-distro/conf/distro/include/qcom-base.inc`  中将变量 `DEFAULT_ENFORCING` 设置为 `enforcing`。 |
| `poky/meta`<br><br><br>相关更多信息，请参阅 [poky/meta](https://git.yoctoproject.org/poky)。 | 提供编译工具和配方文件，提供嵌入式操作系统发行版所需的各种软件组件。 |
| `meta-openembedded`<br><br><br>相关更多信息，请参阅 [meta-openembedded](https://git.openembedded.org/meta-openembedded)。 | OpenEmbedded 编译系统的层集合。 |
| `meta-security`<br><br><br>有关详细信息，请参阅 [meta-security](https://git.yoctoproject.org/meta-security/tree/README.md?h=scarthgap)。 | 提供 Qualcomm Linux 内核的安全工具和强化工具以及实现安全机制的库。 |
| `meta-updater`<br><br><br>有关详细信息，请参阅[meta-updater](https://github.com/uptane/meta-updater/blob/scarthgap/README.adoc)。 | 使用 OSTree 实现无线更新 (OTA)。OSTree是一个具有回滚功能的原子全文件系统升级工具。 |

有关机器人层的信息，请参阅 [Qualcomm Intelligent Robotics Product (QIRP) SDK 层](https://docs.qualcomm.com/bundle/publicresource/topics/80-70018-265/architecture.html#component-layers-of-the-qirp-sdk)。

## Qualcomm Linux 元数据层

以下层表示 Qualcomm BSP 元数据：

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

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

- [meta-qcom-distro](https://docs.qualcomm.com/doc/80-70018-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-70018-27SC/topic/qualcomm_linux_metadata_layers_overview.html#meta-qcom-qim-product-sdk-section)

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

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

### 在 Qualcomm Linux 元数据层中使用 BitBake OVERRIDES

Qualcomm Linux 元数据层使用 BitBake 的 OVERRIDES 机制来实现两个不同的 BSP 变体，称为 `base` 和 `custom`。

启动 Qualcomm Linux 编译时，将 `QCOM_SELECTED_BSP` 变量设置为 `custom` 或者 `base`。此变量在 `conf/machine/include/qcom-base.inc` 中定义并默认设置为 `custom`，如下所示：

QCOM_SELECTED_BSP ??= "custom"
    Copy to clipboard

设置的 `QCOM_SELECTED_BSP` 值转换为两个 BitBake Override。下面是``QCOM\_SELECTED\_BSP``和其对应的BitBake Override 关系表：

| `QCOM_SELECTED_BSP` 取值 | 对应的 BitBake Override |
| --- | --- |
| `base` | `qcom-base-bsp` |
| `custom` | `qcom-custom-bsp` |

BitBake Override 的有效值有选择地设置变量，从而将包放入镜像中。

Note

要熟悉 BitBake Override，请参阅[条件语法（Override）](https://docs.yoctoproject.org/bitbake/2.8/bitbake-user-manual/bitbake-user-manual-metadata.html#conditional-syntax-overrides)和 [Yocto 项目文档](https://docs.yoctoproject.org/singleindex.html#term-OVERRIDES)。

要了解如何使用BSP的 `base` 变体以及在编译时如何设置 `QCOM_SELECTED_BSP`，请参阅[编译base镜像](https://docs.qualcomm.com/bundle/publicresource/topics/80-70018-254/github_workflow_unregistered_users.html#build-base-image)。

Note

在此发布版本中，`base` BSP 支持 Qualcomm 参考设备，用于使用 `qcs8300-ride-sx.conf`、 `qcs9075-ride-sx.conf`、 `qcs9100-ride-sx.conf` 进行编译。

最终的镜像构成取决于您是否为 `QCOM_SELECTED_BSP` 变量选择 `base` 或者 `custom` 值，请参阅[概述](https://docs.qualcomm.com/doc/80-70018-27SC/topic/overview.html#yocto-overview)。

要查找这些 OVERRIDES 如何选择要编译的软件组件的示例，请使用 `qcom-base-bsp` 和 `qcom-custom-bsp` 搜索 `meta-qcom-hwe` 代码库。

### 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 中使用的进程间通信机制。它使用用户空间中的套接字(socket)样式编程接口，实现系统中不同处理器（如应用处理器和 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 设备提供了额外的软件支持。

> 
> 
> - **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 无线升级系统的要求实现镜像创建。 |
> - **机器配置**
> 
> 
>     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 的 Qualcomm^®^ RB3 Gen 2 核心开发套件。 |
>     | `conf/machine/qcs6490-rb3gen2-vision-kit.conf` | 该文件适用于带有低/高分辨率 CSI 摄像头的基于 QCS6490 的 Qualcomm^®^ RB3 Gen 2 机器视觉开发套件。 |
>     | `conf/machine/qcs6490-rb3gen2-industrial-kit.conf` | 该文件适用于基于 QCS6490 的 Qualcomm^®^ RB3 Gen 2 工业开发套件。 |
> 
> 
> 
>     **基于 QCS9075 和 QCS9100 的开发套件的主机配置文件**
> 
> 
> 
> 
> 
> 
>     | 配置文件 | 说明 |
>     | --- | --- |
>     | `conf/machine/qcs9100-ride-sx.conf` | 该文件适用于基于 QCS9100 的 Qualcomm^®^ IQ9 Beta 评估套件 (EVK)。 |
>     | `conf/machine/qcs9075-ride-sx.conf` | 该文件适用于基于 QCS9075 的 Qualcomm IQ9 Beta EVK。 |
>     | `conf/machine/qcs9075-rb8-core-kit.conf` | 该文件适用于基于 QCS9075 的 Qualcomm Dragonwing^™^ IQ-9075 EVK。 |
>     | `conf/machine/qcs9075-rb8-core-kit-interface-plus-mezz.conf` | 该文件适用于基于 QCS9075 的 Dragonwing IQ-9075 EVK。 |
> 
> 
> 
>     **基于 QCS8300 的开发套件的主机配置文件**
> 
> 
> 
> 
> 
> 
>     | 配置文件 | 说明 |
>     | --- | --- |
>     | `conf/machine/qcs8300-ride-sx.conf` | 此文件适用于基于 QCS8300 的 Qualcomm^®^ IQ8 Beta EVK。 |
> 
> 
> 
>     **基于 QCS615 的开发套件的机器配置文件**
> 
> 
> 
> 
> 
> 
>     | 配置文件 | 说明 |
>     | --- | --- |
>     | `conf/machine/qcs615-adp-air.conf` | 此文件适用于基于 QCS615 的 Qualcomm^®^ IQ6 Beta EVK。 |
> 
> 
> 
>     **在** `meta-qcom-hwe` **中使用OVERRIDE**
> 
> 
>     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` | 在上游一致软件基线之上添加的 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 类**

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

    Qualcomm Linux 支持用于设备访问的 SSH 和 UART 串行 shell。您可以选择 SSH 或 UART 来访问设备。您还可以使用 ADB 来调试 IP 接口关闭时的问题或传输大文件。

    | `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-70018-254/flash_images.html)。

### 编译 Qualcomm Linux

`meta-qcom`、`meta-qcom-hwe` 和 `meta-qcom-distro` 部分描述了机器配置、分发包配置、镜像配方和 OVERRIDES。

[表](https://docs.qualcomm.com/doc/80-70018-27SC/topic/qualcomm_linux_metadata_layers_overview.html#qcom-selected-bsp)列出了 `MACHINE`、`DISTRO` 和 `QCOM_SELECTED_BSP` 所支持的值 。若要设置环境，请使用这些值并运行以下命令：

MACHINE=<machine configuration name> DISTRO=<Distro name> QCOM_SELECTED_BSP=<variant name> source setup-environment
    Copy to clipboard

下表列出了可能的镜像配方，以根据所选的 `MACHINE`、`DISTRO` 和 `QCOM_SELECTED_BSP` 选择和生成镜像，运行以下命令：

bitbake <image recipe name>
    Copy to clipboard

| `QCOM_SELECTED_BSP`<br><br>（由您选择） | 有效的 BitBake 覆盖<br><br>（派生自 `QCOM_SELECTED_BSP`） | 机器配置<br><br>（由您选择） | 参考 DISTRO 配置<br><br>（由您选择） | 镜像配方<br><br>（由您选择） |
| --- | --- | --- | --- | --- |
| `custom` | `qcom-custom-bsp` | <ul class="simple"><br><li><p><code class="docutils literal notranslate"><span class="pre">qcs6490-rb3gen2-core-kit.conf</span></code></p></li><br><li><p><code class="docutils literal notranslate"><span class="pre">qcs6490-rb3gen2-vision-kit.conf</span></code></p></li><br><li><p><code class="docutils literal notranslate"><span class="pre">qcs6490-rb3gen2-industrial-kit.conf</span></code></p></li><br><li><p><code class="docutils literal notranslate"><span class="pre">qcs6490-idp.conf</span></code></p></li><br><li><p><code class="docutils literal notranslate"><span class="pre">qcs8300-ride-sx.conf</span></code></p></li><br><li><p><code class="docutils literal notranslate"><span class="pre">qcs9100-ride-sx.conf</span></code></p></li><br><li><p><code class="docutils literal notranslate"><span class="pre">qcs9075-ride-sx.conf</span></code></p></li><br><li><p><code class="docutils literal notranslate"><span class="pre">qcs8300-ride-sx.conf</span></code></p></li><br></ul> | <ul class="simple"><br><li><p><code class="docutils literal notranslate"><span class="pre">qcom-wayland</span></code></p></li><br><li><p><code class="docutils literal notranslate"><span class="pre">qcom-robotics-ros2-humble</span></code></p></li><br></ul> | <ul class="simple"><br><li><p><code class="docutils literal notranslate"><span class="pre">qcom-minimal-image</span></code></p></li><br><li><p><code class="docutils literal notranslate"><span class="pre">qcom-console-image</span></code></p></li><br><li><p><code class="docutils literal notranslate"><span class="pre">qcom-multimedia-image</span></code></p></li><br><li><p><code class="docutils literal notranslate"><span class="pre">qcom-multimedia-test-image</span></code></p></li><br></ul> |
| `base` | `qcom-base-bsp` | <ul class="simple"><br><li><p><code class="docutils literal notranslate"><span class="pre">qcs6490-rb3gen2-core-kit.conf</span></code></p></li><br><li><p><code class="docutils literal notranslate"><span class="pre">qcs6490-rb3gen2-vision-kit.conf</span></code></p></li><br><li><p><code class="docutils literal notranslate"><span class="pre">qcs6490-rb3gen2-industrial-kit.conf</span></code></p></li><br><li><p><code class="docutils literal notranslate"><span class="pre">qcs6490-idp.conf</span></code></p></li><br><li><p><code class="docutils literal notranslate"><span class="pre">qcs8300-ride-sx.conf</span></code></p></li><br><li><p><code class="docutils literal notranslate"><span class="pre">qcs9100-ride-sx.conf</span></code></p></li><br><li><p><code class="docutils literal notranslate"><span class="pre">qcs9075-ride-sx.conf</span></code></p></li><br><li><p><code class="docutils literal notranslate"><span class="pre">qcs8300-ride-sx.conf</span></code></p></li><br></ul> | <ul class="simple"><br><li><p><code class="docutils literal notranslate"><span class="pre">qcom-wayland</span></code></p></li><br><li><p><code class="docutils literal notranslate"><span class="pre">qcom-robotics-ros2-humble</span></code></p></li><br></ul> | <ul class="simple"><br><li><p><code class="docutils literal notranslate"><span class="pre">qcom-minimal-image</span></code></p></li><br><li><p><code class="docutils literal notranslate"><span class="pre">qcom-console-image</span></code></p></li><br><li><p><code class="docutils literal notranslate"><span class="pre">qcom-multimedia-image</span></code></p></li><br><li><p><code class="docutils literal notranslate"><span class="pre">qcom-multimedia-test-image</span></code></p></li><br></ul> |
|  |  |  |  |  |

要了解有关编译 Qualcomm Linux 所支持的组合的更多信息，请参阅 [Qualcomm Linux 发布说明](https://docs.qualcomm.com/bundle/publicresource/topics/RNO-250403001134)。

有关详细的编译说明，请参阅[未注册用户的 GitHub 工作流程](https://docs.qualcomm.com/bundle/publicresource/topics/80-70018-254/github_workflow_unregistered_users.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`

    要在build中包括 `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-70018-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-70018-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 Product (QIMP) SDK 的 artifacts打包为一个档案。它由 <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: May 06, 2025

[Previous Topic
Qualcomm Linux 特性](https://docs.qualcomm.com/bundle/publicresource/80-70018-27SC/topics/qualcomm_linux_features.md) [Next Topic
Qualcomm Linux软件组件](https://docs.qualcomm.com/bundle/publicresource/80-70018-27SC/topics/qualcomm_linux_software_components.md)

Source: [https://docs.qualcomm.com/doc/80-70018-27SC/topic/qualcomm_linux_metadata_layers_overview.html](https://docs.qualcomm.com/doc/80-70018-27SC/topic/qualcomm_linux_metadata_layers_overview.html)