Skip to main content
本节介绍验证 VPU 驱动功能的流程。你可以使用本节提供的命令和示例来:
  • 验证 VPU 驱动是否成功加载
  • 验证解码/编码是否成功卸载到 VPU
  • 调试 VPU 驱动、固件和 GStreamer 视频插件
以下工作流程图展示了验证 VPU 驱动的顺序:
图:验证 VPU 驱动的工作流程

图:验证 VPU 驱动的工作流程

该工作流程图概述了初始化和验证 VPU 驱动所涉及的顺序步骤:
  1. 启动驱动以开始启动过程并初始化 VPU 驱动。
  2. 验证 VPU 驱动是否成功加载到视频系统中。
  3. 验证视频解码和编码任务是否由 VPU 正确处理。
  4. 运行用例以验证 VPU 功能。

验证 VPU 驱动是否加载到 qcom-multimedia-proprietary-image 上

内核镜像会加载 VPU 驱动。你可以使用 lsmodudevadm 命令检查 VPU 驱动是否在 qcom-multimedia-proprietary-image 上成功加载。

使用 lsmod 命令验证

  1. 在设备 shell 上运行 lsmod 命令:
  2. 要验证 VPU 驱动是否成功加载,请查看示例输出,并确保在 Module 列下存在 iris_vpu 条目:

使用 udevadm 命令验证

  1. 在设备 shell 上运行 udevadm 命令:
  2. 要验证 VPU 是否成功加载,请确认以下示例输出在 ID_V4L_PRODUCT 标签处显示 msm_vidc_decodermsm_vidc_encoder

注意:

要识别设备节点,请查看 DEVNAME 标签。在前面的示例中,/dev/video32 对应 VPU 解码器节点,/dev/video33 对应 VPU 编码器节点。

验证 VPU 驱动是否加载到 qcom-multimedia-image 上

内核镜像会加载 VPU 驱动。你可以使用 lsmodudevadm 命令检查 VPU 驱动是否在 qcom-multimedia-image 上成功加载。

使用 lsmod 命令验证

  1. 针对 Dragonwing IQ-8275、Dragonwing IQ-9075、QCS6490,在设备 shell 上运行以下 lsmod 命令:
  2. 要验证 VPU 驱动是否成功加载,请查看示例输出,并确保在 Module 列下存在 qcom_iris 条目:
  3. 针对 QCS615,在设备 shell 上运行以下 lsmod 命令:
  4. 要验证 VPU 驱动是否成功加载,请查看示例输出,并确保在 Module 列下存在 venus 条目:

使用 udevadm 命令验证

  1. 在设备 shell 上运行 udevadm 命令:

    注意:

    请对所有可用的视频节点运行 udevadm info -a -n /dev/video<0 to 27> 命令。

  2. 要验证 VPU 是否在 Dragonwing IQ-8275/Dragonwing IQ-9075/QCS6490 上成功加载,请确认示例输出针对可用的视频设备显示 qcom-iris-decoderqcom-iris-encoder
  3. 要验证 VPU 是否在 QCS615 上成功加载,请确认示例输出针对可用的视频设备显示 qcom-venus-decoderqcom-venus-encoder

验证解码和编码是否卸载到 qcom-multimedia-proprietary-image 上的 VPU

要确认视频解码或编码是否成功卸载到 VPU:
  1. 循环运行以下命令:
示例输出:
  1. 验证在运行解码或编码用例时,任意 CPU 上来自 msm-vidc 的中断计数是否增加。

验证解码/编码是否卸载到 qcom-multimedia-image 上的 VPU

要确认视频解码或编码是否成功卸载到 VPU:
  1. 针对 Dragonwing IQ-8275/Dragonwing IQ-9075/QCS6490,循环运行以下命令:
示例输出:
  1. 验证在运行解码或编码用例时,任意 CPU 上来自 iris 的中断计数是否增加。
  2. 针对 QCS615,循环运行以下命令:
示例输出:
  1. 验证在运行解码或编码用例时,任意 CPU 上来自 venus 的中断计数是否增加。

调试视频

如果在运行视频解码或编码用例时遇到问题,调试可以帮助定位根本原因。

调试 VPU 驱动

本节提供用于调试 VPU 驱动和固件的命令、调试日志级别以及日志值信息。 以下工作流程图展示了调试 VPU 驱动和固件的顺序:
图:调试 VPU 工作流程

图:调试 VPU 工作流程

该工作流程概述了从 VPU 捕获调试日志的步骤:
  1. 挂载调试文件系统以开始调试过程。
  2. 选择所需的日志级别。
  3. 根据需要为 VPU 驱动和/或固件配置日志级别。
  4. 使用 debugfs 节点应用所选的日志级别。
  5. 开始捕获 VPU 驱动和固件的日志。
按照以下步骤调试 VPU 驱动和固件:
  1. 使用以下命令挂载 debugfs 节点:
  2. 按照下表列出的内容选择 VPU 驱动调试日志级别和调试日志值。你也可以通过调试日志值的位掩码来选择多个调试日志级别。
表:VPU 驱动调试日志级别和值
调试日志级别调试日志值
VIDC_ERR0x00000001
VIDC_HIGH0x00000002
VIDC_LOW0x00000004
VIDC_PERF0x00000008
VIDC_PKT0x00000010
VIDC_BUS0x00000020
VIDC_STAT0x00000040
VIDC_ENCODER0x00000100
VIDC_DECODER0x00000200
VIDC_PRINTK0x10000000
VIDC_FTRACE0x20000000

注意: VPU 驱动的默认调试级别设置为 VIDC_ERR,调试日志仅限于错误场景。
  1. 将 VPU 驱动调试日志值设置到 /sys/module/iris_vpu/parameters/msm_vidc_debug 节点。激活所有消息级别的示例命令:
  2. 按照下表列出的内容选择 VPU 固件调试日志级别和调试日志值。你也可以通过调试日志值的位掩码来选择多个调试日志级别。
表:VPU 固件调试日志级别和值
调试日志级别调试日志值
FW_LOW0x00000001
FW_MED0x00000002
FW_HIGH0x00000004
FW_ERROR0x00000008
FW_FATAL0x00000010
FW_PERF0x00000020
FW_CACHE_LOW0x00000100
FW_CACHE_MED0x00000200
FW_CACHE_HIGH0x00000400
FW_CACHE_ERROR0x00000800
FW_CACHE_FATAL0x00001000
FW_CACHE_PERF0x00002000
FW_PRINTK0x10000000
FW_FTRACE0x20000000

注意: VPU 固件的调试日志仅限于错误(error)和致命(fatal)场景,默认调试级别设置为 `FW_ERROR | FW_FATAL`。
  1. 将 VPU 固件调试日志值设置到 /sys/module/iris_vpu/parameters/msm_fw_debug 节点。激活所有消息级别的示例命令:
  2. 在设备 shell 中使用以下命令开始捕获 VPU 驱动和固件的内核消息,并运行用例:

注意:

  • 本节提供的视频调试说明仅适用于 qcom-multimedia-prop-image
  • Adreno VPU 驱动的 qcom-multimedia-image 中没有可用的调试日志。
  • 要在 qcom-multimedia-image 上调试 Adreno 视频驱动,请在驱动源码中添加 dev_err 日志并构建 qcom-multimedia-image
  • 更多信息,请参阅 适用于 qcom-multimedia-image 的 VPU 驱动构建说明

调试 GStreamer 插件

Qualcomm GStreamer 视频插件符合标准 GStreamer 框架。有关调试这些 GStreamer 插件的信息,请参阅 调试工具