# 排除视频故障

本节概述了验证 VPU 驱动程序功能的过程。以下工作流图展示了验证 VPU 驱动程序的顺序。

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by Microsoft Visio, SVG Export Video-Verify-workflow.svg Page-1 -->
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:ev="http://www.w3.org/2001/xml-events" xmlns:v="http://schemas.microsoft.com/visio/2003/SVGExtensions/" width="9.00521in" height="1.76563in" viewbox="0 0 648.375 127.125" xml:space="preserve" color-interpolation-filters="sRGB" class="st7" aria-label="../../_images/Video-Verify-workflow.svg"><v:documentproperties v:langid="1033" v:viewmarkup="false">	<v:userdefs>		<v:ud v:nameu="msvNoAutoConnect" v:val="VT0(1):26"></v:ud>	</v:userdefs></v:documentproperties>
<style>.svg-1 .st1 { fill: #f7f8fa; stroke: none; stroke-linecap: round; stroke-linejoin: round; stroke-width: 0.75 }
.svg-1 .st2 { fill: #ffffff; stroke: #3253dc; stroke-linecap: round; stroke-linejoin: round; stroke-width: 2.25 }
.svg-1 .st3 { fill: #000000; font-family: Arial; font-size: 1.00001em }
.svg-1 .st4 { font-size: 1em }
.svg-1 .st5 { marker-end: url("#mrkr5-23"); stroke: #000000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 2.25 }
.svg-1 .st6 { fill: #000000; fill-opacity: 1; stroke: #000000; stroke-opacity: 1; stroke-width: 0.47169811320755 }
.svg-1 .st7 { fill: none; fill-rule: evenodd; font-size: 12px; overflow: visible; stroke-linecap: square; stroke-miterlimit: 3 }</style>
<defs id="Markers">	<g id="lend5">		<path d="M 2 1 L 0 0 L 1.98117 -0.993387 C 1.67173 -0.364515 1.67301 0.372641 1.98465 1.00043 " style="stroke:none"></path>	</g>	<marker id="mrkr5-23" class="st6" v:arrowtype="5" v:arrowsize="2" v:setback="3.71" refx="-3.71" orient="auto" markerunits="strokeWidth" overflow="visible">		<use xlink:href="#lend5" transform="scale(-2.12,-2.12) "></use>	</marker></defs><g v:mid="0" v:index="1" v:groupcontext="foregroundPage">	<title>Page-1</title>	<v:pageproperties v:drawingscale="1" v:pagescale="1" v:drawingunits="19" v:shadowoffsetx="9" v:shadowoffsety="-9"></v:pageproperties>	<v:layer v:name="Connector" v:index="0"></v:layer>	<g id="shape13-1" v:mid="13" v:groupcontext="shape" transform="translate(18,-18)">		<title></title>		<rect x="0" y="36" width="612" height="91.125" class="st1"></rect>	</g>	<g id="shape6-3" v:mid="6" v:groupcontext="shape" transform="translate(495,-39.7895)">		<title></title>		<desc>Run use cases</desc>		<v:userdefs>			<v:ud v:nameu="CTypeTopLeftSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CTypeTopRightSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CTypeBotLeftSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CTypeBotRightSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CornerLockHoriz" v:prompt="" v:val="VT0(1):5"></v:ud>			<v:ud v:nameu="CornerLockVert" v:prompt="" v:val="VT0(1):5"></v:ud>			<v:ud v:nameu="CornerLockDiag" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="TopLeftOffset" v:prompt="" v:val="VT0(0.15):1"></v:ud>			<v:ud v:nameu="TopRightOffset" v:prompt="" v:val="VT0(0.15):1"></v:ud>			<v:ud v:nameu="BotLeftOffset" v:prompt="" v:val="VT0(0.15):1"></v:ud>			<v:ud v:nameu="BotRightOffset" v:prompt="" v:val="VT0(0.15):1"></v:ud>			<v:ud v:nameu="visVersion" v:prompt="" v:val="VT0(15):26"></v:ud>			<v:ud v:nameu="TopLeftOffset" v:prompt="" v:val="VT0(0.15):0"></v:ud>			<v:ud v:nameu="TopRightOffset" v:prompt="" v:val="VT0(0.15):0"></v:ud>			<v:ud v:nameu="BotLeftOffset" v:prompt="" v:val="VT0(0.15):0"></v:ud>			<v:ud v:nameu="BotRightOffset" v:prompt="" v:val="VT0(0.15):0"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="54" cy="101.645" width="108" height="50.9605"></v:textrect>		<path d="M10.8 127.13 L97.2 127.13 A10.7998 10.7998 -180 0 0 108 116.33 L108 86.96 A10.7998 10.7998 -180 0 0 97.2 76.16					 L10.8 76.16 A10.7998 10.7998 -180 0 0 0 86.96 L0 116.33 A10.7998 10.7998 -180 0 0 10.8 127.13 Z" class="st2"></path>		<text x="14.31" y="105.25" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Run use cases</text>		</g>	<g id="shape7-6" v:mid="7" v:groupcontext="shape" transform="translate(342.375,-39.7895)">		<title></title>		<desc>Verify if decode/encode is offloaded to VPU</desc>		<v:userdefs>			<v:ud v:nameu="CTypeTopLeftSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CTypeTopRightSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CTypeBotLeftSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CTypeBotRightSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CornerLockHoriz" v:prompt="" v:val="VT0(1):5"></v:ud>			<v:ud v:nameu="CornerLockVert" v:prompt="" v:val="VT0(1):5"></v:ud>			<v:ud v:nameu="CornerLockDiag" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="TopLeftOffset" v:prompt="" v:val="VT0(0.15):1"></v:ud>			<v:ud v:nameu="TopRightOffset" v:prompt="" v:val="VT0(0.15):1"></v:ud>			<v:ud v:nameu="BotLeftOffset" v:prompt="" v:val="VT0(0.15):1"></v:ud>			<v:ud v:nameu="BotRightOffset" v:prompt="" v:val="VT0(0.15):1"></v:ud>			<v:ud v:nameu="visVersion" v:prompt="" v:val="VT0(15):26"></v:ud>			<v:ud v:nameu="TopLeftOffset" v:prompt="" v:val="VT0(0.15):0"></v:ud>			<v:ud v:nameu="TopRightOffset" v:prompt="" v:val="VT0(0.15):0"></v:ud>			<v:ud v:nameu="BotLeftOffset" v:prompt="" v:val="VT0(0.15):0"></v:ud>			<v:ud v:nameu="BotRightOffset" v:prompt="" v:val="VT0(0.15):0"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="54" cy="101.645" width="108" height="50.9605"></v:textrect>		<path d="M10.8 127.13 L97.2 127.13 A10.7998 10.7998 -180 0 0 108 116.33 L108 86.96 A10.7998 10.7998 -180 0 0 97.2 76.16					 L10.8 76.16 A10.7998 10.7998 -180 0 0 0 86.96 L0 116.33 A10.7998 10.7998 -180 0 0 10.8 127.13 Z" class="st2"></path>		<text x="10.98" y="90.84" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Verify if decode/<tspan x="28.32" dy="1.2em" class="st4">encode is </tspan><tspan x="8.64" dy="1.2em" class="st4">offloaded to VPU</tspan></text>		</g>	<g id="shape8-11" v:mid="8" v:groupcontext="shape" transform="translate(189.375,-39.7895)">		<title></title>		<desc>Verify if VPU driver is loaded</desc>		<v:userdefs>			<v:ud v:nameu="CTypeTopLeftSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CTypeTopRightSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CTypeBotLeftSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CTypeBotRightSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CornerLockHoriz" v:prompt="" v:val="VT0(1):5"></v:ud>			<v:ud v:nameu="CornerLockVert" v:prompt="" v:val="VT0(1):5"></v:ud>			<v:ud v:nameu="CornerLockDiag" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="TopLeftOffset" v:prompt="" v:val="VT0(0.15):1"></v:ud>			<v:ud v:nameu="TopRightOffset" v:prompt="" v:val="VT0(0.15):1"></v:ud>			<v:ud v:nameu="BotLeftOffset" v:prompt="" v:val="VT0(0.15):1"></v:ud>			<v:ud v:nameu="BotRightOffset" v:prompt="" v:val="VT0(0.15):1"></v:ud>			<v:ud v:nameu="visVersion" v:prompt="" v:val="VT0(15):26"></v:ud>			<v:ud v:nameu="TopLeftOffset" v:prompt="" v:val="VT0(0.15):0"></v:ud>			<v:ud v:nameu="TopRightOffset" v:prompt="" v:val="VT0(0.15):0"></v:ud>			<v:ud v:nameu="BotLeftOffset" v:prompt="" v:val="VT0(0.15):0"></v:ud>			<v:ud v:nameu="BotRightOffset" v:prompt="" v:val="VT0(0.15):0"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="54" cy="101.645" width="108" height="50.9605"></v:textrect>		<path d="M10.8 127.13 L97.2 127.13 A10.7998 10.7998 -180 0 0 108 116.33 L108 86.96 A10.7998 10.7998 -180 0 0 97.2 76.16					 L10.8 76.16 A10.7998 10.7998 -180 0 0 0 86.96 L0 116.33 A10.7998 10.7998 -180 0 0 10.8 127.13 Z" class="st2"></path>		<text x="19.99" y="98.04" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Verify if VPU <tspan x="13.31" dy="1.2em" class="st4">driver is loaded</tspan></text>		</g>	<g id="shape9-15" v:mid="9" v:groupcontext="shape" transform="translate(36.375,-39.7895)">		<title></title>		<desc>Boot up the driver</desc>		<v:userdefs>			<v:ud v:nameu="CTypeTopLeftSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CTypeTopRightSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CTypeBotLeftSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CTypeBotRightSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CornerLockHoriz" v:prompt="" v:val="VT0(1):5"></v:ud>			<v:ud v:nameu="CornerLockVert" v:prompt="" v:val="VT0(1):5"></v:ud>			<v:ud v:nameu="CornerLockDiag" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="TopLeftOffset" v:prompt="" v:val="VT0(0.15):1"></v:ud>			<v:ud v:nameu="TopRightOffset" v:prompt="" v:val="VT0(0.15):1"></v:ud>			<v:ud v:nameu="BotLeftOffset" v:prompt="" v:val="VT0(0.15):1"></v:ud>			<v:ud v:nameu="BotRightOffset" v:prompt="" v:val="VT0(0.15):1"></v:ud>			<v:ud v:nameu="visVersion" v:prompt="" v:val="VT0(15):26"></v:ud>			<v:ud v:nameu="TopLeftOffset" v:prompt="" v:val="VT0(0.15):0"></v:ud>			<v:ud v:nameu="TopRightOffset" v:prompt="" v:val="VT0(0.15):0"></v:ud>			<v:ud v:nameu="BotLeftOffset" v:prompt="" v:val="VT0(0.15):0"></v:ud>			<v:ud v:nameu="BotRightOffset" v:prompt="" v:val="VT0(0.15):0"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="54" cy="101.645" width="108" height="50.9605"></v:textrect>		<path d="M10.8 127.13 L97.2 127.13 A10.7998 10.7998 -180 0 0 108 116.33 L108 86.96 A10.7998 10.7998 -180 0 0 97.2 76.16					 L10.8 76.16 A10.7998 10.7998 -180 0 0 0 86.96 L0 116.33 A10.7998 10.7998 -180 0 0 10.8 127.13 Z" class="st2"></path>		<text x="6.64" y="105.25" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Boot up the driver</text>		</g>	<g id="shape10-18" v:mid="10" v:groupcontext="shape" v:layermember="0" transform="translate(144.375,-56.2697)">		<title></title>		<path d="M0 118.13 L36.65 118.13" class="st5"></path>	</g>	<g id="shape11-24" v:mid="11" v:groupcontext="shape" v:layermember="0" transform="translate(297.375,-56.2697)">		<title></title>		<path d="M0 118.13 L36.65 118.13" class="st5"></path>	</g>	<g id="shape12-29" v:mid="12" v:groupcontext="shape" v:layermember="0" transform="translate(450.375,-56.2697)">		<title></title>		<path d="M0 118.13 L36.28 118.13" class="st5"></path>	</g></g>
</svg>

**图：验证 VPU 驱动程序的工作流**

您可以使用本节提供的命令和示例来验证以下内容：

- VPU 驱动程序已成功加载
- 解码/编码已分流到 VPU

## 验证是否加载了 VPU 驱动程序

内核镜像加载 VPU 驱动程序。您可以使用 `lsmod` 或 `udevadm` 命令检查 VPU 驱动程序是否加载成功。

### 使用 lsmod 命令进行验证

1. 在设备 shell 上运行 `lsmod` 命令：

lsmod | grep -i "iris"
        Copy to clipboard
2. 若要验证 VPU 驱动程序是否已成功加载，可查看示例输出，并确保 Module 列下有一个可用的 `iris_vpu` 条目：

Module    Size    Used by
        
        iris_vpu   585728    0
        Copy to clipboard

### 使用 udevadm 命令进行验证

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

udevadm info -n /dev/video*
        Copy to clipboard
2. 要验证 VPU 是否已成功加载，请查看以下示例输出是否针对 `ID_V4L_PRODUCT` 标签显示 `msm_vidc_decoder` 和 `msm_vidc_encoder`：

P: /devices/platform/soc@0/aa00000.video-codec/video4linux/video32
    M: video32
    R: 32
    U: video4linux
    D: c 81:0
    N: video32
    L: 0
    S: v4l/by-path/platform-aa00000.video-codec-video-index0
    E: DEVPATH=/devices/platform/soc@0/aa00000.video-codec/video4linux/video32
    E: DEVNAME=/dev/video32
    E: MAJOR=81
    E: MINOR=0
    E: SUBSYSTEM=video4linux
    E: USEC_INITIALIZED=3749470
    E: ID_V4L_VERSION=2
    E: ID_V4L_PRODUCT=msm_vidc_decoder
    E: ID_V4L_CAPABILITIES=:
    E: ID_PATH=platform-aa00000.video-codec
    E: ID_PATH_TAG=platform-aa00000_video-codec
    E: ID_FOR_SEAT=video4linux-platform-aa00000_video-codec
    E: DEVLINKS=/dev/v4l/by-path/platform-aa00000.video-codec-video-index0
    E: TAGS=:seat:uaccess:
    E: CURRENT_TAGS=:seat:uaccess:
    |
    P: /devices/platform/soc@0/aa00000.video-codec/video4linux/video33
    M: video33
    R: 33
    U: video4linux
    D: c 81:1
    N: video33
    L: 0
    S: v4l/by-path/platform-aa00000.video-codec-video-index1
    E: DEVPATH=/devices/platform/soc@0/aa00000.video-codec/video4linux/video33
    E: DEVNAME=/dev/video33
    E: MAJOR=81
    E: MINOR=1
    E: SUBSYSTEM=video4linux
    E: USEC_INITIALIZED=3749498
    E: ID_V4L_VERSION=2
    E: ID_V4L_PRODUCT=msm_vidc_encoder
    E: ID_V4L_CAPABILITIES=:
    E: ID_PATH=platform-aa00000.video-codec
    E: ID_PATH_TAG=platform-aa00000_video-codec
    E: ID_FOR_SEAT=video4linux-platform-aa00000_video-codec
    E: DEVLINKS=/dev/v4l/by-path/platform-aa00000.video-codec-video-index1
    E: TAGS=:seat:uaccess:
    E: CURRENT_TAGS=:seat:uaccess:
    Copy to clipboard

Note

请检查 `DEVNAME` 标签，以便识别设备节点。在前面的示例中，`/dev/video32` 用于 VPU 解码器节点，`/dev/video33` 用于 VPU 编码器节点。

## 验证解码/编码是否已分流

要确认视频解码或编码是否已成功分流到 VPU：

1. 以循环方式运行该命令：

> 
> 
> cat /proc/interrupts | grep "msm-vidc"
>     Copy to clipboard
> 
> 
> 示例输出：
> 
> 
> 253: 4        0        0        0        0        0        0        0     GICv3 206 Level  msm-vidc
>     Copy to clipboard

2. 验证当用例运行时，`msm-vidc` 中的中断计数是否在任何 CPU 上增加：

## 调试视频

如果在运行视频解码或编码用例时遇到问题，调试可以帮助确定根本原因。此信息提供了调试 VPU 驱动程序、固件和 GStreamer 视频插件的方法。

### 调试 VPU 驱动程序

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by Microsoft Visio, SVG Export Debug-vpu-workflow.svg Page-1 -->
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:ev="http://www.w3.org/2001/xml-events" xmlns:v="http://schemas.microsoft.com/visio/2003/SVGExtensions/" width="15.875in" height="4.26042in" viewbox="0 0 1143 306.75" xml:space="preserve" color-interpolation-filters="sRGB" class="st10" aria-label="../../_images/Debug-vpu-workflow.svg"><v:documentproperties v:langid="1033" v:viewmarkup="false">	<v:userdefs>		<v:ud v:nameu="msvNoAutoConnect" v:val="VT0(1):26"></v:ud>	</v:userdefs></v:documentproperties>
<style>.svg-2 .st1 { fill: #f7f8fa; stroke: #ffffff; stroke-linecap: round; stroke-linejoin: round; stroke-width: 0.75 }
.svg-2 .st2 { fill: #ffffff; stroke: #3253dc; stroke-linecap: round; stroke-linejoin: round; stroke-width: 2.25 }
.svg-2 .st3 { fill: #000000; font-family: Arial; font-size: 1.00001em }
.svg-2 .st4 { font-size: 1em }
.svg-2 .st5 { marker-end: url("#mrkr5-30"); stroke: #000000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 2.25 }
.svg-2 .st6 { fill: #000000; fill-opacity: 1; stroke: #000000; stroke-opacity: 1; stroke-width: 0.47169811320755 }
.svg-2 .st7 { marker-end: url("#mrkr5-30"); marker-start: url("#mrkr5-60"); stroke: #000000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 2.25 }
.svg-2 .st8 { stroke: #000000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 2.25 }
.svg-2 .st9 { marker-start: url("#mrkr5-60"); stroke: #000000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 2.25 }
.svg-2 .st10 { fill: none; fill-rule: evenodd; font-size: 12px; overflow: visible; stroke-linecap: square; stroke-miterlimit: 3 }</style>
<defs id="Markers">	<g id="lend5">		<path d="M 2 1 L 0 0 L 1.98117 -0.993387 C 1.67173 -0.364515 1.67301 0.372641 1.98465 1.00043 " style="stroke:none"></path>	</g>	<marker id="mrkr5-30" class="st6" v:arrowtype="5" v:arrowsize="2" v:setback="3.71" refx="-3.71" orient="auto" markerunits="strokeWidth" overflow="visible">		<use xlink:href="#lend5" transform="scale(-2.12,-2.12) "></use>	</marker>	<marker id="mrkr5-60" class="st6" v:arrowtype="5" v:arrowsize="2" v:setback="3.55" refx="3.55" orient="auto" markerunits="strokeWidth" overflow="visible">		<use xlink:href="#lend5" transform="scale(2.12) "></use>	</marker></defs><g v:mid="0" v:index="1" v:groupcontext="foregroundPage">	<title>Page-1</title>	<v:pageproperties v:drawingscale="1" v:pagescale="1" v:drawingunits="19" v:shadowoffsetx="9" v:shadowoffsety="-9"></v:pageproperties>	<v:layer v:name="Connector" v:index="0"></v:layer>	<g id="shape35-1" v:mid="35" v:groupcontext="shape" transform="translate(18,-18)">		<title></title>		<rect x="0" y="36" width="1107" height="270.75" class="st1"></rect>	</g>	<g id="shape4-3" v:mid="4" v:groupcontext="shape" transform="translate(935.625,-137.664)">		<title></title>		<desc>Stop capturing logs</desc>		<v:userdefs>			<v:ud v:nameu="CTypeTopLeftSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CTypeTopRightSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CTypeBotLeftSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CTypeBotRightSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CornerLockHoriz" v:prompt="" v:val="VT0(1):5"></v:ud>			<v:ud v:nameu="CornerLockVert" v:prompt="" v:val="VT0(1):5"></v:ud>			<v:ud v:nameu="CornerLockDiag" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="TopLeftOffset" v:prompt="" v:val="VT0(0.15):1"></v:ud>			<v:ud v:nameu="TopRightOffset" v:prompt="" v:val="VT0(0.15):1"></v:ud>			<v:ud v:nameu="BotLeftOffset" v:prompt="" v:val="VT0(0.15):1"></v:ud>			<v:ud v:nameu="BotRightOffset" v:prompt="" v:val="VT0(0.15):1"></v:ud>			<v:ud v:nameu="visVersion" v:prompt="" v:val="VT0(15):26"></v:ud>			<v:ud v:nameu="TopLeftOffset" v:prompt="" v:val="VT0(0.1625):1"></v:ud>			<v:ud v:nameu="TopRightOffset" v:prompt="" v:val="VT0(0.1625):1"></v:ud>			<v:ud v:nameu="BotLeftOffset" v:prompt="" v:val="VT0(0.1625):1"></v:ud>			<v:ud v:nameu="BotRightOffset" v:prompt="" v:val="VT0(0.1625):1"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="58.5" cy="281.27" width="117" height="50.9605"></v:textrect>		<path d="M11.7 306.75 L105.3 306.75 A11.6998 11.6998 -180 0 0 117 295.05 L117 267.49 A11.6998 11.6998 -180 0 0 105.3					 255.79 L11.7 255.79 A11.6998 11.6998 -180 0 0 -0 267.49 L0 295.05 A11.6998 11.6998 -180 0 0 11.7 306.75					 Z" class="st2"></path>		<text x="7.13" y="284.87" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Stop capturing logs</text>		</g>	<g id="shape5-6" v:mid="5" v:groupcontext="shape" transform="translate(791.625,-137.664)">		<title></title>		<desc>Run the use case</desc>		<v:userdefs>			<v:ud v:nameu="CTypeTopLeftSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CTypeTopRightSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CTypeBotLeftSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CTypeBotRightSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CornerLockHoriz" v:prompt="" v:val="VT0(1):5"></v:ud>			<v:ud v:nameu="CornerLockVert" v:prompt="" v:val="VT0(1):5"></v:ud>			<v:ud v:nameu="CornerLockDiag" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="TopLeftOffset" v:prompt="" v:val="VT0(0.15):1"></v:ud>			<v:ud v:nameu="TopRightOffset" v:prompt="" v:val="VT0(0.15):1"></v:ud>			<v:ud v:nameu="BotLeftOffset" v:prompt="" v:val="VT0(0.15):1"></v:ud>			<v:ud v:nameu="BotRightOffset" v:prompt="" v:val="VT0(0.15):1"></v:ud>			<v:ud v:nameu="visVersion" v:prompt="" v:val="VT0(15):26"></v:ud>			<v:ud v:nameu="TopLeftOffset" v:prompt="" v:val="VT0(0.15):0"></v:ud>			<v:ud v:nameu="TopRightOffset" v:prompt="" v:val="VT0(0.15):0"></v:ud>			<v:ud v:nameu="BotLeftOffset" v:prompt="" v:val="VT0(0.15):0"></v:ud>			<v:ud v:nameu="BotRightOffset" v:prompt="" v:val="VT0(0.15):0"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="54" cy="281.27" width="108" height="50.9605"></v:textrect>		<path d="M10.8 306.75 L97.2 306.75 A10.7998 10.7998 -180 0 0 108 295.95 L108 266.59 A10.7998 10.7998 -180 0 0 97.2 255.79					 L10.8 255.79 A10.7998 10.7998 -180 0 0 0 266.59 L0 295.95 A10.7998 10.7998 -180 0 0 10.8 306.75 Z" class="st2"></path>		<text x="7.3" y="284.87" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Run the use case</text>		</g>	<g id="shape6-9" v:mid="6" v:groupcontext="shape" transform="translate(638.625,-137.664)">		<title></title>		<desc>Start capturing logs</desc>		<v:userdefs>			<v:ud v:nameu="CTypeTopLeftSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CTypeTopRightSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CTypeBotLeftSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CTypeBotRightSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CornerLockHoriz" v:prompt="" v:val="VT0(1):5"></v:ud>			<v:ud v:nameu="CornerLockVert" v:prompt="" v:val="VT0(1):5"></v:ud>			<v:ud v:nameu="CornerLockDiag" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="TopLeftOffset" v:prompt="" v:val="VT0(0.15):1"></v:ud>			<v:ud v:nameu="TopRightOffset" v:prompt="" v:val="VT0(0.15):1"></v:ud>			<v:ud v:nameu="BotLeftOffset" v:prompt="" v:val="VT0(0.15):1"></v:ud>			<v:ud v:nameu="BotRightOffset" v:prompt="" v:val="VT0(0.15):1"></v:ud>			<v:ud v:nameu="visVersion" v:prompt="" v:val="VT0(15):26"></v:ud>			<v:ud v:nameu="TopLeftOffset" v:prompt="" v:val="VT0(0.15):0"></v:ud>			<v:ud v:nameu="TopRightOffset" v:prompt="" v:val="VT0(0.15):0"></v:ud>			<v:ud v:nameu="BotLeftOffset" v:prompt="" v:val="VT0(0.15):0"></v:ud>			<v:ud v:nameu="BotRightOffset" v:prompt="" v:val="VT0(0.15):0"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="54" cy="281.27" width="108" height="50.9605"></v:textrect>		<path d="M10.8 306.75 L97.2 306.75 A10.7998 10.7998 -180 0 0 108 295.95 L108 266.59 A10.7998 10.7998 -180 0 0 97.2 255.79					 L10.8 255.79 A10.7998 10.7998 -180 0 0 0 266.59 L0 295.95 A10.7998 10.7998 -180 0 0 10.8 306.75 Z" class="st2"></path>		<text x="14.98" y="277.67" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Start capturing <tspan x="42.99" dy="1.2em" class="st4">logs</tspan></text>		</g>	<g id="shape7-13" v:mid="7" v:groupcontext="shape" transform="translate(495,-137.664)">		<title></title>		<desc>Set the log level using debugfs node</desc>		<v:userdefs>			<v:ud v:nameu="CTypeTopLeftSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CTypeTopRightSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CTypeBotLeftSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CTypeBotRightSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CornerLockHoriz" v:prompt="" v:val="VT0(1):5"></v:ud>			<v:ud v:nameu="CornerLockVert" v:prompt="" v:val="VT0(1):5"></v:ud>			<v:ud v:nameu="CornerLockDiag" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="TopLeftOffset" v:prompt="" v:val="VT0(0.15):1"></v:ud>			<v:ud v:nameu="TopRightOffset" v:prompt="" v:val="VT0(0.15):1"></v:ud>			<v:ud v:nameu="BotLeftOffset" v:prompt="" v:val="VT0(0.15):1"></v:ud>			<v:ud v:nameu="BotRightOffset" v:prompt="" v:val="VT0(0.15):1"></v:ud>			<v:ud v:nameu="visVersion" v:prompt="" v:val="VT0(15):26"></v:ud>			<v:ud v:nameu="TopLeftOffset" v:prompt="" v:val="VT0(0.15):0"></v:ud>			<v:ud v:nameu="TopRightOffset" v:prompt="" v:val="VT0(0.15):0"></v:ud>			<v:ud v:nameu="BotLeftOffset" v:prompt="" v:val="VT0(0.15):0"></v:ud>			<v:ud v:nameu="BotRightOffset" v:prompt="" v:val="VT0(0.15):0"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="54" cy="281.27" width="108" height="50.9605"></v:textrect>		<path d="M10.8 306.75 L97.2 306.75 A10.7998 10.7998 -180 0 0 108 295.95 L108 266.59 A10.7998 10.7998 -180 0 0 97.2 255.79					 L10.8 255.79 A10.7998 10.7998 -180 0 0 0 266.59 L0 295.95 A10.7998 10.7998 -180 0 0 10.8 306.75 Z" class="st2"></path>		<text x="11.3" y="270.47" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Set the log level <tspan x="16.64" dy="1.2em" class="st4">using debugfs </tspan><tspan x="40.65" dy="1.2em" class="st4">node</tspan></text>		</g>	<g id="shape8-18" v:mid="8" v:groupcontext="shape" transform="translate(180,-136.52)">		<title></title>		<desc>Choose the log level</desc>		<v:userdefs>			<v:ud v:nameu="CTypeTopLeftSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CTypeTopRightSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CTypeBotLeftSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CTypeBotRightSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CornerLockHoriz" v:prompt="" v:val="VT0(1):5"></v:ud>			<v:ud v:nameu="CornerLockVert" v:prompt="" v:val="VT0(1):5"></v:ud>			<v:ud v:nameu="CornerLockDiag" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="TopLeftOffset" v:prompt="" v:val="VT0(0.15):1"></v:ud>			<v:ud v:nameu="TopRightOffset" v:prompt="" v:val="VT0(0.15):1"></v:ud>			<v:ud v:nameu="BotLeftOffset" v:prompt="" v:val="VT0(0.15):1"></v:ud>			<v:ud v:nameu="BotRightOffset" v:prompt="" v:val="VT0(0.15):1"></v:ud>			<v:ud v:nameu="visVersion" v:prompt="" v:val="VT0(15):26"></v:ud>			<v:ud v:nameu="TopLeftOffset" v:prompt="" v:val="VT0(0.15):0"></v:ud>			<v:ud v:nameu="TopRightOffset" v:prompt="" v:val="VT0(0.15):0"></v:ud>			<v:ud v:nameu="BotLeftOffset" v:prompt="" v:val="VT0(0.15):0"></v:ud>			<v:ud v:nameu="BotRightOffset" v:prompt="" v:val="VT0(0.15):0"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="54" cy="281.27" width="108" height="50.9605"></v:textrect>		<path d="M10.8 306.75 L97.2 306.75 A10.7998 10.7998 -180 0 0 108 295.95 L108 266.59 A10.7998 10.7998 -180 0 0 97.2 255.79					 L10.8 255.79 A10.7998 10.7998 -180 0 0 0 266.59 L0 295.95 A10.7998 10.7998 -180 0 0 10.8 306.75 Z" class="st2"></path>		<text x="13.64" y="277.67" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Choose the log <tspan x="41.66" dy="1.2em" class="st4">level</tspan></text>		</g>	<g id="shape9-22" v:mid="9" v:groupcontext="shape" transform="translate(36.375,-136.52)">		<title></title>		<desc>Mount debugfs</desc>		<v:userdefs>			<v:ud v:nameu="CTypeTopLeftSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CTypeTopRightSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CTypeBotLeftSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CTypeBotRightSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CornerLockHoriz" v:prompt="" v:val="VT0(1):5"></v:ud>			<v:ud v:nameu="CornerLockVert" v:prompt="" v:val="VT0(1):5"></v:ud>			<v:ud v:nameu="CornerLockDiag" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="TopLeftOffset" v:prompt="" v:val="VT0(0.15):1"></v:ud>			<v:ud v:nameu="TopRightOffset" v:prompt="" v:val="VT0(0.15):1"></v:ud>			<v:ud v:nameu="BotLeftOffset" v:prompt="" v:val="VT0(0.15):1"></v:ud>			<v:ud v:nameu="BotRightOffset" v:prompt="" v:val="VT0(0.15):1"></v:ud>			<v:ud v:nameu="visVersion" v:prompt="" v:val="VT0(15):26"></v:ud>			<v:ud v:nameu="TopLeftOffset" v:prompt="" v:val="VT0(0.15):0"></v:ud>			<v:ud v:nameu="TopRightOffset" v:prompt="" v:val="VT0(0.15):0"></v:ud>			<v:ud v:nameu="BotLeftOffset" v:prompt="" v:val="VT0(0.15):0"></v:ud>			<v:ud v:nameu="BotRightOffset" v:prompt="" v:val="VT0(0.15):0"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="54" cy="281.27" width="108" height="50.9605"></v:textrect>		<path d="M10.8 306.75 L97.2 306.75 A10.7998 10.7998 -180 0 0 108 295.95 L108 266.59 A10.7998 10.7998 -180 0 0 97.2 255.79					 L10.8 255.79 A10.7998 10.7998 -180 0 0 0 266.59 L0 295.95 A10.7998 10.7998 -180 0 0 10.8 306.75 Z" class="st2"></path>		<text x="14.31" y="284.87" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Mount debugfs</text>		</g>	<g id="shape10-25" v:mid="10" v:groupcontext="shape" v:layermember="0" transform="translate(144.375,-153)">		<title></title>		<path d="M0 297.75 L27.28 297.75" class="st5"></path>	</g>	<g id="shape12-31" v:mid="12" v:groupcontext="shape" v:layermember="0" transform="translate(603,-154.145)">		<title></title>		<path d="M0 297.75 L27.28 297.75" class="st5"></path>	</g>	<g id="shape13-36" v:mid="13" v:groupcontext="shape" v:layermember="0" transform="translate(746.625,-154.032)">		<title></title>		<path d="M0 297.75 L36.65 297.75" class="st5"></path>	</g>	<g id="shape14-41" v:mid="14" v:groupcontext="shape" v:layermember="0" transform="translate(899.625,-154.145)">		<title></title>		<path d="M0 297.75 L27.65 297.75" class="st5"></path>	</g>	<g id="shape16-46" v:mid="16" v:groupcontext="shape" transform="translate(342,-183.039)">		<title></title>		<desc>VPU driver debug log level</desc>		<v:userdefs>			<v:ud v:nameu="CTypeTopLeftSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CTypeTopRightSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CTypeBotLeftSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CTypeBotRightSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CornerLockHoriz" v:prompt="" v:val="VT0(1):5"></v:ud>			<v:ud v:nameu="CornerLockVert" v:prompt="" v:val="VT0(1):5"></v:ud>			<v:ud v:nameu="CornerLockDiag" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="TopLeftOffset" v:prompt="" v:val="VT0(0.15):1"></v:ud>			<v:ud v:nameu="TopRightOffset" v:prompt="" v:val="VT0(0.15):1"></v:ud>			<v:ud v:nameu="BotLeftOffset" v:prompt="" v:val="VT0(0.15):1"></v:ud>			<v:ud v:nameu="BotRightOffset" v:prompt="" v:val="VT0(0.15):1"></v:ud>			<v:ud v:nameu="visVersion" v:prompt="" v:val="VT0(15):26"></v:ud>			<v:ud v:nameu="TopLeftOffset" v:prompt="" v:val="VT0(0.15):0"></v:ud>			<v:ud v:nameu="TopRightOffset" v:prompt="" v:val="VT0(0.15):0"></v:ud>			<v:ud v:nameu="BotLeftOffset" v:prompt="" v:val="VT0(0.15):0"></v:ud>			<v:ud v:nameu="BotRightOffset" v:prompt="" v:val="VT0(0.15):0"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="54" cy="281.27" width="108" height="50.9605"></v:textrect>		<path d="M10.8 306.75 L97.2 306.75 A10.7998 10.7998 -180 0 0 108 295.95 L108 266.59 A10.7998 10.7998 -180 0 0 97.2 255.79					 L10.8 255.79 A10.7998 10.7998 -180 0 0 0 266.59 L0 295.95 A10.7998 10.7998 -180 0 0 10.8 306.75 Z" class="st2"></path>		<text x="6.64" y="277.67" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>VPU driver debug <tspan x="31.99" dy="1.2em" class="st4">log level</tspan></text>		</g>	<g id="shape20-50" v:mid="20" v:groupcontext="shape" transform="translate(342,-91.1447)">		<title></title>		<desc>VPU firmware debug log level</desc>		<v:userdefs>			<v:ud v:nameu="CTypeTopLeftSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CTypeTopRightSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CTypeBotLeftSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CTypeBotRightSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CornerLockHoriz" v:prompt="" v:val="VT0(1):5"></v:ud>			<v:ud v:nameu="CornerLockVert" v:prompt="" v:val="VT0(1):5"></v:ud>			<v:ud v:nameu="CornerLockDiag" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="TopLeftOffset" v:prompt="" v:val="VT0(0.15):1"></v:ud>			<v:ud v:nameu="TopRightOffset" v:prompt="" v:val="VT0(0.15):1"></v:ud>			<v:ud v:nameu="BotLeftOffset" v:prompt="" v:val="VT0(0.15):1"></v:ud>			<v:ud v:nameu="BotRightOffset" v:prompt="" v:val="VT0(0.15):1"></v:ud>			<v:ud v:nameu="visVersion" v:prompt="" v:val="VT0(15):26"></v:ud>			<v:ud v:nameu="TopLeftOffset" v:prompt="" v:val="VT0(0.15):0"></v:ud>			<v:ud v:nameu="TopRightOffset" v:prompt="" v:val="VT0(0.15):0"></v:ud>			<v:ud v:nameu="BotLeftOffset" v:prompt="" v:val="VT0(0.15):0"></v:ud>			<v:ud v:nameu="BotRightOffset" v:prompt="" v:val="VT0(0.15):0"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="54" cy="281.27" width="108" height="50.9605"></v:textrect>		<path d="M10.8 306.75 L97.2 306.75 A10.7998 10.7998 -180 0 0 108 295.95 L108 266.59 A10.7998 10.7998 -180 0 0 97.2 255.79					 L10.8 255.79 A10.7998 10.7998 -180 0 0 0 266.59 L0 295.95 A10.7998 10.7998 -180 0 0 10.8 306.75 Z" class="st2"></path>		<text x="16.99" y="277.67" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>VPU firmware <tspan x="13.63" dy="1.2em" class="st4">debug log level</tspan></text>		</g>	<g id="shape27-54" v:mid="27" v:groupcontext="shape" v:layermember="0" transform="translate(333,-116.625)">		<title></title>		<path d="M1.01 306.75 L0.65 306.75 L-4.5 306.75 L-4.5 214.86 L0.65 214.86" class="st7"></path>	</g>	<g id="shape28-62" v:mid="28" v:groupcontext="shape" v:layermember="0" transform="translate(288,-153)">		<title></title>		<path d="M0 297.75 L40.5 297.75" class="st8"></path>	</g>	<g id="shape32-65" v:mid="32" v:groupcontext="shape" v:layermember="0" transform="translate(441,-208.52)">		<title></title>		<path d="M9 306.75 L22.5 306.75 L22.5 398.64 L9 398.64" class="st8"></path>	</g>	<g id="shape33-68" v:mid="33" v:groupcontext="shape" v:layermember="0" transform="translate(495,-171.572)">		<title></title>		<path d="M-7.99 315.18 L-8.35 315.18 L-31.5 315.18 L-31.5 316.32" class="st9"></path>	</g></g>
</svg>

**图：调试 VPU 工作流**

请按照以下步骤调试 VPU 驱动程序和 VPU 固件：

1. 使用以下命令挂载 `debugfs` 节点：

mount -t debugfs none /sys/kernel/debug/
        Copy to clipboard
2. 选择 VPU 驱动程序调试日志级别和调试日志值，如下表所示。您还可以使用调试日志值的位掩码选择多个调试日志级别。

    | 调试日志级别 | 调试日志值 |
    | --- | --- |
    | VIDC\_ERR | 0x00000001 |
    | VIDC\_HIGH | 0x00000002 |
    | VIDC\_LOW | 0x00000004 |
    | VIDC\_PERF | 0x00000008 |
    | VIDC\_PKT | 0x00000010 |
    | VIDC\_BUS | 0x00000020 |
    | VIDC\_STAT | 0x00000040 |
    | VIDC\_ENCODER | 0x00000100 |
    | VIDC\_DECODER | 0x00000200 |
    | VIDC\_PRINTK | 0x10000000 |
    | VIDC\_FTRACE | 0x20000000 |

Note

VPU 驱动程序将默认调试级别设置为 `VIDC_ERR`，并将调试日志限制为仅错误场景。
3. 将 VPU 驱动程序调试日志值设置为 `/sys/module/iris_vpu/parameters/msm_vidc_debug` 节点。

    激活所有消息级别的示例命令：

echo 0x1000037F > /sys/module/iris_vpu/parameters/msm_vidc_debug
        Copy to clipboard
4. 选择 VPU 固件调试日志级别和调试日志值，如下表所示。您还可以使用调试日志值的位掩码选择多个调试日志级别。

    | 调试日志级别 | 调试日志值 |
    | --- | --- |
    | FW\_LOW | 0x00000001 |
    | FW\_MED | 0x00000002 |
    | FW\_HIGH | 0x00000004 |
    | FW\_ERROR | 0x00000008 |
    | FW\_FATAL | 0x00000010 |
    | FW\_PERF | 0x00000020 |
    | FW\_CACHE\_LOW | 0x00000100 |
    | FW\_CACHE\_MED | 0x00000200 |
    | FW\_CACHE\_HIGH | 0x00000400 |
    | FW\_CACHE\_ERROR | 0x00000800 |
    | FW\_CACHE\_FATAL | 0x00001000 |
    | FW\_CACHE\_PERF | 0x00002000 |
    | FW\_PRINTK | 0x10000000 |
    | FW\_FTRACE | 0x20000000 |

Note

VPU 固件调试日志仅限于错误和致命场景，默认调试级别设置为 `FW_ERROR | FW_FATAL`。
5. 将 VPU 固件调试日志值设置为 `/sys/module/iris_vpu/parameters/msm_fw_debug` 节点。

    激活所有消息级别的示例命令：

echo 0x1000037F > /sys/module/iris_vpu/parameters/msm_fw_debug
        Copy to clipboard
6. 使用以下命令开始捕获 VPU 驱动程序和固件的内核消息，并运行用例：

cat /proc/kmsg
        Copy to clipboard

### 调试 GStreamer 插件

Qualcomm GStreamer 视频插件符合标准 GStreamer 框架。有关 GStreamer 插件的调试方法的信息，参见 [Debug GStreamer Plugins](https://gstreamer.freedesktop.org/documentation/tutorials/basic/debugging-tools.html)。

Last Published: Apr 30, 2025

[Previous Topic
探索视频示例应用程序](https://docs.qualcomm.com/bundle/publicresource/80-70018-20SC/topics/interfaces.md) [Next Topic
高级视频规格](https://docs.qualcomm.com/bundle/publicresource/80-70018-20SC/topics/feature-descriptions.md)