# 调试常见系统问题

一些常见的系统问题包括看门狗超时、总线 hang、超时错误和硬件重置。本指南描述了有关如何识别和调试此类系统问题的信息。

## 看门狗问题

看门狗 (WD) 是固定长度的计数器，用于从硬件或软件严重故障恢复系统。除非系统定期投喂看门狗定时器，否则被触发的看门狗定时器会认为发生灾难并复位子系统或整个系统。

有看门狗有多种实现，如硬件看门狗、软件看门狗、Bark 和 Bite 等。下表总结了各种类型的看门狗实现。

表：看门狗实现

| 看门狗类型 | 超时持续时间（以秒为单位） | 所有者 | 到期后 | 结果 |
| --- | --- | --- | --- | --- |
| 非安全看门狗 Bark | 11 | HLOS | IRQ 至 Qualcomm TEE | HLOS 归为 panic |
| 非安全看门狗 Bite | 12 | HLOS | 快速中断请求 (FIQ) 至 Qualcomm TEE | Qualcomm TEE 断言 PS\_HOLD |
| 安全看门狗 Bark | 6 | Qualcomm TEE | FIQ 至 Qualcomm TEE | Qualcomm TEE 只投喂安全看门狗 |
| 安全看门狗 Bite | 22 | Qualcomm TEE | 将 PS\_HOLD 置为有效 | PMIC 复位系统 |

系统同时使用软件和硬件看门狗。例如，modem DSP (mDSP) 实现软件和硬件看门狗。硬件看门狗模块是用于确保处理器处于活动状态的组件，包含一个可从预定义时间倒计时的定时器。如果定时器未被相应的 CPU 内核复位，则定时器最终计数到 0（零）并触发看门狗超时。

### 应用处理器 CPU 的看门狗

**非安全硬件看门狗**

- HLOS 上每 10 秒会触发一个定时器事件以投喂非安全硬件看门狗。如果 HLOS 持续 11 秒未投喂非安全看门狗，则非安全看门狗 Bark 会触发，HLOS 必须对此进行处理。如果 HLOS 无法处理，HLOS 就会陷入 panic。
- 如果 HLOS 无法处理非安全看门狗 Bark，则会触发非安全看门狗咬合并将其发送到 Qualcomm TEE，并且 Qualcomm TEE 陷入致命错误。
- 看门狗的 pet 和 bark 时间可以使用内核配置选项进行自定义。例如，以下配置会将 bark 时间设置为 13 秒，pet 时间设置为 11 秒。

CONFIG_QCOM_WATCHDOG_BARK_TIME=13000
        Copy to clipboard

CONFIG_QCOM_WATCHDOG_PET_TIME=11000
        Copy to clipboard

**安全硬件看门狗**

- 每 6 秒，就会向 Qualcomm TEE 触发一次安全看门狗信号，作为快速中断请求 (FIQ)。Qualcomm TEE 中的 FIQ 处理程序会投喂安全硬件看门狗。此问题不是错误或致命问题。
- 如果 Qualcomm TEE 无法处理安全看门狗 Bark 22 秒，则安全看门狗 Bite 将过期。随后，PS\_HOLD 引脚在 PMIC 上置为有效，最终复位整个系统。

此功能的完整功能可供具有授权访问权限的许可开发人员使用。有关调试看门狗问题的更多信息，参见 [Qualcomm Linux Debug Guide - Addendum](https://docs.qualcomm.com/bundle/resource/topics/80-70017-12A/general_system_debugging.html#watchdog_timeout)。

## 总线 hang 和超时错误

SNoC、CNoC、xPU、TBU、AHB 是设备上的系统基础架构组件，负责如下操作：

- 总线事务
- 地址翻译
- 内存保护

这些组件上的一些故障或超时会导致系统错误，相关故障或超时会上报给 Qualcomm TEE。

此功能可供具有授权访问权限的许可开发者使用。有关调试总线 hang 和超时错误的更多信息，参见 [Qualcomm Linux Debug Guide - Addendum](https://docs.qualcomm.com/bundle/resource/topics/80-70017-12A/general_system_debugging.html#erroneous_transaction_on_bus_error_and_timeout)。

## 硬件复位

安全看门狗、温度传感器 (TSENS) 或 PMIC 问题可能导致硬件复位。硬件复位问题的调试方法取决于硬件复位的原因。因此，确定硬件重置的原因至关重要。

此功能可供具有授权访问权限的许可开发者使用。有关调试硬件复位问题的更多信息，参见 [Qualcomm Linux Debug Guide - Addendum](https://docs.qualcomm.com/bundle/resource/topics/80-70017-12A/general_system_debugging.html#reset_hardware)。

Last Published: Jan 23, 2025

[Previous Topic
调试 Linux 内核空间问题](https://docs.qualcomm.com/bundle/publicresource/80-70017-12SC/topics/debugging_linux_kernel.md) [Next Topic
调试 non-HLOS](https://docs.qualcomm.com/bundle/publicresource/80-70017-12SC/topics/debug-non-hlos-subsystems.md)