## 引言
随着移动设备的普及,充电技术变得至关重要。本文将详细介绍基于高通平台的Android 10设备上的充电系统,帮助技术新手快速理解充电原理及调试方法。
## 充电系统架构概览
充电系统分为多个层次,从硬件到应用程序,每一层都有其独特的职责。
- **硬件层**:包括电池、电源管理IC(如PM660)、USB接口等。
- **固件层**:某些电源管理IC内部可能有固件,负责处理复杂的充电逻辑。
- **内核层**:处理与硬件的直接交互,如读取电池状态、控制充电过程等。
- **Framework层**:负责用户界面的显示,例如电池图标、充电提示等。
- **应用程序层**:用户可以使用的应用,如电源管理应用。
## 关键技术点
在深入了解充电系统之前,需要熟悉一些关键的技术术语和概念。
- **PMIC(电源管理IC)**:如PM660,负责设备的电源管理和分配。
- **Type-C**:一种USB接口标准,支持正反插。
- **SDP(Standard Downstream Port)**:标准下行端口,允许USB主机读取设备的描述符。
- **CDP(Charging Downstream Port)**:充电下行端口,允许设备作为主机也可以作为外设。
- **DCP(Dedicated Charging Port)**:专用充电端口,用于高功率充电,如快速充电技术。
- **HVDCP(High Voltage Direct Current Power)**:高电压直流电源,用于快速充电技术。
## 代码位置与功能
了解充电系统的代码位置及其功能是调试的基础。
### 内核层
- **驱动文件**:`qpnp-smb2.c` 和 `smb-lib.c`,位于`Android\kernel\msm-4.4\drivers\power\supply\qcom\`目录下,负责处理充电逻辑。
- **设备树文件**:`fg-gen3-batterydata-xxx.dtsi` 和 `msm-pm660.dtsi`,位于`Android\kernel\msm-4.4\arch\arm64\boot\dts\qcom\`目录下,包含电池参数和充电参数。
- **电量计驱动**:`qpnp-fg-gen3.c`,位于`Android\kernel\msm-4.4\drivers\power\supply\qcom\`目录下,负责监测电池容量。
### Framework层
- 主要代码文件:`PowerManagerService.java` 或其他与电源管理相关的类和服务,位于`/system/framework`目录下。
## 调试步骤
熟悉了系统架构后,我们来看一下调试充电系统的步骤。
### 定位问题
- 使用ADB命令`adb shell dmesg`来捕获内核日志,查看是否有异常信息。
- 通过`sysfs`接口如`/sys/class/power_supply/battery`查看电池状态。
- 使用ADB命令`adb shell dumpsys battery`来获取电池信息。
### 修改代码
- 根据问题编辑`qpnp-smb2.c`或`qpnp-fg-gen3.c`中的相关代码。
- 可以通过设置`__debug_mask`参数为`0xFF`来开启所有调试信息,便于查找问题。
- 编辑设备树文件`msm-pm660.dtsi`来更改充电参数。
### 重新编译内核
- 使用`make –jn bootimage`命令来编译内核,其中“n”代表CPU线程数。
- 编译完成后,会生成一个新的内核镜像。
### 刷新内核
- 使用`fastboot`命令将新的内核镜像刷入设备。
- 命令示例:`fastboot flash boot android/out/target/product/sdm660/boot.img`。
### 测试修改
- 使用ADB命令或实际测试设备来验证修改的效果。
- 确认充电是否正常,电池状态是否正确更新。
## 思维导图
以下是充电系统各层次的关系图示:
```
硬件层
├── 电池
├── PMIC (PM660)
└── USB接口 (Type-C)
├── SDP
├── CDP
├── DCP
└── HVDCP
固件层
└── PMIC固件
内核层
├── 驱动文件
│ ├── qpnp-smb2.c
│ └── smb-lib.c
├── 设备树文件
│ ├── fg-gen3-batterydata-xxx.dtsi
│ └── msm-pm660.dtsi
└── 电量计驱动
└── qpnp-fg-gen3.c
Framework层
├── 用户界面
└── 电源服务
└── PowerManagerService.java
应用程序层
└── 电源管理应用
```
## 结论
本文详细介绍了基于高通平台的Android 10设备上的充电系统,帮助读者理解每个层次的作用和相互之间的联系。通过逐步引导读者从硬件到内核再到Framework的理解,使得即使是技术小白也能快速掌握充电原理和调试方法。希望这能成为一个良好的起点,引导你更深入地探索这一领域。