Android 分析底电流高即功耗大的几个方面
打开飞行模式,避免蓝牙、wifi、NFC、网络、FM等的一般影响。
各个外设模块休眠漏电或未休眠,----比如屏或TP,灯节点,nfc,指纹,人脸
GPIO/subsys/pll/clock口漏电, -----关闭不用的模块和端口
wakelock导致无法休眠, ----唤醒和释放
modem无法休眠 ---需要射频分析
CPU高负载、---降低帧率和分辨率,开启硬件加速
高亮度显示器、----降低亮度和刷新率
频繁GPS定位、----增加间隔和降低频率,定位模块调用存在问题
后台运行程序、 -----关闭或杀掉后台运行的进程
高频率网络通信 ---减少数据传输和网络唤醒,减少频繁访问
音量音效 ---降低音量,降级音效算法,精细化音频参数
Sersor类型使用 -----SENSOR_DELAY_FASTEST替换成SENSOR_DELAY_NORMAL
Sensor模块的排查 ----光感,距感,磁感,重感,霍尔,陀螺仪
关闭不需要加载的宏控 -----针对 defconfig.mk
和 lk.mk
宏控实现功耗优化
充电与电源管理模块优化
关闭冗余充电协议
在lk.mk
中禁用非必要快充协议(如 PE+、QC4.0),减少充电电路动态功耗:
MTK_PUMP_EXPRESS_PLUS_SUPPORT := no MTK_DUAL_CHARGER_SUPPORT := no
同步在
defconfig
中注释相关宏:
# CONFIG_MTK_PUMP_EXPRESS_PLUS_SUPPORT is not set
# CONFIG_MT6370_PMU_CHARGER is not set
此操作可降低充电管理芯片的静态功耗。
简化 PMIC 功能
禁用未使用的电源管理单元(如 LED 驱动、LDO 稳压器):
MTK_MT6370_PMU_BLED_SUPPORT := no MTK_MT6370_PMU_RGBLED_SUPPORT := no
对应
defconfig
需关闭CONFIG_MT6370_PMU_BLED
等宏。
2. 外设与总线功耗控制
动态关闭闲置外设
在defconfig
中禁用非关键外设驱动(如未使用的 SPI/I2C 控制器):
# CONFIG_I2C_DEBUG_CORE is not set
# CONFIG_SPI_DEBUG is not set
配合
lk.mk
设置外设初始化策略为按需加载:
MTK_LCM_PHYSICAL_ROTATION := 0 # 关闭屏幕旋转传感器
优化总线电源状态
启用 PCIe/USB 的 ASPM 低功耗模式(需硬件支持):
CONFIG_PCIEASPM_POWERSAVE=y
并在
lk.mk
中强制生效:
MTK_USB_AUTO_SUSPEND := 1
3. 内核调试与日志精简
移除调试工具
删除defconfig
中的调试宏,降低内核日志开销:
# CONFIG_DEBUG_KERNEL is not set
# CONFIG_FTRACE is not set
同步清理
lk.mk
中的调试模块:
MTK_DEBUG_LATCH_SUPPORT := no
关闭性能监控
禁用非必要的性能计数器(如 CPU 占用统计):
# CONFIG_PERF_EVENTS is not set
可减少约 5-10% 的调度器开销。
4. 核心调度策略调整
启用低功耗调度器
在defconfig
中配置 CPU 调频策略:
CONFIG_CPU_FREQ_GOV_POWERSAVE=y
CONFIG_CPU_IDLE_GOV_MENU=y
并通过
lk.mk
设置默认 governor:
MTK_CPU_FREQ_GOVERNOR := powersave
限制 CPU 最大频率
在lk.mk
中定义频率上限(单位 kHz):
MTK_CPU_MAX_FREQ := 1800000
避免高性能模式下的功耗峰值。