搜索

420

主题

496

帖子

1836

积分

金牌会员

Rank: 6Rank: 6

积分
1836
发表于 2021-1-27 15:19:38 110 浏览 1 回复

MTK GM3.0 关于电池电量显示流程

本帖最后由 tangh 于 2021-1-27 15:20 编辑

一、客户自查
电量相关问题,请先排查如下几点:
1、check hardware schematic
硬件设计对电量计算有极大影响,所以务必确认如下两项:
(1)ISENSE/BATSNS硬件连接是否和对应平台参考设计相同

使用的charger IC support power path则使用ISENSE测量VBAT,反之使用BATSNS;
注意:BATSNS/VSYSSNS不可短接

(2)CP_S/CP_N 差分包地走线
       PCB走线注意细则参考文档:《Fuel Gauge Application Notes_Vx.pptx》

2、check ZCV table
(1)是否有按规范打表
(2)是否有按规范合入dtsi
    操作指导参考文档: 《GM3.0 Customized Setting Flow_Vx.pptx》

3、check car_tune_value
确认是否有按规范校准car_tune_value
car_tune_value校准方法参考文档: 《GM3.0 Customized Setting Flow_Vx.pptx》

4、check customization
确认是否做过客制化修改,如有请提供修改内容;
mtk_battery_property.h
mtk_battery_table.h
若支持5个温度,则提供:
xxx_battery_prop_ext.dtsi
xxx_battery_table_ext.dtsi
若支持4个温度则提供:
xxx_battery_prop.dtsi
xxx_battery_table.dtsi


注:如果贵司做过客制化,从头文件解析zcv,请说明;
客制化参数含义参考文档: 《 GM3.0_Customization parameter design guide_Vx.pptx 》

二、提CR注意事项

    如若上述自查均PASS,电量计算仍存在问题,劳烦开启daemon log,提供问题复现步骤和log:
1、 fuelgauge daemon log开启方法:
(1)setprop(注意需要root权限)
adb shell setprop persist.mediatek.fg.log.enable 1

(2)改code,重编bootimage:
/kernel/drivers/power/mediatek/battery/mtk_battery.c文件中:
//static signed int gFG_daemon_log_level = BM_DAEMON_DEFAULT_LOG_LEVEL;
修改为:
static signed int gFG_daemon_log_level = 8;

static int Enable_BATDRV_LOG = 3;
修改为:
static int Enable_BATDRV_LOG = 8;

(3) adb 命令写节点,但重启会消失(注意需要root权限):
adb shell echo 8 > /sys/devices/platform/battery/FG_daemon_log_level

2、开启mtklogger,复现log;
3、将具体复现操作步骤、复现log附到CR里面;


三、学习文档
     针对电量计初学者,务必先到敝司DCC下载相关文档,了解电量计的测试调试方法、参数意义;
必读文档列举如下:
Fuel Gauge Application Notes_Vx.pptx
Gauge Master 3 0 Introduce_Vx.pptx;   
GM3.0 Customized Setting Flow_Vx.pptx;
GM3.0_Customization parameter design guide_Vx.pptx;

四、更换Charger IC注意事项
      若贵司使用友商提供的charger,则porting时需要注意如下修改点:
      1、使用友商Charger IC + 敝司fuelgauge 3.0方案:
         ① lk中务必porting charger ic driver,确保可以正常停充、disable power_path;
             停充和disable power_path 的位置:

        若定义MTK_CHARGER_NEW_ARCH(自o1.mp1引入):
        /vendor/mediatek/proprietary/bootable/bootloader/lk/platform/common/power/mtk_battery.c文件中check_sw_ocv();
        未定义MTK_CHARGER_NEW_ARCH:
        /vendor/mediatek/proprietary/bootable/bootloader/lk/platform/mt6771/mt_battery.c文件中 mt65xx_bat_init();         

         ②kernel中charger IC driver porting
            确保driver API符合/kernel-4.4/drivers/misc/mediatek/include/mt-plat/charger_class.h文件中struct charger_ops规范;
            需要注意的是,若对应charger IC支持HWOCV测量功能,请添加如下callback:
            int (*get_zcv)(struct charger_device *, u32 *uV);
   
     2. 使用友商Charger IC + 外挂gauge,则disable gm3.0对应修改:
(1) kernel部分
       ① 定义宏:CONFIG_MTK_DISABLE_GAUGE= yes;
        
       ② Android O版本还需在battery_probe()中作如下修改,disable recovery mode调用:
    /******   
    if (is_recovery_mode())
             battery_recovery_init();
  */

(2)system部分:
  disable所有fuelgauge service启动code;
  ①init.mt67xx.rc
      on charger
      #start fuelgauged

      service fuelgauged /vendor/bin/fuelgauged
      # class main
      user root
      group root
      disabled

      #注意,Android O无此项
service fuelgauged_nvram /vendor/bin/fuelgauged_nvram
# class main
user root
group root
oneshot
disabled

②meta_init.rc、recovery/etc/init.rc等做同步修改


(3)change fgadc reset source     
  不使用GM3.0的话,需要将寄存器 PMIC_RG_FGADC_RST_SEL_ADDR设为0,code修改位置:
①自alps-mp-o1.mp1 branch MT6771平台后引入MTK_CHARGER_NEW_ARCH,则在lk中作如下修改:
    **/lk/platform/common/power/mt_battery.c文件中,修改使is_disable_bat()函数返回true

②之前平台或未定义MTK_CHARGER_NEW_ARCH,则直接在Preloader中修改:
   /vendor/mediatek/proprietary/bootable/bootloader/preloader/platform/mt67xx/src/drivers/battery.c :
   void fuel_gauge_init(void)
  {
    .......
    //only for GM 3.0 : set FGADC reset source selection = 1 ,GM3.0 reset
    ret = pmic_config_interface((U32)(PMIC_RG_FGADC_RST_SRC_SEL_ADDR), (U32)(0),
    (U32)(PMIC_RG_FGADC_RST_SRC_SEL_MASK),
    (U32)(PMIC_RG_FGADC_RST_SRC_SEL_SHIFT));
    .....
}
  


五、常见问题
1、电量显示-1
表示fuelgauge deamon无法正常运行,导致的原因多为fuelgauge deamon和kernel不匹配;
劳烦先自行排查libfgauge_gm30.so和kernel是否属同一基线版本;
也可提供 mtk_battery_internal.h / mtk_battery.h 以及客戶libfgauge_gm30.so,由敝司帮忙排查;

2、电量固定为25%、50%、75%
需确认:
是否为factory mode 或 meta mode?
是否disable gauge?
是否使用假电池?
是否EVB?
是否客制化电量上报?

3、1%持续时间长
(1)重载放电
[ Method]减小pseudo1参数值Q_MAX_SYS_VOLTAGE; [Risk]更重载情况下会有drop现象;

(2)轻载放电
[Method1]减小gauge0% 参数值PMIC_MIN_VOL/POWERON_SYSTEM_IBOOT; [Risk]轻载放至低电量切换到重载会drop;
[Method2]调高0%关机电压SHUTDOWN_GAUGE0_VOLTAGE; [Risk]电量无法耗尽,轻载关机电池电压高;
[Method3]降低UI 1%持续时间SHUTDOWN_1_TIME; [Risk]电量无法耗尽,轻载关机电池电压高;
[Method4]降低 DIFFERENCE_FGC_FGV_TH; [Risk]曲线不线性;

(3)重载转轻载
属正常现象,电池本身特性所致;

4、100%持续时间长
(1)放电场景
[Method1]增大pseudo100; [Risk]无,呈现充电本身特性;
[Method2]disable PSEUDO100_EN_DIS; [Risk]无,使充电藏帕放电不藏帕
[Method3]减小KEEP_100值; [Risk]无;

(2)充电场景
[Method]增大pseudo100; [Risk]无,呈现充电本身特性;

5、放电Drop
表现:VBAT达到3.4V关机时,uisoc还比较高;
(1)重载场景
[Method]增大pseudo1;
(2)轻载场景
[Method]增大gauge 0% ;
(3)轻载至低电量切换至重载场景
[Method]正常现象,电池本身特性导致;

6、放电关机电压未抵到3.4V
表现:UI已经到0%关机,但电池电压仍高于3.4V;
(1)中重载场景
[Method1]降低gauge 0%; [Risk]轻载至低电量切换到重载会有drop;低电量没插充电器开不了机;
[Method2]降低SHUTDOWN_GAUGE0_VOLTAGE; [Risk]可能导致电池过放;
(2)轻载场景
[Method1]增加UI 1% timeout; [Risk]UI 1%显示时间较长;
[Method2]降低SHUTDOWN_GAUGE0_VOLTAGE; [Risk]可能导致电池过放;
(3)轻载至低电量切换至重载场景
[Method]正常现象,电池本身特性导致;

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

420

主题

496

帖子

1836

积分

金牌会员

Rank: 6Rank: 6

积分
1836
 楼主| 发表于 2021-1-28 12:23:02
GM3.0学习文档提交


Fuel Gauge Application Notes_V1.5
Gauge_Master_3_0_Introduce_V1.3
GM2.5_and_3.0_Customized_Setting_Flow_V1.4
GM3.0_Customization parameter design guide_V1.1


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

返回列表
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


登录或注册
快速回复 返回顶部 返回列表