# 概述

子系统是在 Qualcomm^®^ SoC 上拥有自己独立执行环境的处理器。本指南介绍了受影响子系统的工具、示例日志和故障排除方法。当用户必须诊断和排除此类异常时，了解子系统中出现的差异以及检查错误的方法会非常有用。

下表列出了SoC上的重要子系统。

表：SoC上的子系统

| 子系统 (Subsystem) | 说明 |
| --- | --- |
| 应用处理器子系统 (APSS) | 这是主要子系统。它将 Linux 内核作为 high-level OS (HLOS) 来运行。 |
| 应用数字信号处理器 (aDSP) | 该子系统也称为低功耗音频子系统 (LPASS)。该子系统处理音频编码/解码和语音识别等数字信号处理任务。 |
| 计算数字信号处理器 (cDSP) | 该子系统也称为计算 DSP。该子系统适用于计算密集型任务，例如神经网络相关的计算。 |
| Qualcomm^®^ 受信任执行环境 (TEE)/TrustZone (TZ) | 该子系统执行安全操作，并基于 Arm® TrustZone® 架构构建。关于此子系统的更多信息，请参阅 [Qualcomm Linux 安全指南](https://docs.qualcomm.com/bundle/publicresource/topics/80-70017-11)。 |
| 无线局域网处理器子系统 (WPSS) | 该子系统管理连接Wi-Fi网络、发送和接收数据包、处理安全协议以及确保网络性能稳定的任务。关于此子系统的更多信息，请参阅 [Qualcomm Linux Wi-Fi 指南](https://docs.qualcomm.com/bundle/publicresource/topics/80-70017-14/introduction.html)。 |
| Always On 处理器 (AOP) | 该子系统可以调节设备的电源。 |

除应用处理器外，所有其他子系统的软件也被称为非 HLOS。

要了解子系统的启动流程，参见 [Qualcomm Linux 启动指南](https://docs.qualcomm.com/bundle/publicresource/topics/80-70017-4)。

Note

请参阅 Qualcomm^®^ Linux^®^ 上支持的[硬件 SoC](https://docs.qualcomm.com/bundle/publicresource/topics/80-70017-115/soc.html)。

## 调试工作流

由于 Qualcomm SoC 上存在多个子系统，因此首先确定出现问题的子系统非常重要，以便您可以调试相关子系统。

应用处理器作为主要子系统可以检测其他子系统何时发生崩溃。例如，如果 aDSP 处理器子系统崩溃，则内核日志会捕获子系统重启 (SSR) 崩溃错误日志。因此，要识别待调试的子系统，您必须首先验证内核调试消息。

下图展示了识别错误的工作流程以及要调试的组件。

<?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">
<!-- 由 Microsoft Visio, SVG Export 生成 Debug-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="12.0417in" height="6.98958in" viewbox="0 0 867.002 503.25" xml:space="preserve" color-interpolation-filters="sRGB" class="st16"><v:documentproperties v:langid="2052">	<v:userdefs>		<v:ud v:nameu="msvNoAutoConnect" v:val="VT0(0):26"></v:ud>	</v:userdefs></v:documentproperties>
<style>.svg-1 .st1 { marker-end: url("#mrkr5-5"); stroke: none; stroke-width: 1.5 }
.svg-1 .st2 { fill: #ffffff; fill-opacity: 1; stroke: #ffffff; stroke-opacity: 1; stroke-width: 0.37313421680881 }
.svg-1 .st3 { fill: none; stroke: #3253dc; stroke-width: 2.5 }
.svg-1 .st4 { fill: #000000; font-family: SimHei; font-size: 1.00001em }
.svg-1 .st5 { fill: #000000; font-family: Arial; font-size: 1.00001em }
.svg-1 .st6 { font-family: SimHei; font-size: 1em }
.svg-1 .st7 { marker-end: url("#mrkr5-20"); stroke: #000000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 2.25 }
.svg-1 .st8 { fill: #000000; fill-opacity: 1; stroke: #000000; stroke-opacity: 1; stroke-width: 0.47169799436448 }
.svg-1 .st9 { font-family: Arial; font-size: 1em }
.svg-1 .st10 { font-size: 1em }
.svg-1 .st11 { fill: #ffffff; stroke: none; stroke-linecap: butt; stroke-width: 7.2 }
.svg-1 .st12 { fill: none; stroke: none; stroke-width: 1 }
.svg-1 .st13 { fill: none }
.svg-1 .st14 { stroke: #3253dc; stroke-width: 2.5 }
.svg-1 .st15 { fill: #000000; font-family: SimHei; font-size: 0.75em }
.svg-1 .st16 { 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-5" class="st2" v:arrowtype="5" v:arrowsize="2" v:setback="4.69" refx="-4.6900014020871" orient="auto" markerunits="strokeWidth" overflow="visible">		<use xlink:href="#lend5" transform="scale(-2.6800008011926,-2.6800008011926) "></use>	</marker>	<marker id="mrkr5-20" class="st8" v:arrowtype="5" v:arrowsize="2" v:setback="0" refx="-0" orient="auto" markerunits="strokeWidth" overflow="visible">		<use xlink:href="#lend5" transform="scale(-2.1200005341284,-2.1200005341284) "></use>	</marker></defs><g v:mid="0" v:index="1" v:groupcontext="foregroundPage">	<v:userdefs>		<v:ud v:nameu="msvThemeOrder" v:val="VT0(0):26"></v:ud>	</v:userdefs>	<title>Page-1</title>	<v:pageproperties v:drawingscale="1" v:pagescale="1" v:drawingunits="0" v:shadowoffsetx="9" v:shadowoffsety="-9"></v:pageproperties>	<v:layer v:name="Flowchart" v:index="0"></v:layer>	<v:layer v:name="Connector" v:index="1"></v:layer>	<g id="shape1-1" v:mid="1" v:groupcontext="shape" transform="translate(19.5014,-19.5)">		<title>shape26-1</title>		<path d="M0 503.25 L828 503.25 L828 39 L0 39 L0 503.25" class="st1"></path>	</g>	<g id="shape2-6" v:mid="2" v:groupcontext="shape" v:layermember="0" transform="translate(397.005,-437.25)">		<title>shape1-5</title>		<desc>Start</desc>		<v:custprops>			<v:cp v:nameu="Cost" v:lbl="Cost" v:prompt="" v:type="7" v:format="@" v:sortkey="" v:invis="false" v:ask="false" v:langid="1033" v:cal="0"></v:cp>			<v:cp v:nameu="ProcessNumber" v:lbl="Process Number" v:prompt="" v:type="2" v:format="" v:sortkey="" v:invis="false" v:ask="false" v:langid="1033" v:cal="0"></v:cp>			<v:cp v:nameu="Owner" v:lbl="Owner" v:prompt="" v:type="0" v:format="" v:sortkey="" v:invis="false" v:ask="false" v:langid="1033" v:cal="0"></v:cp>			<v:cp v:nameu="Function" v:lbl="Function" v:prompt="" v:type="0" v:format="" v:sortkey="" v:invis="false" v:ask="false" v:langid="1033" v:cal="0" v:val="VT4()"></v:cp>			<v:cp v:nameu="StartDate" v:lbl="Start Date" v:prompt="" v:type="5" v:format="" v:sortkey="" v:invis="false" v:ask="false" v:langid="1033" v:cal="0"></v:cp>			<v:cp v:nameu="EndDate" v:lbl="End Date" v:prompt="" v:type="5" v:format="" v:sortkey="" v:invis="false" v:ask="false" v:langid="1033" v:cal="0"></v:cp>			<v:cp v:nameu="Status" v:lbl="Status" v:prompt="" v:type="4" v:format=";Not Started;In Progress;Completed;Deferred;Waiting on Input" v:sortkey="" v:invis="false" v:ask="false" v:langid="1033" v:cal="0" v:val="VT4()"></v:cp>		</v:custprops>		<v:userdefs>			<v:ud v:nameu="visVersion" v:prompt="" v:val="VT0(15):26"></v:ud>			<v:ud v:nameu="DefaultWidth" v:prompt="" v:val="VT0(1):0"></v:ud>			<v:ud v:nameu="DefaultHeight" v:prompt="" v:val="VT0(0.375):0"></v:ud>			<v:ud v:nameu="ResizeTxtHeight" v:prompt="" v:val="VT0(0.375):0"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(2,2,2,2)"></v:textblock>		<v:textrect cx="39.5667" cy="488.464" width="78.86" height="29.5714"></v:textrect>		<path d="M14.93 503.25 L64.21 503.25 A14.7857 14.7857 -180 0 0 64.21 473.68 L14.93 473.68 A14.7857 14.7857 -180 1 0 14.93					 503.25 Z" class="st3"></path>		<text x="27.57" y="492.36" class="st4" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>起始</text>		</g>	<g id="shape3-9" v:mid="3" v:groupcontext="shape" v:layermember="0" transform="translate(369.819,-303.021)">		<title>shape2-8</title>		<desc>Panic or Bug in dmesg?</desc>		<v:custprops>			<v:cp v:nameu="Cost" v:lbl="Cost" v:prompt="" v:type="7" v:format="@" v:sortkey="" v:invis="false" v:ask="false" v:langid="1033" v:cal="0"></v:cp>			<v:cp v:nameu="ProcessNumber" v:lbl="Process Number" v:prompt="" v:type="2" v:format="" v:sortkey="" v:invis="false" v:ask="false" v:langid="1033" v:cal="0"></v:cp>			<v:cp v:nameu="Owner" v:lbl="Owner" v:prompt="" v:type="0" v:format="" v:sortkey="" v:invis="false" v:ask="false" v:langid="1033" v:cal="0"></v:cp>			<v:cp v:nameu="Function" v:lbl="Function" v:prompt="" v:type="0" v:format="" v:sortkey="" v:invis="false" v:ask="false" v:langid="1033" v:cal="0" v:val="VT4()"></v:cp>			<v:cp v:nameu="StartDate" v:lbl="Start Date" v:prompt="" v:type="5" v:format="" v:sortkey="" v:invis="false" v:ask="false" v:langid="1033" v:cal="0"></v:cp>			<v:cp v:nameu="EndDate" v:lbl="End Date" v:prompt="" v:type="5" v:format="" v:sortkey="" v:invis="false" v:ask="false" v:langid="1033" v:cal="0"></v:cp>			<v:cp v:nameu="Status" v:lbl="Status" v:prompt="" v:type="4" v:format=";Not Started;In Progress;Completed;Deferred;Waiting on Input" v:sortkey="" v:invis="false" v:ask="false" v:langid="1033" v:cal="0" v:val="VT4()"></v:cp>		</v:custprops>		<v:userdefs>			<v:ud v:nameu="visVersion" v:prompt="" v:val="VT0(15):26"></v:ud>			<v:ud v:nameu="DefaultWidth" v:prompt="" v:val="VT0(1):0"></v:ud>			<v:ud v:nameu="DefaultHeight" v:prompt="" v:val="VT0(0.75):0"></v:ud>			<v:ud v:nameu="ResizeTxtHeight" v:prompt="" v:val="VT0(0.75):0"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(2,2,2,2)"></v:textblock>		<v:textrect cx="66.6849" cy="461.238" width="111.15" height="63.0186"></v:textrect>		<path d="M0 461.24 L66.69 419.23 L133.37 461.24 L66.69 503.25 L0 461.24 Z" class="st3"></path>		<text x="18.33" y="464.54" class="st5" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist><v:lf></v:lf>dmesg <tspan class="st6">中有</tspan> Panic <tspan x="42.34" dy="1.3em" class="st6">或</tspan> Bug<tspan class="st6">？</tspan></text>		</g>	<g id="shape4-15" v:mid="4" v:groupcontext="shape" v:layermember="1" transform="translate(436.509,-387.042)">		<title>shape3-12</title>		<path d="M0.06 453.04 L0.06 471.04 L0 471.04 L0 494.9 L0 503.25" class="st7"></path>	</g>	<g id="shape5-21" v:mid="5" v:groupcontext="shape" v:layermember="0" transform="translate(177.763,-166.98)">		<title>shape4-18</title>		<desc>Subsystem restart log in dmesg?</desc>		<v:custprops>			<v:cp v:nameu="Cost" v:lbl="Cost" v:prompt="" v:type="7" v:format="@" v:sortkey="" v:invis="false" v:ask="false" v:langid="1033" v:cal="0"></v:cp>			<v:cp v:nameu="ProcessNumber" v:lbl="Process Number" v:prompt="" v:type="2" v:format="" v:sortkey="" v:invis="false" v:ask="false" v:langid="1033" v:cal="0"></v:cp>			<v:cp v:nameu="Owner" v:lbl="Owner" v:prompt="" v:type="0" v:format="" v:sortkey="" v:invis="false" v:ask="false" v:langid="1033" v:cal="0"></v:cp>			<v:cp v:nameu="Function" v:lbl="Function" v:prompt="" v:type="0" v:format="" v:sortkey="" v:invis="false" v:ask="false" v:langid="1033" v:cal="0" v:val="VT4()"></v:cp>			<v:cp v:nameu="StartDate" v:lbl="Start Date" v:prompt="" v:type="5" v:format="" v:sortkey="" v:invis="false" v:ask="false" v:langid="1033" v:cal="0"></v:cp>			<v:cp v:nameu="EndDate" v:lbl="End Date" v:prompt="" v:type="5" v:format="" v:sortkey="" v:invis="false" v:ask="false" v:langid="1033" v:cal="0"></v:cp>			<v:cp v:nameu="Status" v:lbl="Status" v:prompt="" v:type="4" v:format=";Not Started;In Progress;Completed;Deferred;Waiting on Input" v:sortkey="" v:invis="false" v:ask="false" v:langid="1033" v:cal="0" v:val="VT4()"></v:cp>		</v:custprops>		<v:userdefs>			<v:ud v:nameu="visVersion" v:prompt="" v:val="VT0(15):26"></v:ud>			<v:ud v:nameu="DefaultWidth" v:prompt="" v:val="VT0(1):0"></v:ud>			<v:ud v:nameu="DefaultHeight" v:prompt="" v:val="VT0(0.75):0"></v:ud>			<v:ud v:nameu="ResizeTxtHeight" v:prompt="" v:val="VT0(0):26"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(2,2,2,2)"></v:textblock>		<v:textrect cx="66.6849" cy="457.236" width="111.15" height="69.021"></v:textrect>		<path d="M0 457.24 L66.69 411.22 L133.37 457.24 L66.69 503.25 L0 457.24 Z" class="st3"></path>		<text x="41.01" y="445.53" class="st4" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>在<tspan class="st9"> </tspan><tspan class="st9">dmesg </tspan><tspan x="30.68" dy="1.3em" class="st10">中查看子系统<v:lf></v:lf></tspan><tspan x="36.68" dy="1.3em" class="st10">重启日志</tspan>？</text>		</g>	<g id="shape6-28" v:mid="6" v:groupcontext="shape" v:layermember="0" transform="translate(569.878,-166.25)">		<title>shape5-23</title>		<desc>Error in TrustZone?</desc>		<v:custprops>			<v:cp v:nameu="Cost" v:lbl="Cost" v:prompt="" v:type="7" v:format="@" v:sortkey="" v:invis="false" v:ask="false" v:langid="1033" v:cal="0"></v:cp>			<v:cp v:nameu="ProcessNumber" v:lbl="Process Number" v:prompt="" v:type="2" v:format="" v:sortkey="" v:invis="false" v:ask="false" v:langid="1033" v:cal="0"></v:cp>			<v:cp v:nameu="Owner" v:lbl="Owner" v:prompt="" v:type="0" v:format="" v:sortkey="" v:invis="false" v:ask="false" v:langid="1033" v:cal="0"></v:cp>			<v:cp v:nameu="Function" v:lbl="Function" v:prompt="" v:type="0" v:format="" v:sortkey="" v:invis="false" v:ask="false" v:langid="1033" v:cal="0" v:val="VT4()"></v:cp>			<v:cp v:nameu="StartDate" v:lbl="Start Date" v:prompt="" v:type="5" v:format="" v:sortkey="" v:invis="false" v:ask="false" v:langid="1033" v:cal="0"></v:cp>			<v:cp v:nameu="EndDate" v:lbl="End Date" v:prompt="" v:type="5" v:format="" v:sortkey="" v:invis="false" v:ask="false" v:langid="1033" v:cal="0"></v:cp>			<v:cp v:nameu="Status" v:lbl="Status" v:prompt="" v:type="4" v:format=";Not Started;In Progress;Completed;Deferred;Waiting on Input" v:sortkey="" v:invis="false" v:ask="false" v:langid="1033" v:cal="0" v:val="VT4()"></v:cp>		</v:custprops>		<v:userdefs>			<v:ud v:nameu="visVersion" v:prompt="" v:val="VT0(15):26"></v:ud>			<v:ud v:nameu="DefaultWidth" v:prompt="" v:val="VT0(1):0"></v:ud>			<v:ud v:nameu="DefaultHeight" v:prompt="" v:val="VT0(0.75):0"></v:ud>			<v:ud v:nameu="ResizeTxtHeight" v:prompt="" v:val="VT0(0.75):0"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(2,2,2,2)"></v:textblock>		<v:textrect cx="66.6849" cy="457.236" width="111.15" height="69.021"></v:textrect>		<path d="M0 457.24 L66.69 411.22 L133.37 457.24 L66.69 503.25 L0 457.24 Z" class="st3"></path>		<text x="39.34" y="453.03" class="st5" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>TrustZone <tspan x="18.68" dy="1.275em" class="st6">中是否存在错误</tspan><tspan class="st6">？</tspan></text>		</g>	<g id="shape7-33" v:mid="7" v:groupcontext="shape" v:layermember="1" transform="translate(244.449,-259.006)">		<title>shape6-26</title>		<desc>Yes</desc>		<v:userdefs></v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="19.6706" cy="417.222" width="60.01" height="22.4037"></v:textrect>		<path d="M125.37 417.22 L0 417.22 L0 494.9 L0 503.25" class="st7"></path>		<rect v:rectcontext="textBkgnd" x="13.6707" y="409.42" width="12.0001" height="15.6047" class="st11"></rect>		<text x="13.67" y="421.12" class="st4" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>是</text>		</g>	<g id="shape8-40" v:mid="8" v:groupcontext="shape" v:layermember="1" transform="translate(503.192,-258.276)">		<title>shape7-33</title>		<desc>No</desc>		<v:userdefs></v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="110.063" cy="416.492" width="60.01" height="22.4037"></v:textrect>		<path d="M0 416.49 L133.37 416.49 L133.37 494.9 L133.37 503.25" class="st7"></path>		<rect v:rectcontext="textBkgnd" x="104.063" y="408.69" width="12.0001" height="15.6047" class="st11"></rect>		<text x="104.06" y="420.39" class="st4" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>否</text>		</g>	<g id="group9-47" transform="translate(71.799,-35.7024)" v:mid="9" v:groupcontext="group">		<v:custprops>			<v:cp v:nameu="Cost" v:lbl="Cost" v:prompt="" v:type="7" v:format="@" v:sortkey="" v:invis="false" v:ask="false" v:langid="1033" v:cal="0"></v:cp>			<v:cp v:nameu="ProcessNumber" v:lbl="Process Number" v:prompt="" v:type="2" v:format="" v:sortkey="" v:invis="false" v:ask="false" v:langid="1033" v:cal="0"></v:cp>			<v:cp v:nameu="Owner" v:lbl="Owner" v:prompt="" v:type="0" v:format="" v:sortkey="" v:invis="false" v:ask="false" v:langid="1033" v:cal="0"></v:cp>			<v:cp v:nameu="Function" v:lbl="Function" v:prompt="" v:type="0" v:format="" v:sortkey="" v:invis="false" v:ask="false" v:langid="1033" v:cal="0" v:val="VT4()"></v:cp>			<v:cp v:nameu="StartDate" v:lbl="Start Date" v:prompt="" v:type="5" v:format="" v:sortkey="" v:invis="false" v:ask="false" v:langid="1033" v:cal="0"></v:cp>			<v:cp v:nameu="EndDate" v:lbl="End Date" v:prompt="" v:type="5" v:format="" v:sortkey="" v:invis="false" v:ask="false" v:langid="1033" v:cal="0"></v:cp>			<v:cp v:nameu="Status" v:lbl="Status" v:prompt="" v:type="4" v:format=";Not Started;In Progress;Completed;Deferred;Waiting on Input" v:sortkey="" v:invis="false" v:ask="false" v:langid="1033" v:cal="0" v:val="VT4()"></v:cp>		</v:custprops>		<v:userdefs>			<v:ud v:nameu="AntiScale" v:val="VT0(1):26"></v:ud>			<v:ud v:nameu="visVersion" v:prompt="" v:val="VT0(15):26"></v:ud>			<v:ud v:nameu="DefaultWidth" v:prompt="" v:val="VT0(1):0"></v:ud>			<v:ud v:nameu="DefaultHeight" v:prompt="" v:val="VT0(0.75):0"></v:ud>			<v:ud v:nameu="ResizeTxtHeight" v:prompt="" v:val="VT0(0.75):0"></v:ud>		</v:userdefs>		<title>shape8-40</title>		<desc>Debug specific subsystem</desc>		<g id="shape10-48" v:mid="10" v:groupcontext="shape" v:layermember="0">			<title>工作表.10</title>			<path d="M0 503.25 L98.57 503.25 L98.57 429.32 L0 429.32 L0 503.25 Z" class="st12"></path>		</g>		<g id="shape11-50" v:mid="11" v:groupcontext="shape" v:layermember="0">			<title>工作表.11</title>			<rect x="0" y="429.32" width="98.57" height="73.93" class="st3"></rect>		</g>		<g id="shape12-52" v:mid="12" v:groupcontext="shape" v:layermember="0" transform="translate(9,0)">			<title>工作表.12</title>			<path d="M0 503.25 L0 429.32 L0 503.25 Z" class="st13"></path>			<path d="M0 503.25 L0 429.32" class="st14"></path>		</g>		<g id="shape13-55" v:mid="13" v:groupcontext="shape" v:layermember="0" transform="translate(89.57,0)">			<title>工作表.13</title>			<path d="M0 503.25 L0 429.32 L0 503.25 Z" class="st13"></path>			<path d="M0 503.25 L0 429.32" class="st14"></path>		</g>		<g id="shape9-58" v:mid="9" v:groupcontext="groupContent">			<v:textblock v:margins="rect(2,2,2,2)"></v:textblock>			<v:textrect cx="49.2843" cy="466.286" width="80.58" height="73.9286"></v:textrect>			<text x="19.28" y="462.38" class="st4" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>调试特定的<v:lf></v:lf><tspan x="31.28" dy="1.3em" class="st10">子系统</tspan></text>			</g>	</g>	<g id="group14-61" transform="translate(308.37,-35.7024)" v:mid="14" v:groupcontext="group">		<v:custprops>			<v:cp v:nameu="Cost" v:lbl="Cost" v:prompt="" v:type="7" v:format="@" v:sortkey="" v:invis="false" v:ask="false" v:langid="1033" v:cal="0"></v:cp>			<v:cp v:nameu="ProcessNumber" v:lbl="Process Number" v:prompt="" v:type="2" v:format="" v:sortkey="" v:invis="false" v:ask="false" v:langid="1033" v:cal="0"></v:cp>			<v:cp v:nameu="Owner" v:lbl="Owner" v:prompt="" v:type="0" v:format="" v:sortkey="" v:invis="false" v:ask="false" v:langid="1033" v:cal="0"></v:cp>			<v:cp v:nameu="Function" v:lbl="Function" v:prompt="" v:type="0" v:format="" v:sortkey="" v:invis="false" v:ask="false" v:langid="1033" v:cal="0" v:val="VT4()"></v:cp>			<v:cp v:nameu="StartDate" v:lbl="Start Date" v:prompt="" v:type="5" v:format="" v:sortkey="" v:invis="false" v:ask="false" v:langid="1033" v:cal="0"></v:cp>			<v:cp v:nameu="EndDate" v:lbl="End Date" v:prompt="" v:type="5" v:format="" v:sortkey="" v:invis="false" v:ask="false" v:langid="1033" v:cal="0"></v:cp>			<v:cp v:nameu="Status" v:lbl="Status" v:prompt="" v:type="4" v:format=";Not Started;In Progress;Completed;Deferred;Waiting on Input" v:sortkey="" v:invis="false" v:ask="false" v:langid="1033" v:cal="0" v:val="VT4()"></v:cp>		</v:custprops>		<v:userdefs>			<v:ud v:nameu="AntiScale" v:val="VT0(1):26"></v:ud>			<v:ud v:nameu="visVersion" v:prompt="" v:val="VT0(15):26"></v:ud>			<v:ud v:nameu="DefaultWidth" v:prompt="" v:val="VT0(1):0"></v:ud>			<v:ud v:nameu="DefaultHeight" v:prompt="" v:val="VT0(0.75):0"></v:ud>			<v:ud v:nameu="ResizeTxtHeight" v:prompt="" v:val="VT0(0.75):0"></v:ud>		</v:userdefs>		<title>shape10-48</title>		<desc>Debug Application processor</desc>		<g id="shape15-62" v:mid="15" v:groupcontext="shape" v:layermember="0">			<title>工作表.15</title>			<path d="M0 503.25 L98.57 503.25 L98.57 429.32 L0 429.32 L0 503.25 Z" class="st12"></path>		</g>		<g id="shape16-64" v:mid="16" v:groupcontext="shape" v:layermember="0">			<title>工作表.16</title>			<rect x="0" y="429.32" width="98.57" height="73.93" class="st3"></rect>		</g>		<g id="shape17-66" v:mid="17" v:groupcontext="shape" v:layermember="0" transform="translate(9,0)">			<title>工作表.17</title>			<path d="M0 503.25 L0 429.32 L0 503.25 Z" class="st13"></path>			<path d="M0 503.25 L0 429.32" class="st14"></path>		</g>		<g id="shape18-69" v:mid="18" v:groupcontext="shape" v:layermember="0" transform="translate(89.57,0)">			<title>工作表.18</title>			<path d="M0 503.25 L0 429.32 L0 503.25 Z" class="st13"></path>			<path d="M0 503.25 L0 429.32" class="st14"></path>		</g>		<g id="shape14-72" v:mid="14" v:groupcontext="groupContent">			<v:textblock v:margins="rect(2,2,2,2)"></v:textblock>			<v:textrect cx="49.2843" cy="466.286" width="80.58" height="73.9286"></v:textrect>			<text x="25.28" y="462.38" class="st4" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>调试应用<v:lf></v:lf><tspan x="31.28" dy="1.3em" class="st10">处理器</tspan></text>			</g>	</g>	<g id="group19-75" transform="translate(586.251,-35.7024)" v:mid="19" v:groupcontext="group">		<v:custprops>			<v:cp v:nameu="Cost" v:lbl="Cost" v:prompt="" v:type="7" v:format="@" v:sortkey="" v:invis="false" v:ask="false" v:langid="1033" v:cal="0"></v:cp>			<v:cp v:nameu="ProcessNumber" v:lbl="Process Number" v:prompt="" v:type="2" v:format="" v:sortkey="" v:invis="false" v:ask="false" v:langid="1033" v:cal="0"></v:cp>			<v:cp v:nameu="Owner" v:lbl="Owner" v:prompt="" v:type="0" v:format="" v:sortkey="" v:invis="false" v:ask="false" v:langid="1033" v:cal="0"></v:cp>			<v:cp v:nameu="Function" v:lbl="Function" v:prompt="" v:type="0" v:format="" v:sortkey="" v:invis="false" v:ask="false" v:langid="1033" v:cal="0" v:val="VT4()"></v:cp>			<v:cp v:nameu="StartDate" v:lbl="Start Date" v:prompt="" v:type="5" v:format="" v:sortkey="" v:invis="false" v:ask="false" v:langid="1033" v:cal="0"></v:cp>			<v:cp v:nameu="EndDate" v:lbl="End Date" v:prompt="" v:type="5" v:format="" v:sortkey="" v:invis="false" v:ask="false" v:langid="1033" v:cal="0"></v:cp>			<v:cp v:nameu="Status" v:lbl="Status" v:prompt="" v:type="4" v:format=";Not Started;In Progress;Completed;Deferred;Waiting on Input" v:sortkey="" v:invis="false" v:ask="false" v:langid="1033" v:cal="0" v:val="VT4()"></v:cp>		</v:custprops>		<v:userdefs>			<v:ud v:nameu="AntiScale" v:val="VT0(1):26"></v:ud>			<v:ud v:nameu="visVersion" v:prompt="" v:val="VT0(15):26"></v:ud>			<v:ud v:nameu="DefaultWidth" v:prompt="" v:val="VT0(1):0"></v:ud>			<v:ud v:nameu="DefaultHeight" v:prompt="" v:val="VT0(0.75):0"></v:ud>			<v:ud v:nameu="ResizeTxtHeight" v:prompt="" v:val="VT0(0.75):0"></v:ud>		</v:userdefs>		<title>shape11-56</title>		<desc>Debug Always-on processor</desc>		<g id="shape20-76" v:mid="20" v:groupcontext="shape" v:layermember="0">			<title>工作表.20</title>			<path d="M0 503.25 L98.57 503.25 L98.57 429.32 L0 429.32 L0 503.25 Z" class="st12"></path>		</g>		<g id="shape21-78" v:mid="21" v:groupcontext="shape" v:layermember="0">			<title>工作表.21</title>			<rect x="0" y="429.32" width="98.57" height="73.93" class="st3"></rect>		</g>		<g id="shape22-80" v:mid="22" v:groupcontext="shape" v:layermember="0" transform="translate(9,0)">			<title>工作表.22</title>			<path d="M0 503.25 L0 429.32 L0 503.25 Z" class="st13"></path>			<path d="M0 503.25 L0 429.32" class="st14"></path>		</g>		<g id="shape23-83" v:mid="23" v:groupcontext="shape" v:layermember="0" transform="translate(89.57,0)">			<title>工作表.23</title>			<path d="M0 503.25 L0 429.32 L0 503.25 Z" class="st13"></path>			<path d="M0 503.25 L0 429.32" class="st14"></path>		</g>		<g id="shape19-86" v:mid="19" v:groupcontext="groupContent">			<v:textblock v:margins="rect(2,2,2,2)"></v:textblock>			<v:textrect cx="49.2843" cy="466.286" width="80.58" height="73.9286"></v:textrect>			<text x="37.28" y="455.18" class="st4" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>调试<tspan class="st9"> </tspan><tspan x="21.61" dy="1.225em" class="st9">Always</tspan><tspan class="st9">-</tspan><tspan class="st9">on </tspan><tspan x="31.28" dy="1.275em" class="st10">处理器</tspan>  </text>			</g>	</g>	<g id="group24-93" transform="translate(712.239,-35.7024)" v:mid="24" v:groupcontext="group">		<v:custprops>			<v:cp v:nameu="Cost" v:lbl="Cost" v:prompt="" v:type="7" v:format="@" v:sortkey="" v:invis="false" v:ask="false" v:langid="1033" v:cal="0"></v:cp>			<v:cp v:nameu="ProcessNumber" v:lbl="Process Number" v:prompt="" v:type="2" v:format="" v:sortkey="" v:invis="false" v:ask="false" v:langid="1033" v:cal="0"></v:cp>			<v:cp v:nameu="Owner" v:lbl="Owner" v:prompt="" v:type="0" v:format="" v:sortkey="" v:invis="false" v:ask="false" v:langid="1033" v:cal="0"></v:cp>			<v:cp v:nameu="Function" v:lbl="Function" v:prompt="" v:type="0" v:format="" v:sortkey="" v:invis="false" v:ask="false" v:langid="1033" v:cal="0" v:val="VT4()"></v:cp>			<v:cp v:nameu="StartDate" v:lbl="Start Date" v:prompt="" v:type="5" v:format="" v:sortkey="" v:invis="false" v:ask="false" v:langid="1033" v:cal="0"></v:cp>			<v:cp v:nameu="EndDate" v:lbl="End Date" v:prompt="" v:type="5" v:format="" v:sortkey="" v:invis="false" v:ask="false" v:langid="1033" v:cal="0"></v:cp>			<v:cp v:nameu="Status" v:lbl="Status" v:prompt="" v:type="4" v:format=";Not Started;In Progress;Completed;Deferred;Waiting on Input" v:sortkey="" v:invis="false" v:ask="false" v:langid="1033" v:cal="0" v:val="VT4()"></v:cp>		</v:custprops>		<v:userdefs>			<v:ud v:nameu="AntiScale" v:val="VT0(1):26"></v:ud>			<v:ud v:nameu="visVersion" v:prompt="" v:val="VT0(15):26"></v:ud>			<v:ud v:nameu="DefaultWidth" v:prompt="" v:val="VT0(1):0"></v:ud>			<v:ud v:nameu="DefaultHeight" v:prompt="" v:val="VT0(0.75):0"></v:ud>			<v:ud v:nameu="ResizeTxtHeight" v:prompt="" v:val="VT0(0.75):0"></v:ud>		</v:userdefs>		<title>shape12-64</title>		<desc>Debug NoC</desc>		<g id="shape25-94" v:mid="25" v:groupcontext="shape" v:layermember="0">			<title>工作表.25</title>			<path d="M0 503.25 L98.57 503.25 L98.57 429.32 L0 429.32 L0 503.25 Z" class="st12"></path>		</g>		<g id="shape26-96" v:mid="26" v:groupcontext="shape" v:layermember="0">			<title>工作表.26</title>			<rect x="0" y="429.32" width="98.57" height="73.93" class="st3"></rect>		</g>		<g id="shape27-98" v:mid="27" v:groupcontext="shape" v:layermember="0" transform="translate(9,0)">			<title>工作表.27</title>			<path d="M0 503.25 L0 429.32 L0 503.25 Z" class="st13"></path>			<path d="M0 503.25 L0 429.32" class="st14"></path>		</g>		<g id="shape28-101" v:mid="28" v:groupcontext="shape" v:layermember="0" transform="translate(89.57,0)">			<title>工作表.28</title>			<path d="M0 503.25 L0 429.32 L0 503.25 Z" class="st13"></path>			<path d="M0 503.25 L0 429.32" class="st14"></path>		</g>		<g id="shape24-104" v:mid="24" v:groupcontext="groupContent">			<v:textblock v:margins="rect(2,2,2,2)"></v:textblock>			<v:textrect cx="49.2843" cy="466.286" width="80.58" height="73.9286"></v:textrect>			<text x="23.61" y="470.19" class="st4" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>调试<tspan class="st9"> </tspan><tspan class="st9">NoC</tspan></text>			</g>	</g>	<g id="shape29-108" v:mid="29" v:groupcontext="shape" v:layermember="1" transform="translate(121.083,-109.626)">		<title>shape13-70</title>		<desc>Yes</desc>		<v:userdefs></v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="-6.73688E-006" cy="423.224" width="60.01" height="22.4037"></v:textrect>		<path d="M56.68 399.88 L0 399.88 L0 494.9 L0 503.25" class="st7"></path>		<rect v:rectcontext="textBkgnd" x="-5.99987" y="415.422" width="12.0001" height="15.6047" class="st11"></rect>		<text x="-6" y="427.13" class="st4" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>是</text>		</g>	<g id="shape30-115" v:mid="30" v:groupcontext="shape" v:layermember="1" transform="translate(311.136,-109.626)">		<title>shape14-77</title>		<desc>No</desc>		<v:userdefs></v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="46.5188" cy="428.304" width="60.01" height="22.4037"></v:textrect>		<path d="M0 399.88 L46.52 399.88 L46.52 494.9 L46.52 503.25" class="st7"></path>		<rect v:rectcontext="textBkgnd" x="40.5189" y="420.502" width="12.0001" height="15.6047" class="st11"></rect>		<text x="40.52" y="432.21" class="st4" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>否</text>		</g>	<g id="shape31-122" v:mid="31" v:groupcontext="shape" v:layermember="1" transform="translate(406.941,-72.664)">		<title>shape16-84</title>		<desc>Nonsecure WD bite AHB timeout XPU error SMMU error No error</desc>		<v:userdefs></v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="40.4981" cy="392.479" width="88.54" height="62.0036"></v:textrect>		<path d="M162.94 363.65 L40.5 363.65 L40.5 503.25 L8.35 503.25 L0 503.25" class="st7"></path>		<rect v:rectcontext="textBkgnd" x="4.99244" y="363.221" width="71.0112" height="58.5146" class="st11"></rect>		<text x="4.99" y="372" class="st15" v:langid="2052"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>非安全看门狗<tspan class="st9" v:langid="1033"> </tspan><tspan class="st9" v:langid="1033">bite<v:lf></v:lf></tspan><tspan x="21" dy="1.3em" class="st9" v:langid="1033">AHB </tspan><tspan class="st10" v:langid="1033">超时<v:lf></v:lf></tspan><tspan x="21" dy="1.3em" class="st9" v:langid="1033">XPU </tspan><tspan class="st10" v:langid="1033">错误<v:lf></v:lf></tspan><tspan x="16.5" dy="1.3em" class="st9" v:langid="1033">SMMU </tspan><tspan class="st10" v:langid="1033">错误<v:lf></v:lf></tspan><tspan x="27" dy="1.3em" class="st10" v:langid="1033">无错误</tspan></text>		</g>	<g id="shape32-138" v:mid="32" v:groupcontext="shape" v:layermember="1" transform="translate(703.251,-109.626)">		<title>shape18-95</title>		<desc>NoC error</desc>		<v:userdefs></v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="58.2724" cy="422.792" width="64.02" height="22.4037"></v:textrect>		<path d="M0 400.61 L58.27 400.61 L58.27 494.9 L58.27 503.25" class="st7"></path>		<rect v:rectcontext="textBkgnd" x="32.6023" y="414.99" width="51.3402" height="15.6047" class="st11"></rect>		<text x="32.6" y="426.69" class="st5" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>NoC <tspan class="st6">错误</tspan></text>		</g>	<g id="shape33-146" v:mid="33" v:groupcontext="shape" v:layermember="1" transform="translate(635.942,-109.633)">		<title>shape21-102</title>		<desc>AoP error</desc>		<v:userdefs></v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="0.310242" cy="474.943" width="62.69" height="22.4037"></v:textrect>		<path d="M0.62 446.63 L0.09 494.9 L0 503.25" class="st7"></path>		<rect v:rectcontext="textBkgnd" x="-24.6978" y="467.141" width="50.0164" height="15.6047" class="st11"></rect>		<text x="-24.7" y="478.84" class="st5" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>AoP <tspan class="st6">错误</tspan></text>		</g></g>
</svg>

**图 ：识别受影响子系统的工作流程**

当内核 dmesg 日志中没有 panic 标识特征时，请验证 Qualcomm TEE 诊断 (diag) 日志中是否存在错误，如不安全看门狗 Bite 和片上网络 (NoC) 错误。以下主题描述了一些示例内核消息，这些消息指示内核 panic、bug 和子系统崩溃问题。

### 识别内核 panic 和 bug

从内核 dmesg 日志中，您可以确定该重置是内核 panic 还是 bug。以下是一些指示内核 panic 或 bug 的示例日志：

- Panic（模式：一般错误）

18.800936: &lt;6&gt; Kernel panic - not syncing: Fatal exception

18.800938: &lt;6&gt; SMP: stopping secondary CPUs

18.800947: &lt;6&gt; CPU0: stopping

Kernel panic - not syncing: Apps watchdog Bark received!
- Bug（模式 1：由于内存损坏而强制崩溃）

12.899532: &lt;6&gt; BUG kmalloc-128 (Not tainted): Redzone overwritten

12.905418: &lt;6&gt; -----------------------------------------------------------------------------
- Bug（模式 2：驱动程序强制崩溃）

320.510769: &lt;6&gt; ------------[ cut here ]------------

320.510781: &lt;6&gt; kernel BUG at /local/mnt/workspace/lnxbuild/project/trees\_in\_use/free\_tree\_platform\_manifest\_refs\_tags/drivers/platform/msm/ipa/ipa\_v3/ipa\_qmi\_service.c:955!
- Bug（模式 3：由于锁定问题而强制崩溃）

[ 180.993861] BUG: spinlock lockup suspected on CPU#0, swapper/0/0

[ 180.993883] lock: stop\_lock+0x0/0x18, .magic: dead4ead, .owner: swapper/6/0, .owner\_cpu: 6

[ 181.015629] Causing a watchdog bite!

Note

大多数 bug 之后都会发生内核 panic。关于调试内核问题的更多信息，请参阅 [Qualcomm Linux 内核指南](https://docs.qualcomm.com/bundle/publicresource/topics/80-70017-3/overview.html)。

### 识别子系统崩溃问题

请验证内核 dmesg 日志，以便确定重启是否是由子系统崩溃引起。例如，根据 `qcm6490.dtsi`（node：remoteproc\_adsp：remoteproc@3000000），以下日志表明aDSP子系统崩溃。

0x000000000A27652C |   5198.790423:   qcom\_q6v5\_pas 3000000.remoteproc: fatal error received: err\_inject\_crash.c:413:Crash injected via Diag

0x000000000A276689 |   5198.801061:   remoteproc remoteproc2: crash detected in 3000000.remoteproc: type fatal error

0x000000000A2767A1 |   5198.809602:   remoteproc remoteproc2: handling crash #1 in 3000000.remoteproc

0x000000000A27688E |   5198.816837:   remoteproc remoteproc2: recovering 3000000.remoteproc

0x000000000A276971 |   5198.823784:   qcom\_q6v5\_pas 8a00000.remoteproc: subsystem event rejected

### 从 Qualcomm TEE 日志中识别系统问题

此功能可供具有授权访问权限的许可开发者使用。关于指示 Qualcomm TEE 中错误的示例日志，请参阅 [Qualcomm Linux 调试指南 - 附录](https://docs.qualcomm.com/bundle/resource/topics/80-70017-12A/identify_subsystem_to_be_debugged.html#identify_and_debug_errors_in_tz)。

如果 Qualcomm TEE 诊断日志中没有错误，则很可能是安全看门狗 Bite 问题。关于看门狗问题的更多信息，请参阅[硬件重置](https://docs.qualcomm.com/doc/80-70017-12SC/topic/general_system_debugging.html#reset-hardware)。

关于 Qualcomm TEE 中调试问题的信息，请参阅 [Qualcomm Linux 安全指南](https://docs.qualcomm.com/bundle/publicresource/topics/80-70017-11/debug.html)。

## 调试方法

有两种调试方法：

- **目标上调试**

    目标上调试是调试软件问题的基本方式。这种方法非常强大，因为大多数信息都可以从实时设备访问。SSH 用于将 Linux 主机连接到现场设备。要设置 SSH，请参阅[使用 SSH](https://docs.qualcomm.com/bundle/publicresource/topics/80-70017-254/how_to.html#use-ssh)。

    关于各种目标调试功能的更多信息，请参阅目标调试功能。
- **目标外调试**

    这种调试方法需要日志而不是实际设备，因此是一种方便、高效的调试方法。使用内存 dump 或日志记录工具执行调试。离线调试可使用各种类型的日志。由于 RAM dump 采集了大部分内存区域，但仅采集了有限的硬件寄存器信息，因此，调试与硬件相关的问题可能是一个挑战。

    关于各种目标外调试功能的更多信息，请参阅[目标外调试功能](https://docs.qualcomm.com/doc/80-70017-12SC/topic/Debug-overview.html#off-target-debug-features)。

## 目标上调试功能

设备上提供了以下调试功能，可以在运行时使用。

- Perf 工具
- 子系统重启
- 强制子系统复位

### Perf 工具

Perf 是 Linux 中一个功能强大的工具，可以简化性能分析。此工具包含在位于 `tools/perf` 的 Linux 内核中。

Perf 工具可用于调试系统行为的各个方面，包括 CPU 性能计数器、跟踪点、kprobe 和 uprobe（用于动态跟踪）。下表列出了 Perf 工具的主要功能。

表：Perf 工具的主要功能

| 功能 | 说明 |
| --- | --- |
| CPU 性能计数器 | 这些 CPU 硬件寄存器用于跟踪已执行指令、缓存未命中和分支误预测等事件。这些事件构成了分析应用程序和识别性能瓶颈的基础。 |
| 跟踪点 | 这些跟踪点放置在代码中的逻辑位置。例如，系统调用、网络事件和文件系统操作。这些跟踪点以最小的开销提供时间戳和堆栈跟踪等信息。 |
| 动态跟踪 | 此功能使用 kprobes 和 uprobes 框架动态创建跟踪点。因此，此功能允许在内核空间和用户空间中进行跟踪。 |

有关 Perf 工具的详细信息，参见以下资源：

- [https://perf.wiki.kernel.org/index.php/Main_Page](https://perf.wiki.kernel.org/index.php/Main_Page)
- [https://github.com/Linaro/OpenCSD/blob/master/HOWTO.md](https://github.com/Linaro/OpenCSD/blob/master/HOWTO.md)
- [https://docs.kernel.org/trace/coresight/index.html](https://docs.kernel.org/trace/coresight/index.html)
- [https://docs.kernel.org/trace/coresight/coresight-perf.html](https://docs.kernel.org/trace/coresight/coresight-perf.html)

### 子系统重启 (Subsystem restart)

子系统可在崩溃时单独重启，无需设备重启。这种类型的重新启动称为子系统重新启动 (SSR)。SSR 功能是使用 Linux 内核中提供的 Remoteproc 框架来实现的。

要启用完整内存 dump 以进行调试，默认情况下禁用 SSR 功能。建议在商用设备上使用 SSR 功能，不要在开发阶段使用。有关 SSR 功能的详细信息，参见 [Remoteproc 子系统](https://docs.qualcomm.com/bundle/publicresource/topics/80-70017-3/features.html#remoteproc-subsystem)。

启用 SSR 功能后，系统重新启动时会生成 SSR dump。由于 SSR dump 的大小小于完整内存 dump 的大小，因此您可能考虑使用 SSR dump 进行调试。但是，需要整个 RAM dump 来调试某些子系统崩溃。

有关如何启用和捕获子系统 dump 的信息，参见[子系统 dumps](https://docs.qualcomm.com/doc/80-70017-12SC/topic/debugging_linux_kernel.html#subsystem-ram-dumps)。

### 强制子系统复位

此功能可用于调试需要重新启动子系统的用例。

此功能可供具有授权访问权限的许可开发者使用。要强制重置子系统，可以使用 QXDM Professional^™^ 运行 `diag` 命令。有关 QXDM Professional 命令及其用法的信息，请参阅 [Qualcomm Linux Debug Guide - Addendum](https://docs.qualcomm.com/bundle/resource/topics/80-70017-12A/debug-non-hlos-subsystems.html#qxdm_professional)。

## 目标外调试功能

用户可以使用 RAM dump 或 QXDM Professional 进行离线调试。

### RAM dump

RAM dump 是发生故障时整个内存的快照。可以使用各种工具来分析RAM dump，包括 Qualcomm崩溃分析门户(QCAP)、RAMParser、Lauterbach TRACE32 模拟器和 Crash utility。关于如何收集和解析 RAM dump 的信息，请参阅[收集和解析 RAM dump](https://docs.qualcomm.com/doc/80-70017-12SC/topic/debugging_linux_kernel.html#collect-and-parse-ram-dumps)。

### QXDM Professional

QXDM Professional 用于调试各种子系统。

该工具可供具有授权访问权限的许可开发者使用。有关 QXDM Professional 命令及其用法的信息，请参阅 [Qualcomm Linux Debug Guide - Addendum](https://docs.qualcomm.com/bundle/resource/topics/80-70017-12A/debug-non-hlos-subsystems.html#qxdm_professional)。

## 常见系统问题

系统问题可以分为以下类型之一：

> 
> 
> - [Linux 内核空间问题](https://docs.qualcomm.com/doc/80-70017-12SC/topic/debugging_linux_kernel.html#debugging-linux-kernel)
> - [系统问题](https://docs.qualcomm.com/doc/80-70017-12SC/topic/general_system_debugging.html#general-system-debugging)
> 
> 
> 
> > 
> > 
> > - [看门狗问题](https://docs.qualcomm.com/doc/80-70017-12SC/topic/general_system_debugging.html#watchdog-timeout)
> >     - [总线 hang 和超时问题](https://docs.qualcomm.com/doc/80-70017-12SC/topic/general_system_debugging.html#erroneous-transaction-on-bus-error-and-timeout)
> >     - [硬件复位问题](https://docs.qualcomm.com/doc/80-70017-12SC/topic/general_system_debugging.html#reset-hardware)

## 其他问题

以下是您可能遇到的其他问题：

- 由于软件错误导致设备冻结问题
- Linux应用程序相关问题
- 由于 PCB 相关硬件问题导致的随机复位

要调试 Linux 内核相关问题，请参阅[调试 Linux 内核空间问题](https://docs.qualcomm.com/doc/80-70017-12SC/topic/debugging_linux_kernel.html#debugging-linux-kernel)。

要调试 Linux 应用程序相关问题，请参阅[调试 Linux 用户空间问题](https://docs.qualcomm.com/doc/80-70017-12SC/topic/using_open_source_debug_tools.html#using-open-source-debug-tools)。

Last Published: Jan 23, 2025

[Next Topic
调试 Linux 用户空间问题](https://docs.qualcomm.com/bundle/publicresource/80-70017-12SC/topics/using_open_source_debug_tools.md)