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 驱动程序。您可以使用 lsmod 或 udevadm 命令检查 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_decoder 和 msm_vidc_encoder:

注意:

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

验证 VPU 驱动程序是否已在 qcom-multimedia-image 上加载

内核镜像会加载 VPU 驱动程序。您可以使用 lsmod 和 udevadm 命令检查 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 Max available video nodes> 命令。

  2. 要验证 Dragonwing IQ-8275/Dragonwing IQ-9075/QCS6490 上的 VPU 是否成功加载,请查看示例输出中可用视频设备对应显示 qcom-iris-decoder 和 qcom-iris-encoder:
  3. 要验证 QCS615 上的 VPU 是否成功加载,请查看示例输出中可用视频设备对应显示 qcom-venus-decoder 和 qcom-venus-encoder:

验证解码和编码是否已在 qcom-multimedia-proprietary-image 上卸载

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

验证解码/编码是否已在 qcom-multimedia-image 上卸载

要确认视频解码或编码是否成功卸载到 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 固件调试日志仅限于错误和致命场景,默认调试级别设置为 `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 插件的信息,请参阅 调试工具。