# 调试

Source: [https://docs.qualcomm.com/doc/80-70014-11Y/topic/debug.html](https://docs.qualcomm.com/doc/80-70014-11Y/topic/debug.html)

调试提供了一组常用的日志和调试技术，用于对 Qualcomm TEE、TA、CA 和安全设备中的问题进行故障排除。

Note: 请记住在 SELinux Permissive 模式下运行所有 SSH 命令。将来会支持 Enforcing 模式。有关如何连接到设备的说明，请参见 [Qualcomm Linux 编译指南 ➝ 操作方法 ➝ 如何使用 SSH](https://docs.qualcomm.com/bundle/publicresource/topics/80-70014-254/how_to.html)。

## 调试 Qualcomm TEE

Qualcomm TEE 内核日志（也称为 TZDiag 日志）可用于调试在 Qualcomm TEE 中发生的错误。

TZDiag 日志在 Linux 内核驱动程序中可用，该驱动程序会重定向日志。

1. 通过 SSH 以 root 用户的身份连接到设备。
2. 使用以下命令捕获 TZ 日志：

        cat /proc/tzdbg/log > tzbsp_log.txtCopy to clipboard

`tzbsp_log.txt` 中的错误代码以十六进制编码。您可以运行以下工具将 tzbsp\_log.txt从十六进制解码为字符串。
1. 导航到 &lt;TZ.XF.X.X path&gt;/trustzone\_images/ssg/bsp/tz/build/tz/A53\_64/&lt;BuildFlavor&gt;
2. 使用 python 3 运行以下命令。

        python3 print_tz_log.py -l tzbsp_log.txt -e errorCodesDict.txt -t <location of TZ build path> -o tzbsp_log_decode.txt Copy to clipboard

    例如：

        Python3 print_tz_log.py -l tzbsp_log.txt -e errorCodesDict.txt -t \\crmhyd\nsid-hyd-05\TZ.XF.5.0-07927-KODIAKAAAAANAAZT-1 -o tzbsp_log_decode.txtCopy to clipboard

对于设备日志收集，TZ Diag 日志缓冲区是 RAM dump 的一部分，可以使用 TZ.XF 软件的 `qsee.elf` 在 crash dump 解析工具中对其进行解析。对于离线或设备外日志收集，TZ Diag 日志缓冲区是 RAM dump 的一部分，可以使用TZ.XF 软件的 `qsee.elf` (trustzone\_images/ssg/bsp/qsee/build/${tz\_bid:EACAANAA}) 在 crash dump 解析工具中对其进行解析。

**使用安全 crash dump 进行调试**

您可以使用 RAM dump 调试 Qualcomm TEE。Qualcomm TEE 的执行区域 dump 是通过安全 crash dump 收集的。

使用阶段 2 sec.elf 触发熔丝的设备称为启用了安全启动的设备。要在这些设备上进行调试，请参见 [Sectools v2: Secure Debug User Guide](https://docs.qualcomm.com/bundle/80-NM248-23/resource/80-NM248-23_REV_AA_Sectools_v2__Secure_Debug_User_Guide.pdf)。

## 调试 TA 和 CA

TA 日志也称为 Qualcomm TEE 日志，用于调试 TA 中的错误。要调试 CA 中的错误，请使用内核和 journalctl 日志。

对于在线或设备上的日志收集，Linux 在运行时收集 Qualcomm TEE/内核日志。您可以通过 SSH 连接到设备并使用以下命令：
- 要从 Linux 收集 Qualcomm TEE 日志，请执行以下操作：

        cat /proc/tzdbg/qsee_log > qsee_log.txtCopy to clipboard
- 对于 CA，要收集内核和 logcat 日志，请执行以下操作：

        cat /dev/kmsg > kernel_log.txt
        journalctl > journalctl.txtCopy to clipboard
- 对于脱机或设备外日志收集，Qualcomm TEE 日志与内核和 journalctl 日志一起在 RAM dump 中提供。

## 在安全设备上调试

作为安全启动过程的一部分，熔断调试禁用熔丝会禁用设备上的调试功能。这包括子系统上的 RAM dump、INV 和 NINV 调试。

调试策略功能允许控制启用了安全启动的设备的调试功能。

调试策略镜像支持调试功能，例如商业安全设备上的 JTAG 重新启用（INV 调试）、RAM dump 和 TZ 日志（NINV 调试）。

出于安全原因，设备的序列号控制安全 RAM dump、Qualcomm TEE 日志和 JTAG 的调试策略。

在 Qualcomm TEE 子系统上启用 JTAG 会禁用设备在硬件密钥生成方面的安全性。因此，现有的安全存储（如用户数据、SFS 和 RPMB）将无法访问。有时，设备可能会提示恢复出厂设置。使用以下命令在安全设备上进行调试：

    <meta>/common/sectoolsv2/ext/<platform>/sectools.exe secure-debug --security-profile <meta>/common/sectoolsv2/<chipset>_security_profile.xml --generate --outfile apdp_out.mbn --all-flags --sign --signing-mode LOCAL --oem-id=0x1 --root-certificate=./RSA-OEM-KEYS/qpsa_rootca.cer  --ca-certificate=./RSA-OEM-KEYS/qpsa_attestca.cer --ca-key=./RSA-OEM-KEYS/qpsa_attestca.key --oem-product-id=0xabcd --serial-number=0xabcdabcdCopy to clipboard

确保正确配置 OEM\_ID、PRODUCT\_ID、序列号和密钥以及证书路径。

有关详细信息，请参见 [Sectools v2：Secure Debug User Guide](https://docs.qualcomm.com/bundle/80-NM248-23/resource/80-NM248-23_REV_AA_Sectools_v2__Secure_Debug_User_Guide.pdf)。

**在设备上刷写 APDP**

要在设备上刷写 APDP，请运行以下命令

    Fastboot flash apdp <path to apdp.mbn>Copy to clipboard

| 阶段 | 完全 dump | 完全 dump | 完全 dump | 迷你 dump |
| --- | --- | --- | --- | --- |
| 阶段 | 程序（DCC 和扫描 dump）<br><br><br>                                <br>ADSP/Video/RPM/SLPI | Modem/Qualcomm TEE/安全 dump | TZDiag | – |
| 非安全 | 无需调试策略 | 无需调试策略 | 无需调试策略 | 无需调试策略 |
| 安全阶段 1 | 无需 APDP 镜像 | 无需 APDP 镜像 | 无需 APDP 镜像 | 无需 APDP 镜像 |
| 安全阶段 2 | `--nonsecure-crash-dumps` | --offline-crash-dumps 及设备序列号 | --logs 及设备序列号<br><br><br>                                <br>或<br><br><br>                                <br>使用以下命令加密的 TZ Diag<br><br><br>                                <br>`--nonsecure-crash-dumps`<br><br><br>                                <br>+ devcfg 中用于 TZDiag 加密的公钥/指数值可以在以下位置配置：<br><br><br>                                <br>\trustzone\_images\ssg\securemsm\<br><br><br>                                <br>trustzone\qsee\mink\oem\config&lt;chipset&gt;<br><br><br>                                <br>\oem\_config.xml | <ul class="ul" id="debug__ul_lyz_lty_21c"><br>                                    <li class="li">Apps 迷你 dump：<p class="p"><code class="ph codeph">--apps-encrypted-mini-dumps</code></p><br></li><br><br>                                    <li class="li">Modem 和 WLAN：<ul class="ul" id="debug__ul_ocm_nty_21c"><br>                                            <li class="li"><code class="ph codeph">--mpss-encrypted-mini-dumps</code></li><br><br>                                            <li class="li"><code class="ph codeph">--wlan-encrypted-mini-dumps</code></li><br><br>                                        </ul><br></li><br><br>                                    <li class="li">aDSP 迷你 dump： <code class="ph codeph">--adsp-encrypted-mini-dumps</code></li><br><br>                                    <li class="li">cDSP 迷你 dump： <code class="ph codeph">--cdsp-encrypted-mini-dumps</code></li><br><br>                                </ul><br><br>                                <br>有关详细信息，请参阅 [MiniDump Software User Guide](https://docs.qualcomm.com/bundle/80-P8754-71/resource/80-P8754-71_REV_H_MiniDump_Software_User_Guide.pdf)。 |

Last Published: Aug 27, 2024

[Previous Topic
定制](https://docs.qualcomm.com/bundle/publicresource/80-70014-11Y/topics/customize.md) [Next Topic
示例](https://docs.qualcomm.com/bundle/publicresource/80-70014-11Y/topics/examples-lru.md)