百度经验
页面数据加载中...
Android 电池管理的函数调用流程介绍,BatteryService.java(system)------>>com_android_server_BatteryService.cpp(JNI)------->>Linux Battery Driver(linux kernel)------>>Low lay
其中system中的 BatteryService.java文件,电池服务管理相关得到详细调用关系如下所示流程图
电池的升级功能接口,是通过对应的宏声明文件路径作为唯一的ID
作为一名底层驱动工程师,最关心的是如何根据给出的电池曲线图表,去修改对应的底层驱动文件,来实现真正驱动控制管理电池。底层电池驱动架构图如下所示
linux驱动中对应路径 alps/kernel-3.10/drivers/power/mediatek 下的文件如下; alps/kernel-3.10/drivers/misc/mediatek/power/mt6735 下的文件如下
pulse changer state machine 状态图如下图所示
MTK充放电调试需要注意的几点:
1、配置电池温度检测相关参数
alps/kernel-3.10/drivers/misc/mediatek/mach/mt6735/lentk6735m_65c_l1/power/cust_battery_meter_table.h
热敏电阻有两种风格 10K 和 47K
2、电池配置结构了,这些参数是根据电池供应商提供的曲线参数表来配置的,通常是配置常温 25c下的相关参数,具体的参数存放在一下结构数组中,同样位于cust_battery_meter_table.h文件中
alps/kernel-3.10/drivers/misc/mediatek/mach/mt6735/lentk6735m_65c_l1/power/cust_battery_meter_table.h
// T2 25C
BATTERY_PROFILE_STRUC battery_profile_t2[] =
{
}
结构数组中
电池充放电参数的更新,对应的电池充放电需要更新的参数由电池供应商提供,需要修改的文件是
alps/kernel-3.10/drivers/misc/mediatek/mach/mt6735/lentk6735m_65c_l1/power/cust_battery_meter.h