# Qualcomm Linux 系统软件架构
Qualcomm® Linux 是专为 Qualcomm IoT 平台设计的软件包和工具包。提供以下版本用于应用程序开发:
- *基础*版本是上游开源软件堆栈,不包含 Qualcomm 专有软件。
- *定制*版本包括下游 Qualcomm 专有软件,包含额外的 SDK 和优化的功耗性能。
Tab 定制版本
Tab 基础版本
Qualcomm Linux 的定制版本目前支持以下 SoC 平台:[QCS5430](https://www.qualcomm.com/products/internet-of-things/industrial/industrial-automation/qcs5430)、[QCS6490](https://www.qualcomm.com/products/internet-of-things/industrial/building-enterprise/qcs6490)、[IQ-8275](https://www.qualcomm.com/products/internet-of-things/industrial/industrial-automation/iq8-series/iq-8275) 和 [IQ-9075](https://www.qualcomm.com/products/internet-of-things/industrial/industrial-automation/iq9-series/iq-9075)。下图显示了定制版本中的子系统和主要组件。
下文详细描述了每个子系统,并提供了链接供进一步探索。
Qualcomm Linux 基础版本目前支持以下 SoC 平台: [IQ-8275](https://www.qualcomm.com/products/internet-of-things/industrial/industrial-automation/iq8-series/iq-8275)、[IQ-9075](https://www.qualcomm.com/products/internet-of-things/industrial/industrial-automation/iq9-series/iq-9075) 和 [IQ-615](https://www.qualcomm.com/products/internet-of-things/industrial-processors/iq6-series/iq-615)。它使用整个软件协议栈的上游组件。它包括一个 UEFI bootloader 和最新的 Linux LTS 内核(包括一些正在上游合并过程中的补丁)。完全上游化意味着此版本*不*支持 Qualcomm下游或专有的 功能。
您可以使用[上游 gstreamer 插件](https://gstreamer.freedesktop.org/documentation/?gi-language=c)来创建应用程序。要开始使用,请使用这些[示例应用](https://github.com/quic/sample-apps-for-qualcomm-linux/tree/upstream-gst-sample-apps)开始。下图显示了基础版本中的子系统和主要组件。
下文详细描述了每个子系统,并提供了链接供进一步探索。
**上游 Gstreamer**
您可以使用[上游 gstreamer 插件](https://gstreamer.freedesktop.org/documentation/?gi-language=c)创建应用程序 pipeline。您可以使用 IQ-615 eSDK 为该平台创建应用程序。要开始使用,请参阅 GitHub 上的 [upper-gst-sample-apps](https://github.com/quic/sample-apps-for-qualcomm-linux/tree/upstream-gst-sample-apps) 参考应用程序。
Note
此版本未完全启用基础版本。以下各节中的说明仅供参考。有关基础版本中启用的软件组件的完整列表,请参阅 [Release Notes](https://docs.qualcomm.com/bundle/publicresource/topics/RNO-250630224842/ReleaseNote.html)。
## 显示
Tab 定制版本
Tab 基础版本
[显示子系统](https://docs.qualcomm.com/bundle/publicresource/topics/80-70020-18)支持 [Qualcomm® Intelligent Multimedia SDK (IM SDK)](https://docs.qualcomm.com/bundle/publicresource/topics/80-70020-50/overview.html),它基于 [GStreamer](https://gstreamer.freedesktop.org/) 框架和 [Wayland](https://wayland.freedesktop.org/) 协议。这些开源框架提供库、API 和插件来抽象底层接口。该架构具有下列功能:
>
>
> - waylandsink 插件与 Weston 子系统通信来渲染显示。
> - Weston 服务器是一个系统级合成器,负责合成和渲染需求,在系统中作为单独的进程运行。
> - libdrm 提供用于访问直接渲染管理器 (DRM) IOCTL 的 API。
[显示子系统](https://docs.qualcomm.com/bundle/publicresource/topics/80-70020-18)支持基于上游 Wayland/Weston 的框架。直接渲染管理器 (DRM) 后端是本机 Weston 后端,用于支持 Linux 内核 DRM、内核级显示模式设置 (KMS) 和 evdev 输入设备的系统。您可以使用基于上游 Wayland/Weston 的应用程序来验证和启用显示用例。
欲了解更多详细信息,请参阅以下内容:
>
>
> - [Weston documentation](https://wayland.pages.freedesktop.org/weston/)
> - [Driver implementer’s API guide](https://docs.kernel.org/driver-api/index.html)
> - [DRM interfaces](https://docs.kernel.org/gpu/drm-uapi.html)
**用户空间组件**
>
>
>  [GBM](https://gitlab.freedesktop.org/mesa/mesa/-/tree/main/src/gbm)
>
>
>  [Weston](https://gitlab.freedesktop.org/wayland/weston/-/tree/13.0?ref_type=heads)
**Kernel drivers**
>
>
>  [Display drivers](https://web.git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/drivers/gpu/drm?h=linux-6.6.y&id=943e0aeece93a9c2329215d02621e634adf6d790)
## 音频
Tab 定制版本
Tab 基础版本
[音频子系统](https://docs.qualcomm.com/bundle/publicresource/topics/80-70020-16)允许用户空间应用程序采集音频并请求播放。它符合 ALSA 标准并支持 GStreamer 多媒体框架。此外,还提供了不使用 GStreamer 的替代实现方案。
该子系统使用 PulseAudio 作为声音服务器。GStreamer 应用程序可开启 pulsesink 和 pulsesrc 元素来分别渲染或采集音频。您还可以将采集的音频渲染到 ROS 2 节点进行进一步处理。
软件音频架构为 [Qualcomm AudioReach™ 信号处理框架](https://www.qualcomm.com/developer/blog/2024/10/qualcomm-open-sourcing-audio-reach-end-to-end-audio-software)。AudioReach 包括信号处理框架 (SPF)、音频处理管理器 (APM),以及用于音频系统设计和校准的 Qualcomm audio calibration tool (QACT)。它是一套完整的软件组件、开发包和工具,可用于设计、实现和验证跨多个平台的端到端音频用例。
音频 DSP (aDSP) 是负责采集和播放的 DSP 组件。此外,还有一个计算 DSP (CDSP) 组件可用于一般的计算应用以及特定音频用例(例如基于框架支持的关键字检测)。
[音频子系统](https://docs.qualcomm.com/bundle/publicresource/topics/80-70020-16)允许用户空间应用程序采集音频并请求播放。它基于 PulseAudio 并支持 GStreamer 多媒体框架。
您可以开发 GStreamer 应用程序来分别渲染或采集音频。您还可以渲染采集的音频以进行进一步处理。
音频 DSP (aDSP) 是负责采集和播放的 DSP 组件。此外,还有一个计算 DSP (CDSP) 组件可用于一般的计算应用以及特定音频用例。
 [Audio PAL](https://git.codelinaro.org/clo/le/platform/vendor/qcom/opensource/arpal-lx/-/tree/audio-core.lnx.1.0.r1-rel?ref_type=heads)
 [PulseAudio](https://git.codelinaro.org/clo/le/platform/vendor/qcom-opensource/pulseaudio-plugin/-/tree/audio-algos.lnx.1.0.r1-rel?ref_type=heads)
 [Audio device tree](https://git.codelinaro.org/clo/la/kernel/qcom/-/blob/kernel.qclinux.1.0.r1-rel/arch/arm64/boot/dts/qcom/qcm6490-addons-idp.dts?ref_type=heads)
 [Audio kernel](https://git.codelinaro.org/clo/la/kernel/qcom/-/blob/kernel.qclinux.1.0.r1-rel/sound/soc/qcom/qcm6490.c?ref_type=heads)
## 视频
Tab 定制版本
Tab 基础版本
[视频子系统](https://docs.qualcomm.com/bundle/publicresource/topics/80-70020-20)支持 GStreamer 多媒体框架和各种视频 codec,以便充分利用 VPU 进行高质量的超高清视频 codec。VPU 的硬件功能通过 QIM SDK 和 V4L2 API 得到最有效的公开。基于 Qualcomm 的 SDK 中的视频编解码任务完全分流至视频引擎处理,以便 CPU 和 GPU 可以自由地执行其他操作。
[视频子系统](https://docs.qualcomm.com/bundle/publicresource/topics/80-70020-20)通过上游 V4L2 接口支持视频功能。您可以使用典型的基于 V4L2 的接口播放视频。有关接口和序列流的更多详细信息,请参阅 Linux 内核 [function reference](https://www.kernel.org/doc/html/v4.9/media/uapi/v4l/user-func.html) 和 [video memory-to-memory](https://www.kernel.org/doc/html/latest/userspace-api/media/v4l/dev-mem2mem.html) 文档。
有关 V4L2 示例应用程序,请参阅 [Github](https://github.com/quic/v4l-video-test-app),其中介绍了一个使用 Linux V4L 接口的简单视频测试应用程序。
 [Video kernel driver](https://git.codelinaro.org/clo/la/kernel/qcom/-/tree/0296590122486c15ee6842d0a408c3d5278ab046)
## 摄像头
Tab 定制版本
Tab 基础版本
[摄像头子系统](https://docs.qualcomm.com/bundle/publicresource/topics/80-70020-17)支持 GStreamer 多媒体框架,并使用 qmmfsrc 插件等来采集摄像头帧。qmmfsrc 插件提供了各种 API,允许您根据需要控制摄像头。qmmfsrc 插件通过 qmmf-server(摄像头后台程序)将摄像头控制权转移给摄像头用户模式驱动程序 (UMD)。摄像头 UMD 负责控制整个摄像头子系统,包括根据具体用例配置摄像头 pipeline。此外,它还提供用于添加摄像头驱动程序或定制摄像头 pipeline 的接口。摄像头内核模式驱动程序 (KMD) 是摄像头子系统的 Linux 内核驱动程序集合,负责通过从摄像头 UMD 获取控制权来对硬件进行编程。
 [Camera device tree](https://git.codelinaro.org/clo/le/platform/vendor/opensource/camera-devicetree)
 [Camera kernel driver](https://git.codelinaro.org/clo/le/platform/vendor/opensource/camera-kernel)
[摄像头子系统](https://docs.qualcomm.com/bundle/publicresource/topics/80-70020-17)支持 V4L2 接口摄像头 ISP 驱动程序,用于 raw 帧采集。它支持使用 V4L2 子设备接口的摄像头传感器,以便您可以实现或使用基于 V4L2 的摄像头应用程序,例如 [yavta](https://git.ideasonboard.org/yavta.git) 和 [libcamera](https://libcamera.org/index.html)。
## 图形
Tab 定制版本
Tab 基础版本
[图形子系统](https://docs.qualcomm.com/bundle/publicresource/topics/80-70020-19)支持 GStreamer 多媒体框架,并使用 GStreamer Wayland 插件。GPU 使用基于 OpenGL ES 的 ib2C 库,以提供硬件加速的图像处理、变换和颜色转换操作。其他功能包括:
>
>
> - [OpenGL ES](https://www.khronos.org/opengles/) – 用于在嵌入式系统上开发 2D 和 3D 图的 API。OpenGL API 的子集。
> - [OpenCL](https://www.khronos.org/opencl/) – 异构系统跨平台并行编程的开放标准。
> - [EGL](https://www.khronos.org/egl) – Khronos 渲染 API(例如 OpenGL ES)与底层本机平台窗口系统之间的接口。
> - [Vulkan](https://www.vulkan.org/) – 3D 图和计算的底层 API 和开放标准。Qualcomm Linux 支持 RGB、UBWC、YUV 和 Bayer 图格式。
[图形子系统](https://docs.qualcomm.com/bundle/publicresource/topics/80-70020-19)基于上游 [Mesa 图形协议栈](https://www.mesa3d.org/),并且仅启用功能性 GLES 支持。有关使用上游协议栈的示例图形应用程序,请参阅 [gst-sample-applications](https://github.com/quic/sample-apps-for-qualcomm-linux/tree/upstream-gst-sample-apps/gst-video-transform-example).
## AI/ML
Tab 定制版本
Tab 基础版本
[AI/ML 子系统](https://docs.qualcomm.com/bundle/publicresource/topics/80-70020-15)支持 SDK、API、开发工具以及第三方框架和模型(包括 GStreamer 和 TFLite),用于访问 Qualcomm 特定的软硬件功能,从而实现 AI 和机器学习。Qualcomm Neural Processing Engine 提供统一的 API 并为每个加速器提供模块化/可扩展的库,从而基于这种可重用的结构打造适用于 Qualcomm 自有框架和开源框架的全栈 AI 解决方案。借助框架中的机器学习插件,您可以使用 TFLite 和 Qualcomm Neural Processing Engine 进行推理。每个引擎都使能了 delegate 来加速模型推理性能。
该子系统支持多种视频解析用例,包括:
- 使用实时摄像头的单流推理
- 离线视频的单流推理
- 通过实时流协议 (RTSP) 流传输的单流实时摄像头 TensorFlow Lite 推理。
- 使用 DirectNN 推理的单流实时摄像头预览
- 使用实时摄像头进行双流推理
使用上游 [LiteRT 框架](https://ai.google.dev/edge/litert)支持 AI/ML 用例。
## Qualcomm 传感器中枢 (QSH)
Tab 定制版本
Tab 基础版本
[Qualcomm 传感器中枢 (QSH)](https://docs.qualcomm.com/bundle/publicresource/topics/80-70020-7/overview.html) 支持加速度计、陀螺仪和计步器等硬件和软件传感器。它为驱动程序和算法提供了统一的事件驱动框架。支持基于硬件和基于软件的传感器的同一组 API。
QCS5430 和 QCS6490 目前支持 QSH。IQ-8275 和 IQ-9075 处理器上未启用此功能。
## Wi-Fi
>
>
> Qualcomm Linux 为开发应用程序提供 [Wi-Fi](https://docs.qualcomm.com/bundle/publicresource/topics/80-70020-14) 功能、特性和可配置参数。Wi-Fi 功能通过 ath11k 驱动程序以及特定于芯片组的固件启用。
>
>
> 支持以下功能:
>
>
>
> >
> >
> > - 2.4 GHz、5 GHz 和 6 GHz Wi-Fi 频段
> > - 峰值 PHY 数据速率为 2.9 Gbps,1 K QAM
> > - Station (STA) 模式和接入点 (AP) 模式
## 蓝牙
>
>
> 蓝牙® 无线技术[子系统](https://docs.qualcomm.com/bundle/publicresource/topics/80-70020-13)包括针对不同用例的 BlueZ 协议栈和示例测试应用程序。
>
>
> 支持的软件和芯片组提供以下两种操作模式:
>
>
>
> >
> >
> > - 基本速率/增强型数据传输速率 (BR/EDR)
> > - 蓝牙低功耗 (BLE)
>
>
>
> Qualcomm connectivity chipsets (WCN) 符合蓝牙核心规范 v5.2 的要求。
## 安全
>
>
> [安全子系统](https://docs.qualcomm.com/bundle/publicresource/topics/80-70020-11)中的 Qualcomm Trusted Execution Environment (TEE) 为 TrustZone (TZ) 安全应用程序提供安全服务,例如镜像加载、鉴权、缓存管理、加密、日志和 Qualcomm 熔丝可编程只读内存 (QFPROM)。
>
>
> TZ 是 Qualcomm 平台产品安全的核心,为大部分产品安全功能提供了安全的执行环境。TZ 基于 Arm 核的 TZ 技术构建,依赖于 Arm 核的安全执行模式。
>
>
> 产品安全功能包括以下安全组件:
>
>
>
> >
> >
> > - TZ 和安全应用程序
> > - Qualcomm TEE 5.3
> > - 安全启动和 QFPROM
> > - HLOS 安全
> > - 安全存储
> > - 安全设备调试
> > - 安全启动
## 启动
Qualcomm Linux 的[启动子系统](https://docs.qualcomm.com/bundle/publicresource/topics/80-70020-4)支持 systemd 启动和 UEFI 启动管理。当系统复位时,应用处理器中的 bootloader 在安全 ROM 中执行,并初始化时钟、CPU 缓存和内存管理单元 (MMU),然后根据启动选项配置检测启动设备。启动选项包括 UFS。其余系统和子系统镜像随后在 ROM、IMEM 和 DDR 中进行加载和鉴权,如冷启动流程中所述。
其他启动功能包括:
>
>
> - 安全启动
> - 灵活安全密钥架构 (FSKA)
> - 配置数据表 (CDT)
> - 紧急下载 (EDL) 模式
> - 热检测功能可在设备处于高温环境时阻止其启动或重启。
## Hypervisor
Qualcomm Linux 使用 Gunyah,这是一种 [Type 1 hypervisor](https://docs.qualcomm.com/bundle/publicresource/topics/80-70020-11/features.html#qualcomm-hypervisor),具有强大的安全性、性能和模块化。Gunyah 独立于任何高级 OS 内核在更高的 CPU 权限层级运行,其核心功能不依赖于任何低权限层级的 OS 内核或代码。此设计提高了其安全性,并且可以支持比 Type 2 hypervisor 小得多的受信计算基础。
Gunyah 旨在支持多种 CPU 架构,因此其核心设计确保了架构独立性和非架构特定区域的可移植性。Qualcomm Linux 包括设置工具和脚本、Gunyah 核心、资源管理及其 C runtime 环境。
## 内核空间
Qualcomm Linux 是一款嵌入式 Linux 产品,包括长期支持 (LTS) Linux 内核及相关内核平台、多媒体、连接、安全和外设驱动程序。大多数驱动程序都是纯上游或正在上游化,一些下游驱动程序用于启用必要的硬件功能。
 [Custom kernel](https://git.codelinaro.org/clo/la/kernel/qcom/-/tree/7243a5b8c3763f49e651254b2bad5d95161f8e98)
 [Base kernel](https://web.git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/?h=linux-6.6.y&id=9c2dd8954dad0430e83ee55b985ba55070e50cf7)
## OTA
从 QLI GA 1.3 开始支持使用 OSTree 框架进行空中下载 (OTA) 更新。从 QLI GA 1.3 升级到 QLI GA 1.4 需要配置分区布局。从 QLI GA 1.4 升级到 1.5 则无需重新配置分区。
Last Published: Jul 23, 2025