# Qualcomm Linux 메타데이터 계층

다음 계층은 Qualcomm 보드 지원 패키지(BSP) 메타데이터를 나타냅니다.

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

다음 계층은 `qcom-wayland` 참조 배포판을 정의합니다.

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

다음 메타데이터 계층은 선택적인 BSP를 정의합니다.

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

## meta-qcom

`meta-qcom` 메타데이터 계층은 [git.yoctoproject.org](http://git.yoctoproject.org) 에 호스팅되며 Qualcomm OSS를 빌드하기 위한 레시피를 제공합니다. `meta-qcom` 계층에서 다음 레시피를 사용하여 소프트웨어 이미지를 빌드하세요.

| 레시피 | 설명 |
| --- | --- |
| `recipes-devtools/qdl/qdl_git.bb` | Qualcomm 다운로드(QDL) 플래시 도구는 ID 05c6:9008을 표시하는 USB 기기와 통신하여 플래시 로더를 업로드하고 이 레시피를 사용하여 이미지를 플래시합니다. |
| `recipes-support/pd-mapper/pd-mapper_git.bb` | Qualcomm pd-mapper는 보호 도메인 매퍼 서비스를 위한 구현입니다. 이 서비스는 보호 도메인을 구성하고 관리하여 애플리케이션과 다양한 원격 프로세서 간의 안전한 통신을 보장합니다. |
| `recipes-support/qrtr/qrtr_git.bb` | Qualcomm 라우터(QRTR)는 Qualcomm 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) 에서 사용할 수 있습니다. 이 계층은 Qualcomm 기기를 활성화하기 위한 추가 소프트웨어 지원을 제공합니다.

참고

이 가이드에서는 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` 디렉토리에 있는 파일은 필요한 BitBake 변수를 정의하고 설정하며, 이러한 변수는 Qualcomm BSP에 정의된 컴퓨터 구성에서 일반적으로 사용될 수 있습니다. 다음 표는 이러한 파일의 개요를 제공합니다.

    | 파일 | 설명 |
    | --- | --- |
    | `meta-qcom-hwe/conf/machine/include/qcom-base.inc` | 이 파일은 Qualcomm BSP에 정의된 모든 컴퓨터 구성에서 일반적으로 공유하는 BitBake 변수를 설정합니다. 예를 들어 `SOC_ARCH`, `PREFERRED_PROVIDER` 및 `IMAGE_FSTYPES` 가 있습니다. |
    | `meta-qcom-hwe/conf/machine/include/qcom-qcs6490.inc` | 이 파일은 `SOC_FAMILY` 변수를 `qcm6490` 으로 설정합니다. 따라서 Qualcomm Linux 레시피는 `qcm6490` OVERRIDE를 사용하여 Qualcomm BSP 관련 변경 사항을 구현할 수 있습니다. 또한 이 파일은 QCS6490에 기반한 모든 Qualcomm 개발 키트에서 공유하는 구성 변수를 정의합니다. |
    | `meta-qcom-hwe/conf/machine/include/qcom-qcs9100.inc` | 이 파일은 `SOC_FAMILY` 변수를 `qcs9100` 으로 설정합니다. 따라서 Qualcomm Linux 레시피는 `qcs9100` OVERRIDE를 사용하여 Qualcomm BSP 관련 변경 사항을 구현할 수 있습니다. 또한 이 파일은 QCS9100에 기반한 모든 Qualcomm 개발 키트에서 공유하는 구성 변수를 정의합니다. |
    | `meta-qcom-hwe/conf/machine/include/qcom-qcs8300.inc` | 이 파일은 `SOC_FAMILY` 변수를 `qcs8300` 으로 설정합니다. 따라서 Qualcomm Linux 레시피는 `qcs8300` OVERRIDE를 사용하여 Qualcomm BSP 관련 변경 사항을 구현할 수 있습니다. 또한 이 파일은 QCS8300에 기반한 모든 Qualcomm 개발 키트에서 공유하는 구성 변수를 정의합니다. |
    | `meta-qcom-hwe/conf/machine/include/qcom-qcs615.inc` | 이 파일은 `SOC_FAMILY` 변수를 `qcs615` 로 설정합니다. 따라서 Qualcomm Linux 레시피는 `qcs615` OVERRIDE를 사용하여 Qualcomm BSP 관련 변경 사항을 구현할 수 있습니다. 또한 이 파일은 QCS615에 기반한 모든 Qualcomm 개발 키트에서 공유하는 구성 변수를 정의합니다. |

    **QCS6490에 기반한 개발 키트의 컴퓨터 구성 파일**

참고

Qualcomm Linux 1.2 이후 릴리스에서는 다음 표에 나열된 새로운 컴퓨터 구성 파일을 사용해야 합니다. Qualcomm Linux 1.2에서는 Qualcomm Linux 1.1의 이전 컴퓨터 구성 파일인 `qcm6490.conf` 가 대체되었습니다.

    | 구성 파일 | 설명 |
    | --- | --- |
    | `conf/machine/qcm6490-idp.conf` | 이 파일은 QCM6490이 포함된 통합 개발 플랫폼(IDP)용입니다. |
    | `conf/machine/qcs6490-rb3gen2-core-kit.conf` | 이 파일은 QCS6490 SoC가 포함된 Qualcomm Dragonwing^™^ RB3 Gen 2 코어 개발 키트용입니다. |
    | `conf/machine/qcs6490-rb3gen2-vision-kit.conf` | 이 파일은 저해상도/고해상도 CSI 카메라가 탑재된 QCS6490 SoC가 있는 Qualcomm Dragonwing^™^ RB3 Gen 2 비전 개발 키트용입니다. |
    | `conf/machine/qcs6490-rb3gen2-industrial-kit.conf` | 이 파일은 QCS6490 SoC가 포함된 Qualcomm Dragonwing^™^ RB3 Gen 2 산업 개발 키트용입니다. |

    **IQ-9075 및 IQ-9100에 기반한 개발 키트의 컴퓨터 구성 파일**

    | 구성 파일 | 설명 |
    | --- | --- |
    | `conf/machine/qcs9100-ride-sx.conf` | 이 파일은 IQ-9100 SoC가 포함된 Qualcomm^®^ IQ-9 베타 평가 키트(EVK)용입니다. |
    | `conf/machine/qcs9075-ride-sx.conf` | 이 파일은 IQ-9075 SoC가 포함된 Qualcomm IQ-9 베타 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 베타 EVK용입니다. |
    | `qcs8275-iq-8275-evk.conf` | 이 파일은 IQ-8275 SoC가 포함된 Qualcomm Dragonwing^™^ IQ-8275 EVK용입니다. |
    | `qcs8275-iq-8275-evk-ifp.conf` | 이 파일은 IQ-8275 SoC가 포함된 Dragonwing^™^ IQ-8275 EVK용입니다. |

    **IQ-615에 기반한 개발 키트의 컴퓨터 구성 파일**

    | 구성 파일 | 설명 |
    | --- | --- |
    | `conf/machine/qcs615-adp-air.conf` | 이 파일은 IQ-615 SoC가 포함된 Qualcomm Dragonwing^™^ IQ-615 EVK용입니다. |

    `meta-qcom-hwe` **에서 OVERRIDES 사용**

    Qualcomm BSP는 BitBake OVERRIDES를 사용하여 BSP를 빌드하는 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` 의 MACHINEOVERRIDES 2개는 `qcom-custom-bsp` 와 `qcom-base-bsp` 입니다. 이러한 OVERRIDES는 컴퓨터 구성 파일, 레시피 및 `meta-qcom-hwe` 메타데이터 계층 내의 다른 구성 파일에서 사용됩니다. 구성 파일과 레시피는 이러한 OVERRIDE 구문을 사용하여 조건부로 변수를 설정하고 필요에 따라 작업을 추가합니다.

    레시피와 구성 파일은 MACHINEOVERRIDES를 사용하여 빌드 시 적용되는 OVERRIDE에 따라 최종 이미지가 Qualcomm의 커스텀 BSP 소프트웨어 구성 요소로 구성되는지, 업스트림 소프트웨어 구성 요소로 구성되는지를 결정합니다.

    예를 들어 `egl`, `libgl`, `libgles1` 및 `libgles2` 에 대한 PREFERRED\_PROVIDER는 다음과 같이 설정됩니다.

    | 효과적인 OVERRIDE | `egl`, `libgl`, `libgles1`, `libgles2` 에 대한 PREFERRED\_PROVIDER |
    | --- | --- |
    | `qcom-custom-bsp` | `adreno` |
    | `qcom-base-bsp` | `mesa` |

    BitBake 코드 조각에서 OVERRIDES는 다음과 같이 조건부로 변수를 설정합니다.

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

참고

이 릴리스에서 `qcom-base-bsp` OVERRIDE는 오직 `qcs9100-ride-sx.conf` 및 `qcs8300-ride-sx.conf` 용으로 빌드됩니다.

> 
> 
> - **커널 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 포함**
> 
> 
>     `KERNEL_DEVICETREE` 변수를 조건부로 설정하며, OVERRIDES 메커니즘을 사용해 올바른 기기 트리 바이너리(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` 에 설정되어 업스트림 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` | 호환되는 타겟에 필요한 필수 부팅 펌웨어 바이너리의 페치, 압축 풀기 및 배포를 처리합니다. `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, 모뎀, WLAN 등 서브시스템 펌웨어 바이너리의 페치, 압축 풀기 및 설치를 처리합니다. `QCM6490_fw.zip`, `QCS9100_fw.zip` 및 `QCS8300_fw.zip` 파일은 QCM6490, QCS9075 및 QCS8300 기반 컴퓨터에 대한 펌웨어 파일을 압축합니다. |

        `firmware-qcom-hlosfw_1.0.bb` 레시피는 다음을 수행합니다.

> 
> 
> 1. SRC\_URI에 기반한 원격 서버에서 서브시스템 펌웨어 바이너리를 페치합니다.
>         2. zip 파일의 압축을 풉니다.
>         3. `rootfs` 에 펌웨어를 설치합니다.
    - **DSP 라이브러리**

        사용자 공간 유틸리티는 DSP 라이브러리를 참조하며, 이 라이브러리는 `rootfs` 이미지에 포함되어야 합니다. 다음 펌웨어 레시피는 하드웨어 SoC별 DSP 라이브러리를 제공합니다.

        | 펌웨어 레시피 | 설명 |
        | --- | --- |
        | `firmware-qcom-dspso_1.0.bb` | DSP 라이브러리의 페치, 압축 풀기 및 설치를 처리합니다. `QCM6490_dspso.zip`, `QCS9100_dspso.zip` 및 `QCS8300_dspso.zip` zip 파일은 QCM6490, QCS9075 및 QCS8300 기반 컴퓨터에 대한 라이브러리를 압축합니다. |

        `firmware-qcom-dspso_1.0.bb` 레시피는 다음을 수행합니다.

> 
> 
> 1. SRC\_URI에 기반한 원격 서버에서 DSP 라이브러리를 페치합니다.
>         2. zip 파일의 압축을 풉니다.
>         3. `rootfs` 에 DSP 라이브러리를 설치합니다.
    - **부팅, 서브시스템 및 dspso의 설치**

        Qualcomm Linux가 빌드되면 빌드 시스템은 컴퓨터 구성 파일에 설정된 `MACHINE_EXTRA_RDEPENDS` 구성 변수에 기반하여 펌웨어 레시피를 사용하여 사전 빌드된 펌웨어를 배포합니다. 예를 들어 `qcom-qcs6490.inc` 에서는 `MACHINE_EXTRA_RDEPENDS` 변수에 `packagegroup-firmware-qcm6490` 이 포함된 것을 확인할 수 있습니다.

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

참고

`packagegroup-firmware-qcm6490` 레시피는 `<workspace>/layers/meta-qcom-hwe/recipes-firmware/packagegroups/` 디렉토리에 있습니다. 이 레시피는 펌웨어 레시피를 그룹화하여 이미지를 생성합니다.

        Qualcomm Linux가 빌드되면 컴퓨터 구성 및 패키지 그룹 레시피 파일의 구성에 따라 `<workspace>/layers/meta-qcom-hwe/recipes-firmware/firmware` 디렉토리의 각 펌웨어 레시피가 빌드됩니다.
- **커널 레시피**

    Qualcomm Linux에서 사용하는 Qualcomm Linux 커널 레시피는 `<workspace>/layers/meta-qcom-hwe/recipes-kernel/linux` 에 있습니다.

    Qualcomm Linux는 장기 지원(LTS) Qualcomm Linux 커널 v6.6.x를 지원합니다. `meta-qcom-hwe` 계층에는 두 개의 고유 커널 레시피가 있습니다.

    - `linux-qcom-custom_6.6.bb` 레시피는 `custom` BSP를 지원하고 `git.codelinaro.org` 에 호스팅되는 `qcom.git` 에서 커널 소스를 페치합니다.
    - `linux-qcom-base_6.6.bb` 레시피는 `base` BSP를 지원하고 `git.kernel.org` 에 호스팅되는 `linux.git` 에서 커널 소스를 검색합니다.

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

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

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

    컴퓨터 구성 파일은 OVERRIDES를 사용하여 적절한 커널 레시피 변형을 선택합니다. `base` 변형을 선택하는 경우 `qcom-base.inc` 파일은 `linux-qcom-base` 를 선택합니다. `custom` 변형을 선택하는 경우 커널은 다음 코드 조각에 표시된 대로 `linux-qcom-custom` 레시피를 사용하여 빌드됩니다.

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

    **커널 구성**

    Qualcomm Linux 커널 레시피는 `base` 및 `custom` 변형에 대해 서로 다른 커널 구성 및 조각 세트를 사용합니다.

    | 변형 | 구성 및 조각 파일 |
    | --- | --- |
    | `base` | `defconfig`, `qcom.cfg`, `qcom_vm.cfg`, `qcom_debug.cfg` |
    | `custom` | `qcom_defconfig`, `qcom_addons.config`, `selinux.cfg`,<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>이 파일은 `systemd` 를 INIT\_MANAGER로, `udev` 를 DEV\_MANAGER로 선택합니다. |
    | `conf/distro/include/qcom-security_flags.inc` | 이 파일은 [보안 플래그](https://git.yoctoproject.org/poky/tree/meta/conf/distro/include/security_flags.inc?h=scarthgap) 에 정의된 대로 보안 플래그를 포함합니다. |
- **패키지 그룹**

    패키지 그룹은 `meta-qcom-hwe` 및 `meta-qcom-distro` 에 정의됩니다. 이러한 패키지 그룹은 Qualcomm BSP가 정의한 기능을 이해하는 데 도움이 됩니다. 다음 표에서는 패키지 그룹에 대해 소개합니다.

    | 패키지 그룹 | 설명 |
    | --- | --- |
    | `packagegroup-qcom.bb` | 모든 기본 패키지를 포함하는 패키지 그룹입니다. |
    | `packagegroup-qcom-multimedia.bb` | 멀티미디어 지원을 활성화하는 패키지를 포함하는 패키지 그룹입니다.<br><br><br><br>> <br>> <br>> <ul class="simple"><br>> <li><p><code class="docutils literal notranslate"><span class="pre">packagegroup-container</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">packagegroup-qcom-audio</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">packagegroup-qcom-camera</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">packagegroup-qcom-display</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">packagegroup-qcom-fastcv</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">packagegroup-qcom-graphics</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">packagegroup-qcom-k8s</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">packagegroup-qcom-opencv</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">packagegroup-qcom-video</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">python3-docker-compose</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">packagegroup-qcom-iot-base-utils</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">packagegroup-qcom-location</span></code></p></li><br>> </ul><br>> <br>> 참고<br>> <br>> <br>> `packagegroup-qcom-location` 은 `meta-qcom-extras` 메타데이터 계층에 정의됩니다. |
    | `packagegroup-qcom-test-pkgs.bb` | 테스트 패키지를 포함하는 패키지 그룹입니다. |
- **이미지 레시피**

    `meta-qcom-distro` Qualcomm Linux 메타데이터 계층은 [GitHub](https://github.com/qualcomm-linux/meta-qcom-distro/tree/scarthgap/recipes-products/images) 에서 사용할 수 있는 이미지 레시피를 정의합니다. 다음 표에는 다양한 이미지, 해당 `IMAGE_FEATURES` 및 이미지가 제공하는 기능이 나열되어 있습니다.

    | 이미지 레시피 | 이미지 설명 |
    | --- | --- |
    | `qcom-minimal-image.bb` | Boot-to-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` | `rootfs` 에 테스트 패키지를 포함하여 `qcom-multimedia-image` 를 테스트합니다. |
    | `qcom-multimedia-crossesdk-image.bb` | `qcom-multimedia-image` 용 eSDK를 생성합니다. |
    | `qcom-guestvm-image.bb` | Boot to shell을 지원하는 최소 커널 기반 가상 머신(KVM) 이미지입니다. |
- **QDL 플래시 도구**

    QDL은 USB 기기와 통신하여 플래시 로더를 기기에 업로드하는 플래시 도구입니다. 플래시 로더는 기기에 기본 제공되는 유니버설 플래시 스토리지(UFS) 또는 임베디드 멀티미디어 카드(eMMC)로 이미지를 플래시합니다. `QDL 플래시` 에 대한 자세한 내용은 [QDL](https://docs.qualcomm.com/bundle/publicresource/topics/80-70020-254/flash_images.html) 을 참조하세요.

## meta-qcom-realtime

`meta-qcom-realtime` 메타데이터 계층은 [GitHub](https://github.com/qualcomm-linux/meta-qcom-realtime) 에서 사용할 수 있습니다. 이 계층은 Qualcomm 기기용 실시간 커널을 빌드하기 위한 추가 소프트웨어 지원을 제공합니다.

- **커널 레시피**

    Qualcomm Linux는 LTS Qualcomm Linux 커널 v6.6.x 및 실시간 확장을 지원합니다. 이는 `meta-qcom-realtime` 계층 아래의 `recipes-kernel/linux` 에 있는 `linux-qcom-custom-rt_6.6.bb` 및 `linux-qcom-base-rt_6.6.bb` Yocto 레시피를 통해 유지 관리됩니다. 보류 중인 선점 RT 패치는 [realtime](https://wiki.linuxfoundation.org/realtime/start) 에서 찾을 수 있습니다. 이러한 패치는 페치된 후 [Codelinaro](https://git.codelinaro.org/clo/la/kernel/qcom.git) 에 공개적으로 호스팅되는 `linux-qcom-custom-rt_6.6.bb` 위에 적용됩니다.

    Qualcomm 기기용 실시간 커널을 컴파일하려면:

> 
> 
> - `custom` OVERRIDE를 선택하는 경우 `conf/layer.conf` 는 `linux-qcom-custom-rt` 를 선택합니다.
>     - `base` OVERRIDE를 선택하는 경우 `conf/layer.conf` 는 `linux-qcom-base-rt` 를 선택합니다.

    **커널 구성**

    두 레시피 모두 `qcom_rt.cfg` 조각을 다음과 같이 추가합니다.

KERNEL_CONFIG_FRAGMENTS:append = " ${WORKDIR}/qcom_rt.cfg"
        Copy to clipboard
- **빌드에서** `meta-qcom-realtime` **활성화**

    빌드의 `meta-qcom-realtime` 을 활성화하려면 다음 단계에 설명된 대로 `meta-qcom-realtime` 계층을 `bblayers.conf` 의 EXTRALAYERS로 내보내세요.

    1. 환경을 소싱합니다.

        다음은 QCS6490 기반 컴퓨터 및 `qcom-wayland` 배포판의 환경을 소싱하는 예시입니다.

MACHINE=qcs6490-rb3gen2-core-kit DISTRO=qcom-wayland source setup-environment
            Copy to clipboard
    2. 다음과 같이 `build-qcom-wayland/conf/bblayers.conf` 파일을 열고 EXTRALAYERS 변수를 업데이트합니다.

EXTRALAYERS ?= " \
              ${WORKSPACE}/layers/meta-qcom-realtime \
             "
            Copy to clipboard
    3. 다음과 같이 빌드 명령어를 실행하여 `meta-qcom-realtime` 으로 다시 빌드합니다.

bitbake qcom-multimedia-image
            Copy to clipboard

## meta-qcom-extras

이 계층은 등록된 사용자를 위한 선택적인 메타데이터 계층입니다. 이 계층은 `meta-qcom-hwe` 에서 바이너리로 제공되는 일부 구성 요소의 소스 컴파일을 허용합니다. 이 메타데이터 계층을 수신할 수 있는 경우 [Qualcomm Linux 빌드 가이드](https://docs.qualcomm.com/bundle/publicresource/topics/80-70020-254/build_addn_info.html) 에 공유된 단계를 사용할 수 있습니다.

- **펌웨어 레시피**

    `meta-qcom-extras` 계층은 `meta-qcom-hwe/recipes-firmware/firmware` 의 `meta-qcom-hwe` 계층에 정의된 펌웨어 레시피에 대해 레시피 추가 파일을 제공합니다. 다음 코드 조각은 이러한 레시피 추가 파일(확장명 `.bbapend` )을 보여줍니다. 펌웨어 레시피 추가 파일에는 이 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 지능형 멀티미디어(QIM) SDK 아티팩트를 아카이브로 압축하는 패키징 작업을 제공합니다. 이 클래스는 <code class="docutils literal notranslate"><span class="pre">qim-product-sdk</span></code> 레시피에서 호출됩니다.</p></li><br><li><p>레시피 빌드가 완료된 후, 설치하기 쉬운 아티팩트 아카이브를 <code class="docutils literal notranslate"><span class="pre">&lt;workspace&gt;/build-qcom-wayland/tmp-glibc/deploy/qim_prod_sdk_artifacts</span></code> 디렉토리에서 사용할 수 있습니다.</p></li><br></ul> |
    | `qimsdk-pkg.bbclass` | <ul class="simple"><br><li><p>Qualcomm 멀티미디어 SDK 패키지를 아카이브로 압축하는 작업을 사용하기 쉬운 설치 스크립트와 함께 제공합니다. 아카이브는 개발, 배포 및 디버그를 위한 패키지로 별도로 생성됩니다.</p></li><br><li><p>설치하기 쉬운 아티팩트 아카이브를 <code class="docutils literal notranslate"><span class="pre">&lt;workspace&gt;/build-qcom-wayland/tmp-glibc/deploy/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>개발, 배포 및 디버그를 위해 라이트 런타임 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> 헥사곤<sup>™</sup> 프로세서 버전</p></li><br>> <li><p>지원되는 Qualcomm<sup>®</sup> 신경망 처리 SDK 버전</p></li><br>> <li><p>지원되는 Qualcomm 신경망(QNN) SDK 버전</p></li><br>> </ul> |
    | --- | --- |
- **이미지 레시피**

    | 레시피 | 설명 |
    | --- | --- |
    | `recipes-gst` | Qualcomm 레시피와 함께 업스트림 GStreamer 레시피 변경 사항(`.bbapend`)으로 구성됩니다.<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 신경망 처리 SDK를 패키징하는 데 사용됩니다.</p></li><br>> </ul> |
    | `recipes-qim-product-sdk` | QIM, Qualcomm 신경망 처리, QNN 및 라이트 런타임 SDK가 있는 QIM 제품 SDK를 설치하는 레시피 |
    | `recipes-tensorflow-lite` | 라이트 런타임 레시피는 다음 버전에 대해 라이트 런타임을 빌드하고 설치합니다.<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-27KO/topics/qualcomm_linux_features.md) [Next Topic
Qualcomm Linux 메타데이터 계층에서 BitBake OVERRIDES 사용](https://docs.qualcomm.com/bundle/publicresource/80-70020-27KO/topics/use-of-bitbake-overrides.md)