Skip to main content
当前版本未启用 TEE 日志。
调试提供了一系列常见的日志记录和调试技术,用于排查 Qualcomm TEE、受信任和客户端应用程序以及安全设备中的问题。 重要 在 SELinux Permissive 模式下运行所有 SSH 命令。将来会支持 Enforcing 模式。有关如何连接到设备的说明,请参阅 Qualcomm Linux 构建指南。

调试 Qualcomm TEE

Qualcomm TEE 内核日志(也称为 TrustZone 诊断日志)可用于调试 Qualcomm TEE 中发生的错误。 TrustZone 诊断日志可在 Linux 内核驱动程序中获取,该驱动程序会重定向日志。
  1. 使用 SSH 以 root 身份连接到设备。
  2. 使用以下命令捕获 TrustZone 日志:
tzbsp_log.txt 中的错误代码以十六进制编码。您可以运行以下工具将 tzbsp_log.txt 从十六进制解码为字符串。
  1. 转到 <TZ.XF.X.X path>/trustzone_images/ssg/bsp/tz/build/tz/A53_64/<BuildFlavor>
  2. 使用 python 3 运行以下命令。
    例如:
对于设备日志收集,TrustZone 诊断日志缓冲区是 RAM 转储的一部分,可以使用崩溃转储解析工具中来自 TZ.XF 软件的 qsee.elf 进行解析。对于离线或非设备日志收集,TrustZone 诊断日志缓冲区是 RAM 转储的一部分,可以使用崩溃转储解析工具中来自 TZ.XF 软件的 qsee.elf (trustzone\_images/ssg/bsp/qsee/build/\${tz\_bid:EACAANAA}) 进行解析。

使用安全崩溃转储进行调试

您可以使用 RAM 转储调试 Qualcomm TEE。Qualcomm TEE 的执行区域转储是通过安全崩溃转储收集的。 触发第 2 阶段 sec.elf 熔丝的设备称为启用了安全启动的设备。要在这些设备上进行调试,请参阅 SecTools v2:安全调试用户指南。 注意 SecTools 指南仅对具有授权访问权限的许可开发者开放。

调试受信任和客户端应用程序

受信任的应用程序日志(也称为 Qualcomm TEE 日志)用于调试受信任应用程序中的错误。要调试客户端应用程序中的错误,使用内核和 journalctl 日志。 对于在线或设备端日志收集,Linux 在运行时收集 Qualcomm TEE/内核日志。您可以使用 SSH 连接到设备并使用以下命令:
  • 从 Linux 收集 Qualcomm TEE 日志:
  • 对于客户端应用程序,收集内核和 logcat 日志:
  • 对于离线或非设备日志收集,Qualcomm TEE 日志与内核和 journalctl 日志一起可在 RAM 转储中获取。

在安全设备上调试

作为安全启动过程的一部分,熔断调试禁用熔丝将禁用设备上的调试功能。这包括子系统上的 RAM 转储、INV 和 NINV 调试。 调试策略功能允许控制启用了安全启动的设备的调试能力。 调试策略镜像允许在商用安全设备上使用 JTAG 重新启用(INV 调试)、RAM 转储和 TrustZone 日志记录(NINV 调试)等调试功能。 出于安全原因,设备的序列号控制着安全 RAM 转储、Qualcomm TEE 日志和 JTAG 的调试策略。 在 Qualcomm TEE 子系统上启用 JTAG 会禁用有关硬件密钥生成的设备安全性。因此,现有的安全存储(如用户数据、SFS 和 RPMB)将无法访问。有时,设备可能会提示进行出厂数据重置。使用以下命令在安全设备上进行调试:
确保正确配置 OEM_ID、PRODUCT_ID、序列号和密钥以及证书路径。 有关更多信息,请参阅 SecTools v2:安全调试用户指南。 注意 SecTools 指南仅对具有授权访问权限的许可开发者开放。

在设备上刷写 APDP

要在设备上刷写 APDP,请运行以下命令:
表:用于转储收集的调试策略标志
/trustzone_images/ssg/securemsm/trustzone /qsee/mink/oem/config<chipset>/oem_config.xml
请参阅 KBA-191202045020-1 (ZIP)。有关更多信息,请参阅 MiniDump 软件用户指南。 注意 SecTools 和 MiniDump 指南仅对具有授权访问权限的许可用户开放。

在安全设备上收集 Qualcomm TEE/TrustZone 诊断日志

在安全设备上,默认情况下禁用从 Linux 收集的 Qualcomm TEE/TrustZone 日志。Qualcomm 提供了用于日志记录的加密日志功能。请按照以下步骤启用此功能:
  1. 使用以下命令生成用于加密的 RSA 密钥:
  2. 使用以下命令显示 RSA 密钥信息和模数:
    注意 模数用于 oem_config.xml 文件中的 pub_mod。pub_exp 指数通常为 65537。0x10001 称为 publicExponent。
  3. 在 trustzone_images/ssg/securemsm/trustzone/qsee/mink/oem/config/<chipset>/ oem_config.xml 文件中设置 RSA 公钥(指数和模数)。 通过将以下几行添加到 oem_config.xml 文件来启用此功能:
    注意 更新 oem_config.xml 文件中的公钥时,请确保没有由 Notepad 或 Wordpad 编辑器插入的换行符、制表符或空格。
  4. 通过 trustzone_images/ssg/securemsm/trustzone/qsee/mink/oem/config/<chipset>/oem_config.xml 文件中的以下命令启用加密功能配置标志:
  5. 要构建 TrustZone devcfg 镜像,请输入 OEM_ID 字段值并签名 devcfg.mbn 镜像。
  6. 使用以下命令刷写已签名的 devcfg.mbn 镜像:
注意 对 QCS6490 使用 devcfg.mbn,对 QCS9100 使用 devcfg_iot.mbn。
  1. 使用以下命令收集 Qualcomm TEE/TrustZone 日志:

Qualcomm TEE/TrustZone 诊断日志解密步骤

  1. 从 KBA-200917004544-1 (ZIP) 下载 Python 解密工具 decrypt_tzdiag_qsee_log_tools.py。
  2. 要安装,请运行以下命令:
  3. 要解密,请运行以下命令:
  4. 解密成功后:
    1. 将 Qualcomm TEE 日志的纯文本导航到可读字符串格式。
    2. 使用以下命令将十六进制编码的错误代码转换为字符串:

后续步骤