# Qualcomm Linuxメタデータレイヤー

以下のレイヤーは、Qualcomm ボード・サポート・パッケージ（BSP）メタデータを表しています。

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

`qcom-wayland` リファレンス・ディストリビューションは以下のレイヤーで定義されています。

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

オプションのQualcomm IM SDKは以下のレイヤーで定義されています。

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

オプションのBSPは以下のメタデータレイヤー で定義されています。

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

## meta-qcom

`meta-qcom` メタデータレイヤー は [git.yoctoproject.org](http://git.yoctoproject.org) でホストされており、Qualcomm OSSをビルドするためのレシピを提供します。ソフトウェア・イメージは、`meta-qcom` レイヤーの以下のレシピを使用してビルドされます。

| レシピ | 説明 |
| --- | --- |
| `recipes-devtools/qdl/qdl_git.bb` | Qualcomm 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で使用されるプロセス間の通信方式です。ユーザー空間でソケット型プログラミング・インターフェースを使用して、アプリケーション・プロセッサーやモデムなど、システム内のさまざまなプロセッサー間の通信を可能にします。 |
| `recipes-support/initrdscripts/initramfs-module-copy-modules_1.0.bb` | カーネルモジュールを `initramfs` から `rootfs` にコピーするための `initramfs-framework` モジュールです。 |

## meta-qcom-hwe

`meta-qcom-hwe` メタデータレイヤー は [GitHub](https://github.com/qualcomm-linux/meta-qcom-hwe/tree/scarthgap) で公開されています。ここでは、クアルコム製デバイスを有効にするための付加的なソフトウェア・サポートを提供しています。

注釈

本ガイドでは、QCM6490とQCS6490 のハードウェア SoC を同意語として使用しています。`meta-qcom-hwe/conf/machine/` ディレクトリで定義されている `qcs6490-rb3gen2-core-kit.conf` と `qcs6490-rb3gen2-vision-kit.conf` というマシン構成ファイルは、 QCM6490、QCS6490 、および QCS5430 のハードウェアSoC をサポートします。

- **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` ディレクトリにあるファイルで、Qualcomm BSPによって定義されたマシン構成で共通に使用できる、必要なBitBake変数の定義と設定を行います。以下の表に、これらのファイルの概要を示します。

    | ファイル | 説明 |
    | --- | --- |
    | `meta-qcom-hwe/conf/machine/include/qcom-base.inc` | このファイルには、Qualcomm BSPで定義されたすべてのマシン構成で共通に共有されるBitBake変数が設定されています。例えば、`SOC_ARCH`、`PREFERRED_PROVIDER`、`IMAGE_FSTYPES` が挙げられます。 |
    | `meta-qcom-hwe/conf/machine/include/qcom-qcs6490.inc` | このファイルでは `SOC_FAMILY` 変数が `qcm6490` に設定されています。これにより、Qualcomm Linuxレシピが `qcm6490` というOVERRIDEを使用して、Qualcomm BSPに固有の変更を実装できるようになります。このファイルには、QCS6490ベースのすべてのQualcomm開発キットで共有される構成変数も定義されています。 |
    | `meta-qcom-hwe/conf/machine/include/qcom-qcs9100.inc` | このファイルでは `SOC_FAMILY` 変数が `qcs9100` に設定されています。これにより、Qualcomm Linuxレシピが `qcs9100` というOVERRIDEを使用して、Qualcomm BSPに固有の変更を実装できるようになります。このファイルには、QCS9100ベースのすべてのQualcomm開発キットで共有される構成変数も定義されています。 |
    | `meta-qcom-hwe/conf/machine/include/qcom-qcs8300.inc` | このファイルでは `SOC_FAMILY` 変数が `qcs8300` に設定されています。これにより、Qualcomm Linuxレシピが `qcs8300` というOVERRIDEを使用して、Qualcomm BSPに固有の変更を実装できるようになります。このファイルには、QCS8300ベースのすべてのQualcomm開発キットで共有される構成変数も定義されています。 |
    | `meta-qcom-hwe/conf/machine/include/qcom-qcs615.inc` | このファイルは `SOC_FAMILY` 変数を `qcs615` に設定します。これにより、Qualcomm Linuxレシピが `qcs615` というOVERRIDEを使用して、Qualcomm BSPに固有の変更を実装できるようになります。このファイルには、QCS615 ベースのすべてのQualcomm開発キットで共有される構成変数も定義されています。 |

    **QCS6490ベースの開発キット用マシン構成ファイル**

注釈

Qualcomm Linux 1.2以降のリリースでは、以下の表に示す新しいマシン構成ファイルを使用する必要があります。Qualcomm Linux 1.1の以前のマシン構成ファイル（`qcm6490.conf`）は、Qualcomm Linux 1.2のマシン構成ファイルに置き換えられました。

    | 構成ファイル | 説明 |
    | --- | --- |
    | `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（低解像度 / 高解像度 CSI カメラ搭載）を備えた Qualcomm^®^ RB3 Gen 2 Vision 開発キット用です。 |
    | `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` **のOVERRIDEの使用**

    Qualcomm BSPはBitBake OVERRIDEを使用して、BSPをビルドするための2つの異なる方法を定義しています。

    メタデータレイヤーは以下のように、`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` の2つのMACHINEOVERRIDESは、`qcom-custom-bsp` と `qcom-base-bsp` です。これらのOVERRIDEは、マシン構成ファイル、レシピ、および `meta-qcom-hwe` メタデータレイヤー内のその他の構成ファイルによって使用されます。構成ファイルとレシピは、これらのOVERRIDE構成を使用して、特定の条件が満たされた場合に変数を設定し、必要に応じてタスクを追加します。

    レシピと構成ファイルはMACHINEOVERRIDESを使用して、ビルド時に有効なOVERRIDEに基づいて、最終イメージがQualcommのカスタムBSPソフトウェア・コンポーネントで構成されるか、アップストリーム・ソフトウェア・コンポーネントで構成されるかを特定します。

    例えば、`egl`、`libgl`、`libgles1`、`libgles2` のPREFERRED\_PROVIDERは以下のように設定されます。

    | 有効なOVERRIDE | `egl`、`libgl`、`libgles1`、`libgles2` のPREFERRED\_PROVIDER |
    | --- | --- |
    | `qcom-custom-bsp` | `adreno` |
    | `qcom-base-bsp` | `mesa` |

    BitBakeのコード・スニペットでは、特定の条件が満たされた場合にOVERRIDEによって以下のように変数が設定されます。

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

注釈

このリリースでは、`qcom-base-bsp` OVERRIDEは `qcs9100-ride-sx.conf` と `qcs8300-ride-sx.conf` のためだけにビルドされています。

> 
> 
> - **カーネルのcmdline**
> 
> 
>     `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のインクルード**
> 
> 
>     正しいデバイス・ツリー・バイナリ（DTB）が含まれるようにするために、 `KERNEL_DEVICETREE` 変数はOVERRIDE方式を使用して特定の条件が満たされた場合に設定されます。これは、`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` 向けに設定され、アップストリームDTBを使用する `base` バリアントとなるかを示しています。
> 
> 
> 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` 向けに設定され、アップストリームDTBを使用する `custom` バリアントとなるかを示しています。
> 
> 
> KERNEL_DEVICETREE:pn-linux-qcom-custom = " \
>                              qcom/qcs9100-addons-ride.dtb \
>                              qcom/qcs9100-addons-ride-r3.dtb \
>                              qcom/sa8775p-addons-ride.dtb \
>                              qcom/sa8775p-addons-ride-r3.dtb \
>                              "
>         Copy to clipboard
> - **追加DTBOのインクルード**
> 
> 
>     カーネルデバイスツリーにオーバーレイされる追加のデバイスツリーオーバーレイ（DTBO）を含めるには、`KERNEL_TECH_DTBOS` 変数を使用してDTBO名をリストします。
> 
> 
> 注釈
> 
> 
> Qualcomm Linuxは、デバイスツリー・バイナリ・オーバーレイを `custom` バリアントでのみサポートしています。
> 
> 
>     以下の例では、`qcs9100-ride-sx.conf` で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` | 互換性のあるターゲット用の必須ブート・ファームウェア・バイナリの取得、解凍、展開を処理します。QCS6490、QCS9075、およびQCS8300 ベースのマシンに必要なブート・ファームウェアは、`QCM6490_bootbinaries.zip`、`QCS9100_bootbinaries.zip`、および `QCS8300_bootbinaries` ファイルから提供されます。 |

        ビルドが生成された後、これらのzipファイルに含まれるファームウェア・バイナリは、以下のディレクトリでフラッシュ可能です。

        `<workspace>/build-qcom-wayland/tmp-glibc/deploy/images/<machine-name>/<image-name>/`
    - **サブシステム・ファームウェア・バイナリ**

        Qualcomm Linuxには、対応するサブシステムにロードされ、実行されるファームウェア・バイナリが含まれています。クアルコムのハードウェアSoCが起動すると、各サブシステムはリセットから復帰する際にファームウェアを実行します。

        | ファームウェアレシピ | 説明 |
        | --- | --- |
        | `firmware-qcom-hlosfw_1.0.bb` | aDSP、cDSP、モデム、WLANなどのサブシステム・ファームウェア・バイナリの取得、解凍、インストールを処理します。QCM6490、QCS9075、およびQCS8300ベースのマシン用のファームウェア・ファイルは、`QCM6490_fw.zip`、`QCS9100_fw.zip`、および `QCS8300_fw.zip` ファイルに圧縮されています。 |

        `firmware-qcom-hlosfw_1.0.bb` レシピは以下を実行します。

> 
> 
> 1. SRC\_URIに基づいて、リモートサーバーからサブシステム・ファームウェア・バイナリを取得します。
>         2. zipファイルを解凍します。
>         3. ファームウェアを `rootfs` にインストールします。
    - **DSPライブラリ**

        ユーザー空間ユーティリティは、`rootfs` イメージで利用可能となっている必要があるDSPライブラリを参照します。以下のファームウェアレシピは、ハードウェアSoC固有のDSPライブラリを提供します。

        | ファームウェアレシピ | 説明 |
        | --- | --- |
        | `firmware-qcom-dspso_1.0.bb` | DSPライブラリの取得、解凍、インストールを処理します。QCM6490、QCS9075、およびQCS8300ベースのマシン用のライブラリは、`QCM6490_dspso.zip`、`QCS9100_dspso.zip`、および `QCS8300_dspso.zip` のzipファイルに圧縮されています。 |

        `firmware-qcom-dspso_1.0.bb` レシピは以下を実行します。

> 
> 
> 1. SRC\_URIに基づいて、リモートサーバーからDSPライブラリを取得します。
>         2. zipファイルを解凍します。
>         3. DSPライブラリを `rootfs` にインストールします。
    - **ブート、サブシステム、dspsoのインストール**

        Qualcomm Linuxがビルドされる際に、ビルドシステムは、ファームウェアレシピを使用して、マシン構成ファイルに設定されている `MACHINE_EXTRA_RDEPENDS` 構成変数に基づいて、ビルド済みファームウェアを展開します。例えば、`qcom-qcs6490.inc` では、`MACHINE_EXTRA_RDEPENDS` 変数に `packagegroup-firmware-qcm6490` が含まれていることを確認できます。

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

注釈

`packagegroup-firmware-qcm6490` レシピは `<workspace>/layers/meta-qcom-hwe/recipes-firmware/packagegroups/` ディレクトリに存在しています。これはイメージを生成するためにファームウェアレシピをグループ化しています。

        Qualcomm Linuxがビルドされると、マシン構成およびパッケージ・グループ・レシピ・ファイルの構成に基づいて、`<workspace>/layers/meta-qcom-hwe/recipes-firmware/firmware` ディレクトリからそれぞれのファームウェアレシピがビルドされます。
- **カーネルレシピ**

    Qualcomm Linuxで使用されるLinuxカーネルのレシピは、`<workspace>/layers/meta-qcom-hwe/recipes-kernel/linux` にあります。

    Qualcomm Linuxは、長期サポート（LTS）のLinuxカーネルv6.6.xをサポートしています。`meta-qcom-hwe` レイヤーには、2種類の異なるカーネル・レシピがあります。

    - `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

    マシン構成ファイルはOVERRIDEを使用して適切なカーネル・レシピ・バリアントを選択します。`qcom-base.inc` ファイルでは、`base` バリアントが選択されている場合には、`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`,<br>`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コマンドを使用してイメージをビルドするシェルでDEBUG\_BUILDを1に設定します。

    この設定は以下のコードで有効になります。

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

    Qualcommプラットフォーム用のカーネルモジュールを自動ロードするには、Qualcomm LinuxカーネルレシピのKERNEL\_MODULE\_AUTOLOAD変数を更新します。例えば、CoreSightモジュールとSTMモジュールは以下のように自動ロードされます。

KERNEL_MODULE_AUTOLOAD += "coresight coresight-tmc coresight-funnel"
        KERNEL_MODULE_AUTOLOAD += "coresight-replicator coresight-etm4x coresight-stm"
        KERNEL_MODULE_AUTOLOAD += "coresight-cti coresight-tpdm coresight-tpda coresight-dummy"
        KERNEL_MODULE_AUTOLOAD += "coresight-remote-etm coresight-tgu"
        KERNEL_MODULE_AUTOLOAD += "stm_core stm_p_ost stm_console stm_heartbeat stm_ftrace "
        Copy to clipboard
- **ライセンス**

    `meta-qcom-hwe` のレシピのライセンスは `<workspace>/meta-qcom-hwe/files/common-licenses` に記載されています。

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

    Yoctoは、イメージの作成に基づいてSPDX SBOMドキュメントを自動的に作成できます。この機能を有効にするには、以下のように `local.conf` で `create-spdx` クラスを継承します。

INHERIT += "create-spdx"
        Copy to clipboard

    クラスを継承した後は、BitBakeコマンドでイメージを再ビルドできます。

bitbake qcom-multimedia-image
        Copy to clipboard

    SPDXの出力は以下のディレクトリにあります。

    - 各レシピについて、生成されたファイルは `tmp/deploy/spdx/<machine>` ディレクトリにあります。
    - トップレベルのSPDX出力ファイルは `tmp/deploy/images/MACHINE/<image-recipe>-<MACHINE>.spdx.json` ディレクトリにあります。

## meta-qcom-distro

このレイヤーは、Qualcomm Linux用のリファレンス・ディストリビューション構成を提供します。イメージ・レシピとパッケージ・グループはこのレイヤーで定義されます。

- **BitBakeクラス**

    Qualcomm Linux は、デバイスへのアクセスに SSH と UART のシリアルシェルの両方をサポートしています。デバイスへのアクセスには、SSH または UART のいずれかを選択できます。また、ADB を使用して、IP インターフェースが停止しているときに問題をデバッグしたり、大きなファイルを転送したりすることもできます。

    以下の表では、[クラス](https://github.com/qualcomm-linux/meta-qcom-distro/tree/scarthgap/classes) で公開されているBitBakeクラスについて紹介しています。

    | BitBakeクラス | 説明 |
    | --- | --- |
    | `image-adbd.bbclass` | `meta-qcom-distro` の `image-adbd.bbclass` クラスはイメージにadbdをインストールします。`IMAGE_FEATURES` に `enable-adbd` 機能が含まれていない限り、adbdデーモンは無効のままです。`rootfs` から `/etc/usb-debugging-enabled` を手動で削除することで、adbdを無効にできます。 |
    | `image-qcom-deploy.bbclass` | `<workspace>/build-<distro>/tmp-glibc/deploy/images/<machine>/<image-name>` で利用可能なイメージファイルを展開します。生成されたイメージは `<image-name>` サブディレクトリに展開されます。 |
- **ディストリビューション構成**

    以下の表では、[GitHub](https://github.com/qualcomm-linux/meta-qcom-distro/tree/scarthgap/conf/distro) で公開されているディストリビューション構成を紹介しています。

    | ディストリビューション構成 | 説明 |
    | --- | --- |
    | `conf/distro/qcom-wayland.conf` | このディストリビューション構成ファイルは `qcom-wayland` ディストリビューションを定義します。`qcom-wayland` ディストリビューションは以下のコマンド例で使用できます。<br><br><br><br>> <br>> <br>> MACHINE=qcs6490-rb3gen2-core-kit DISTRO=qcom-wayland QCOM_SELECTED_BSP=base source setup-environment<br>>         Copy to clipboard<br><br><br><br>`meta-qcom-distro/conf/distro/include/qcom-base.inc` 構成は共通のDISTRO\_FEATURESを定義します。`meta-qcom-distro/conf/distro/qcom-wayland.conf` 構成は以下の機能を追加します。<br><br><br><br>> <br>> <br>> <ul class="simple"><br>> <li><p><code class="docutils literal notranslate"><span class="pre">wayland</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">vulkan</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">opengl</span></code></p></li><br>> </ul><br><br><br><br>Yocto Projectドキュメントでは、これらのディストリビューション機能を [ディストリビューション機能](https://docs.yoctoproject.org/5.0.6/singleindex.html#distro-features) で定義しています。 |
    | `conf/distro/include/qcom-base.inc` | INIT\_MANAGER は `systemd` に設定されています。INIT\_MANAGERに関するYocto Projectドキュメントについては、[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>このファイルでは、INIT\_MANAGERとして `systemd` を、DEV\_MANAGERとして `udev` を選択しています。 |
    | `conf/distro/include/qcom-security_flags.inc` | このファイルには、[セキュリティ・フラグ](https://git.yoctoproject.org/poky/tree/meta/conf/distro/include/security_flags.inc?h=scarthgap) に定義されているセキュリティ・フラグが含まれています。 |
- **パッケージグループ**

    パッケージグループは `meta-qcom-hwe` と `meta-qcom-distro` で定義されています。これらのパッケージグループは、Qualcomm BSPで定義されている機能を理解する際に役立ちます。以下の表は、パッケージグループの概要です。

    | パッケージグループ | 説明 |
    | --- | --- |
    | `packagegroup-qcom.bb` | すべての基本パッケージを含むパッケージグループ。 |
    | `packagegroup-qcom-multimedia.bb` | マルチメディアサポートを有効にするためのパッケージを含むパッケージグループ。<br><br><br><br>> <br>> <br>> <ul class="simple"><br>> <li><p><code class="docutils literal notranslate"><span class="pre">packagegroup-container</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">packagegroup-qcom-audio</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">packagegroup-qcom-camera</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">packagegroup-qcom-display</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">packagegroup-qcom-fastcv</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">packagegroup-qcom-graphics</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">packagegroup-qcom-k8s</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">packagegroup-qcom-opencv</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">packagegroup-qcom-video</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">python3-docker-compose</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">packagegroup-qcom-iot-base-utils</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">packagegroup-qcom-location</span></code></p></li><br>> </ul><br>> <br>> 注釈<br>> <br>> <br>> `packagegroup-qcom-location` は `meta-qcom-extras` メタデータレイヤーで定義されています。 |
    | `packagegroup-qcom-test-pkgs.bb` | テストパッケージを含むパッケージグループ。 |
- **イメージレシピ**

    `meta-qcom-distro` というQualcomm Linuxのメタデータレイヤー はイメージ・レシピを定義しており、このレシピは [GitHub](https://github.com/qualcomm-linux/meta-qcom-distro/tree/scarthgap/recipes-products/images) で公開されています。以下の表は、さまざまなイメージとその `IMAGE_FEATURES`、およびイメージが提供する機能の一覧です。

    | イメージレシピ | イメージの説明 |
    | --- | --- |
    | `qcom-minimal-image.bb` | 起動するための小規模な `rootfs` をシェルに定義します。<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` | `qcom-multimedia-image` 用のeSDKを生成します。 |
    | `qcom-guestvm-image.bb` | シェル起動をサポートした最小限のカーネルベース仮想マシン（KVM）イメージです。 |
- **QDLフラッシングツール**

    QDLは、USBデバイスと通信し、フラッシュ・ローダーをデバイスにアップロードするフラッシング・ツールです。フラッシュ・ローダーは、ユニバーサル・フラッシュ・ストレージ（UFS）またはデバイスに内蔵された組み込み型マルチメディアカード（eMMC）にイメージをフラッシュします。`QDL フラッシング` の詳細については、[QDL](https://docs.qualcomm.com/bundle/publicresource/topics/80-70020-254/flash_images.html) を参照してください。

## meta-qcom-realtime

`meta-qcom-realtime` メタデータレイヤー は [GitHub](https://github.com/qualcomm-linux/meta-qcom-realtime) で公開されています。このレイヤーは、クアルコム製デバイス用のリアルタイム・カーネルをビルドする際に必要となる付加的なソフトウェア・サポートを提供します。

- **カーネルレシピ**

    Qualcomm 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レシピを通じて保守されています。保留中のPREEMPT\_RTパッチは [リアルタイム](https://wiki.linuxfoundation.org/realtime/start) にあります。これらのパッチは取得され、[Codelinaro](https://git.codelinaro.org/clo/la/kernel/qcom.git) で公開されている `linux-qcom-custom-rt_6.6.bb` 上に適用されます。

    Qualcomm製デバイス用のリアルタイムカーネルをコンパイルするには：

> 
> 
> - OVERRIDEで `custom` を選択した場合は、`conf/layer.conf` は `linux-qcom-custom-rt` を選択します。
>     - OVERRIDEで `base` を選択した場合は、`conf/layer.conf` は `linux-qcom-base-rt` を選択します。

    **カーネル構成**

    どちらのレシピも、以下のように `qcom_rt.cfg` フラグメントを追加します。

KERNEL_CONFIG_FRAGMENTS:append = " ${WORKDIR}/qcom_rt.cfg"
        Copy to clipboard
- **ビルド時の** `meta-qcom-realtime` **の有効化**

    `meta-qcom-realtime` をビルドに有効にするには、以下の手順で説明するように、`meta-qcom-realtime` レイヤーを `bblayers.conf` の EXTRALAYERS にエクスポートします。

    1. 環境をセットアップするsourceコマンドを実行します。

        以下は QCS6490 ベースのマシンと `qcom-wayland` ディストリビューションの環境をセットアップする source コマンドの例です。

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` レイヤーで定義されたファームウェア・レシピ用のレシピ追加ファイルを `meta-qcom-hwe/recipes-firmware/firmware` で提供しています。これらのレシピ追加ファイルは、以下のコード・スニペットに示されているとおり `.bbapend` という拡張子を持ちます。ファームウェア・レシピの追加ファイルには、このQualcomm Linuxリリースで配布されているデフォルトのzipファイルの代わりに使用することが可能なzipファイルを設定する `SRC_URI` が含まれています。

    [Qualcomm Linux ビルド・ガイド](https://docs.qualcomm.com/bundle/publicresource/topics/80-70020-254/build_addn_info.html) に従って、cDSP、aDSP、ブート・ファームウェアをビルドし、用意されているレシピ追加ファイルを使用して、統合できる zip ファイルを生成します。

    | recipes-firmware<br>        └── firmware<br>           ├── firmware-qcom-bootbins_1.0.bbappend<br>           ├── firmware-qcom-dspso_1.0.bbappend<br>           ├── firmware-qcom-hlosfw_1.0.bbappend<br>           └── firmware-qcom-partconf_1.0.bbappend<br>        Copy to clipboard | `meta-qcom-extras` のレシピは、`meta-qcom-hwe` のレシピにある `SRC_URI` を上書きします。`meta-qcom-hwe` レイヤーは、デフォルトではビルド済みのファームウェアバイナリを使用しますが、`meta-qcom-extras` レイヤーは、ユーザーによって提供されたファームウェアzipをビルドします。<br><br><br>`meta-qcom-extras` レイヤーは、デフォルトの.zipファイルに用意されているビルド済みのバイナリを無視します。これらのレシピは、代わりに以下のようにFWZIP\_PATHに設定されたユーザー提供の.zipファイルを検索します。<br><br><br><br>> <br>> <br>> <ul class="simple"><br>> <li><p><code class="docutils literal notranslate"><span class="pre">firmware-qcom-bootbins_1.0.bbappend</span></code>：<code class="docutils literal notranslate"><span class="pre">FWZIP_PATH</span></code> 変数で定義されたパス以下にあるzipアーカイブを検索します。</p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">firmware-qcom-hlosfw_1.0.bbappend</span></code>：<code class="docutils literal notranslate"><span class="pre">FWZIP_PATH</span></code> 変数で定義されたパス以下にあるzipアーカイブを検索します。</p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">firmware-qcom-dspso_1.0.bbappend</span></code>：<code class="docutils literal notranslate"><span class="pre">FWZIP_PATH</span></code> 変数で定義されたパス以下にあるzipアーカイブを検索します。</p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">firmware-qcom-partconf_1.0.bbappend</span></code>：<code class="docutils literal notranslate"><span class="pre">FWZIP_PATH</span></code> 変数で定義されたパス以下にあるzipアーカイブを検索します。</p></li><br>> </ul> |
    | --- | --- |

## meta-qcom-qim-product-sdk

- **BitBakeクラス**

    以下の表は、`meta-qcom-qim-product-sdk` メタデータレイヤーで定義されているBitBakeクラスの一覧です。

    | BitBakeクラス | 説明 |
    | --- | --- |
    | `qim-prod-sdk-pkg.bbclass` | <ul class="simple"><br><li><p>Qualcomm Intelligent Multimedia（QIM）SDK アーティファクトをアーカイブに圧縮するパッケージ・タスクを提供します。これは、<code class="docutils literal notranslate"><span class="pre">qim-product-sdk</span></code> レシピによって呼び出されます。</p></li><br><li><p>簡単にインストールできるアーティファクトアーカイブは、レシピのビルドが完了した後、<code class="docutils literal notranslate"><span class="pre">&lt;workspace&gt;/build-qcom-wayland/tmp-glibc/deploy/qim_prod_sdk_artifacts</span></code> ディレクトリに保存されています。</p></li><br></ul> |
    | `qimsdk-pkg.bbclass` | <ul class="simple"><br><li><p>Qualcomm Multimedia SDKパッケージを、使用しやすいインストールスクリプトとともにアーカイブにパッケージするタスクを提供します。開発、展開、デバッグを行うためのパッケージを含む個別のアーカイブが生成されます。</p></li><br><li><p>簡単にインストールできるアーティファクトアーカイブは、<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アーティファクトを複数のアーカイブに圧縮するパッケージ・タスクを提供します。これは、ビルド中に <code class="docutils literal notranslate"><span class="pre">tflite-sdk</span></code> レシピによって呼び出されます。</p></li><br><li><p>簡単にインストールできるアーティファクトアーカイブは、レシピのビルドが完了した後、<code class="docutils literal notranslate"><span class="pre">&lt;workspace&gt;/build-qcom-wayland/tmp-glibc/deploy/qim_prod_sdk_artifacts</span></code> ディレクトリに保存されています。</p></li><br></ul> |
- **ディストリビューション構成**

    | `layer.conf` | プロジェクトレイヤーを以下の情報とともに構成します。<br><br><br><br>> <br>> <br>> <ul class="simple"><br>> <li><p>レシピファイルのパス情報</p></li><br>> <li><p>サポートするYoctoバージョン</p></li><br>> <li><p>サポートするQualcomm<sup>®</sup> Hexagon<sup>™</sup> プロセッサーバージョン</p></li><br>> <li><p>サポートするQualcomm<sup>®</sup> 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` | 2種類のレシピで構成されています。<br><br><br><br>> <br>> <br>> <ul class="simple"><br>> <li><p><code class="docutils literal notranslate"><span class="pre">qnn.bb</span></code>：QNN SDKのパッケージに使用</p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">snpe.bb</span></code>：Qualcomm Neural Processing SDKのパッケージに使用</p></li><br>> </ul> |
    | `recipes-qim-product-sdk` | QIM、Qualcomm Neural Processing、QNN、およびLite Runtime SDKを含むQIM製品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` | Qualcommプラグインとともにアップストリームの基本的なGStreamerを有効にするパッケージグループ：<br><br><br><br>> <br>> <br>> <ul class="simple"><br>> <li><p><code class="docutils literal notranslate"><span class="pre">gstreamer1.0-plugins-qcom-oss-base</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">gstreamer1.0-plugins-qcom-oss-tools</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">gstreamer1.0-plugins-qcom-oss-batch</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">gstreamer1.0-plugins-qcom-oss-metamux</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">gstreamer1.0-plugins-qcom-oss-mldemux</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">gstreamer1.0-plugins-qcom-oss-mlmeta</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">gstreamer1.0-plugins-qcom-oss-mlvconverter</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">gstreamer1.0-plugins-qcom-oss-mlvclassification</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">gstreamer1.0-plugins-qcom-oss-mlvdetection</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">gstreamer1.0-plugins-qcom-oss-mlvpose</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">gstreamer1.0-plugins-qcom-oss-mlvsegmentation</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">gstreamer1.0-plugins-qcom-oss-overlay</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">gstreamer1.0-plugins-qcom-oss-qmmfsrc</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">gstreamer1.0-plugins-qcom-oss-socket</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">gstreamer1.0-plugins-qcom-oss-vcomposer</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">gstreamer1.0-plugins-qcom-oss-vsplit</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">gstreamer1.0-plugins-qcom-oss-vtransform</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">gstreamer1.0-qcom-oss-sample-apps</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">gstreamer1.0-plugins-qcom-oss-mlsnpe</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">gstreamer1.0-plugins-qcom-oss-mlqnn</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">gstreamer1.0-plugins-qcom-oss-mltflite</span></code></p></li><br>> </ul><br><br><br><br>アップストリームのGStreamerパッケージも含まれています。<br><br><br><br>> <br>> <br>> <ul class="simple"><br>> <li><p><code class="docutils literal notranslate"><span class="pre">cairo</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">gdk-pixbuf</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">liba52</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">libdaemon</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">libgudev</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">lame</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">libpsl</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">librsvg</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">libsoup-2.4</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">libtheora</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">libwebp</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">mpg123</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">orc</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">sbc</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">speex</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">taglib</span></code></p></li><br>> </ul> |
    | `packagegroup-qcom-gst-basic` | アップストリームのGStreamerを有効にするパッケージグループ：<br><br><br><br>> <br>> <br>> <ul class="simple"><br>> <li><p><code class="docutils literal notranslate"><span class="pre">gstreamer1.0</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">gstreamer1.0-plugins-base</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">gstreamer1.0-plugins-good</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">gstreamer1.0-plugins-bad</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">gstreamer1.0-rtsp-server</span></code></p></li><br>> </ul> |
    | `packagegroup-qcom-qim-product` | 以下のパッケージをインストールスクリプトとともに圧縮するパッケージグループ：<br><br><br><br>> <br>> <br>> <ul class="simple"><br>> <li><p><code class="docutils literal notranslate"><span class="pre">packagegroup-qcom-gst</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">packagegroup-qcom-ml</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">install.sh</span></code></p></li><br>> </ul> |
    | `packagegroup-qcom-ml` | Qualcomm MLフレームワークを圧縮するパッケージグループ：<br><br><br><br>> <br>> <br>> <ul class="simple"><br>> <li><p><code class="docutils literal notranslate"><span class="pre">tensorflow-lite</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">qnn</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">snpe</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">libgomp-dev</span></code></p></li><br>> </ul> |

Last Published: Dec 23, 2025

[Previous Topic
Qualcomm Linuxの特徴](https://docs.qualcomm.com/bundle/publicresource/80-70020-27JA/topics/qualcomm_linux_features.md) [Next Topic
Qualcomm LinuxメタデータレイヤーでのBitBake OVERRIDEの使用](https://docs.qualcomm.com/bundle/publicresource/80-70020-27JA/topics/use-of-bitbake-overrides.md)