通过 DEVICE_INITCALL(“dev-gauge”, fuelgauge_dev_init); 注册驱动,自动在main初始化中运行。
优点:耦合少,可移植性强,适用大团队模块化开发
缺点:抽象度高,小团队开发时间耗时久
battery管理我觉得可以分开为两个部分,一个是电池监控(fuelgauge),另一个是充放电管理(charger),所以我们在内核中也是把它分成了两个驱动来管理。
电池监控(fuelgauge)驱动主要是负责向上层android系统提供当前电池的电量以及健康状态信息等等,另外除了这个以外,它也向charger驱动提供电池的相关信息;
充放电管理(charger)驱动主要负责电源线的插拔检测,以及充放电的过程管理。对于battery管理,硬件上有电量计IC和充放电IC。
对比SW_FG 和HW_FG在硬件及软件上的部分差异,分析电量误差形成的一些原因和已经采取的消除误差的措施。这个算法的思路是这样的:
最终通过开路电压oam_v_ocv_1查ZCV表得到当前的电量值 ->
开路电压需要通过闭路电压v_bat 和 闭路电流oam_i_2 去回溯电池内阻逐次逼近 –>
oam_i_2 通过 另一种方式 电量积分更新的电压oam_v_ocv_2.<