调试 Qualcomm TEE
Qualcomm TEE 内核日志(也称为 TrustZone 诊断日志)可用于调试 Qualcomm TEE 中发生的错误。 TrustZone 诊断日志可在 Linux 内核驱动程序中获取,该驱动程序会重定向日志。- 使用 SSH 以 root 身份连接到设备。
- 使用以下命令捕获 TrustZone 日志:
tzbsp_log.txt 中的错误代码以十六进制编码。您可以运行以下工具将 tzbsp_log.txt 从十六进制解码为字符串。
- 转到
<TZ.XF.X.X path>/trustzone_images/ssg/bsp/tz/build/tz/A53_64/<BuildFlavor> - 使用 python 3 运行以下命令。
例如:
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)将无法访问。有时,设备可能会提示进行出厂数据重置。使用以下命令在安全设备上进行调试:在设备上刷写 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 提供了用于日志记录的加密日志功能。请按照以下步骤启用此功能:- 使用以下命令生成用于加密的 RSA 密钥:
- 使用以下命令显示 RSA 密钥信息和模数:
注意 模数用于
oem_config.xml文件中的pub_mod。pub_exp指数通常为 65537。0x10001 称为publicExponent。 - 在
trustzone_images/ssg/securemsm/trustzone/qsee/mink/oem/config/<chipset>/ oem_config.xml文件中设置 RSA 公钥(指数和模数)。 通过将以下几行添加到oem_config.xml文件来启用此功能:注意 更新oem_config.xml文件中的公钥时,请确保没有由 Notepad 或 Wordpad 编辑器插入的换行符、制表符或空格。 - 通过
trustzone_images/ssg/securemsm/trustzone/qsee/mink/oem/config/<chipset>/oem_config.xml文件中的以下命令启用加密功能配置标志: - 要构建 TrustZone devcfg 镜像,请输入 OEM_ID 字段值并签名
devcfg.mbn镜像。 - 使用以下命令刷写已签名的
devcfg.mbn镜像:
devcfg.mbn,对 QCS9100 使用 devcfg_iot.mbn。
- 使用以下命令收集 Qualcomm TEE/TrustZone 日志:
Qualcomm TEE/TrustZone 诊断日志解密步骤
- 从 KBA-200917004544-1 (ZIP) 下载 Python 解密工具
decrypt_tzdiag_qsee_log_tools.py。 - 要安装,请运行以下命令:
- 要解密,请运行以下命令:
- 解密成功后:
- 将 Qualcomm TEE 日志的纯文本导航到可读字符串格式。
- 使用以下命令将十六进制编码的错误代码转换为字符串:
后续步骤
- 要了解如何开发和运行受信任和客户端应用程序,请参阅 开发受信任和客户端应用程序。
- 要配置 Qualcomm TEE 以保护处理敏感数据和运行受信任应用程序的设备,请参阅 配置安全服务。
- 要自定义内存和 SEPolicy,请参阅 自定义安全服务。

