与电池相关的一些名词解释
1、FCC Full-Charge Capacity 满电荷电量
2、UC Remaining Capacity RC 剩余电量
3、CC Coulumb Counter 电量计
4、UUC Unsable Capacity 不可用电量
5、PC Percentage Charge 剩余电荷占FCC百分比
6、SoC State of Charge 电量百分比
7、OCV Open Circuit Voltage 开路电压,电池在开路状态下的端电压
8、RUC Remaining Usable Capacity RUC=RC-CC-UUC 剩余可用电量
电池节点(dts)信息:
qcom,battery-type:指明电池类型的字符串;如 WeiCe_1900mah
qcom,batt-id-kohm:电池ID电阻:当一些电池模型的ID电阻在一定范围内浮动时,电池ID电阻可以作为单位模型数组以支持多ID
qcom,chg-term-ua = <57000>;电池的结束充电电流,这里时57000,即为57mA,就是电池满电时的电流
qcom,default-rbatt-mohm = <166>;标称电池的电阻值;正常温度下的电池电阻值(取中值)
qcom,fcc-mah = <1900>;电池完全充满的电池容量1900mAH,能放电多少的电流
qcom,max-voltage-uv = <4200000>;电池最大的额定电压值
qcom,rbatt-capacitive-mohm = <50>;电池的电容电阻。
qcom,v-cutoff-uv = <3400000>;电池的截至电压,当电池电压低于此值时设备会自动关机
qcom,fcc-temp-lut{};一维查找表节点会将温度编码成fcc查找,该方法的单位映射成毫安时
qcom,pc-temp-ocv-lut{};一个包含温度和百分比的开路电压二位查找表,查找表的单位时百分比和电压的关系
qcom,rbatt-sf-lut{};一个二维查找表对应于电池充电的内部温度和内部电阻
电量检测的drivers层函数
Kernel层
Kernel/drivers/power/power_supply_core.c
Healthd守护进程
本层在Android中属于Native层,healthd中运行一个系统服务batteryproperties,负责监听Kernel中上报的uevent,对电池电量进行实时监控。
主要相关代码路径:
\system\core\healthd\healthd.cpp
\system\core\healthd\BatteryMonitor.cpp
\system\core\healthd\BatteryPropertiesRegistrar.cpp
\system\core\healthd\BatteryMonitor.cpp
BatteryService系统服务
本层提供了C++/Java两套接口来访问batteryproperties系统服务。
本层的系统服务battery使用Java代码写成,运行在fwk的中SystemServer进程。
该系统服务的主要作用是:监听batteryproperties服务中的电池信息变化消息,并将该消息以系统广播的形式转发至Android系统中各处。
主要相关代码路径:
\frameworks\native\services\batteryservice\IBatteryPropertiesRegistrar.cpp
\frameworks\native\services\batteryservice\IBatteryPropertiesListener.cpp
\frameworks\native\services\batteryservice\BatteryProperties.cpp
\frameworks\base\core\java\android\os\IBatteryPropertiesRegistrar.aidl
\frameworks\base\core\java\android\os\IBatteryPropertiesListener.aidl
\frameworks\base\core\java\android\os\BatteryProperties.java
\frameworks\base\services\core\java\com\android\server\BatteryService.java
SystemUI 应用
该部分属于电量上报的最后的环节。其主要工作是:监听系统广播Intent.ACTION_BATTERY_CHANGED,并对UI作出相应更新。
主要相关代码路径:
\frameworks\base\packages\SystemUI\src\com\android\systemui\power\PowerUI.java
https://www.cnblogs.com/reality-soul/p/4794896.html