1. *#*#4636#*#* 可查看 手机信息,电池信息
2. https://wiki.sonyericsson.net/androiki/Fuel_Gauge_FAQ 如何抓fuel gauge 的log
    a. How to save kernel logs to phone memory
        $ adb shell
mkdir /data/debugfs
mount -t debugfs none /data/debugfs
echo -n 'file ab8500_charger.c +p' > /data/debugfs/dynamic_debug/control
echo -n 'file ab8500_chargalg.c +p' > /data/debugfs/dynamic_debug/control
echo -n 'file ab8500_fg.c +p' > /data/debugfs/dynamic_debug/control
echo -n 'file ab8500_btemp.c +p' > /data/debugfs/dynamic_debug/control
exit
adb remount
adb shell chmod 6755 /system/bin/klogger
adb shell setprop persist.kernel.log uart
adb shell klogger &
    b. And to run klogger on every boot up, you should run this
adb shell
mkdir /data/data/com.sonyericsson.android.logalong
mkdir /data/data/com.sonyericsson.android.logalong/files
echo -e "kernel;" >> /data/data/com.sonyericsson.android.logalong/files/logalongBootCompleted
    c. Kernel logs will be saved either at
        /data/data/kernel0.txt
        /data/data/kernel1.txt
        or at
        /sdcard/kernel0.txt
        /sdcard/kernel1.txt
用以上方法有时候抓不到代码中,dev_dbg的log, 另外我们可以在你需要输出dev_dbg的*.c文件中定义#define DEBUG即可
3. Riogrande 平台上 charge only(电池电量不够,不能开机,只能进入开机充电画面)的程序在vendor/semc/hardware/power/chargemon 下面
3.1 在手机上init.st-ericsson.rc中有
    on early-boot
        # Start the offline charging (This blocks booting further in some cases)
        exec /system/bin/chargemon
3.2 分析main@vendor/semc/hardware/power/chargemon/main.c

4. 关于充电的驱动代码位于/kernel/drivers/power/ab8500_btemp.c, ab8500_chargalg.c(charge algorithm),ab8500_charger.c(charge driver),  ab8500_fg.c, power_supply_core.c, power_supply_sysfs.c, power_supply_leds.c, power_supply.c ;
5. DMS01203256
6. 手机中/sys/class/power_supply/包含相关的 充电信息
7. ab8500_charger_set_vbus_in_curr@kernel/drivers/power/ab8500_charger.c ,该函数会设置充电电流限制
8. kernel/arch/arm/mach-ux500/charger-lotus.c中有充电电流限制的定义
    struct device_data device_data = {
        .charge_full_design = 1500, /* C */
        .normal_cur_lvl = 1050, /* 0.7C */
    };
9. 在kernel/drivers/power/ab8500_charger.c中,ab8500_charger_irq结构设置(中断处理函数)-->ab8500_charger_usb_link_status_work-->ab8500_charger_detect_chargers(区分charger类型:USB_PW_CONN/USB charger;AC_PW_CONN/AC charger);
    a. 如果是USB charger则 ab8500_charger_read_usb_type->ab8500_charger_max_usb_curr->ab8500_charger_set_vbus_in_curr[usb charger]和ab8500_charger_set_output_curr[wall charger]-->ab8500_charger_set_current,该函数根据识别的USB type规定充电的最大电流;
    b. 如果是AC charger则ab8500_charger_psy_changed ????-->ab8500_charger_usb_en(当用wall charger连上手机时)
10. Read USB charge current now: adb shell cat /sys/class/power_supply/ab8500_usb/current_now; //估计应该是charger的最大限流
    Read battery current now: adb shell cat /sys/class/power_supply/ab8500_fg/current_now;//是从电池流入或者流出的电流;如果正在充电,则是充电器的电流减去系统消耗的电流(可正可负,比如如果系统耗电> 500mA,而用PC USB充电的限流又是500mA,则这时候电池也会提供部分电流给系统用);如果没有充电,则是电池提供给系统的电流(为负)
11. adb8500_charger_probe@ad8500_charger.c中有当手机启动就连着usb cable的处理,通过charger_status = ab8500_charger_detect_chargers(di, true);识别连着的charger类型
12. 分析几种USB充电的类型
12.1 手机startup完后,用wall charger充电
   a. ab8500_charger_vbusdetr_handler中断处理函数检测到usb cable插入,VBUS rise信号会触发(log: VBUS rising detected)
   b. ab8500_charger_detect_usb_type_work-->ab8500_charger_detect_chargers, 有AB8500_CH_USBCH_STAT1_REG=3 (log: AB8500_CH_USBCH_STAT1_REG 3)
   c. ab8500_charger_usb_notifier_call(log: not a standard host, returning),谁触发的?
   d. ab8500_charger_usblinkstatus_handler(log: USB link status changed)->ab8500_charger_usb_link_status_work->ab8500_charger_detect_chargers->ab8500_charger_read_usb_type->ab8500_charger_max_usb_curr[get usb type = USB_STAT_DEDICATED_CHG](log: USB Type - 0x07 MaxCurr: 1500)->启动ab8500_charger_usb_link_attach_work
   e. ab8500_charger_usb_link_attach_work->ab8500_charger_set_usb_connected(log: connected 1)->???
   f. ab8500_charger_usb_en(log: Enable USB: 4000mV 400mA)->ab8500_charger_set_vbus_in_curr(log: VBUS input current limit set to 1500 mA
)->ab8500_charger_set_current(log: Auto VBUS curr is 50 mA 和 curr change_2 to: 10 for 0xc2 ...逐步100mA调整,0x0BC2寄存器是UsbChCurrLevel,是充电控制器的输入,可以设置充电器的输入电流)
   g. 接上,ab8500_charger_set_output_curr[设置充电器输出电流,寄存器0x0B42 ChOutCurrLevel],另外ab8500_charger_usb_en在此期间还会被触发,谁干的呢?
   h. 触发ab8500_charger_vbuschdropend_handler(谁触发?log: VBUS charger drop ended)->ab8500_charger_vbus_drop_end_work->ab8500_charger_set_vbus_in_curr->ab8500_charger_set_current 会调整充电电流,ab8500的charger有自己的充电算法控制充电电流,我们可以通过读取0xBC2得到当前的充电电流(有log输出VBUS input current limit), 再读取0xB03获取可自动调整的输入充电电流(有log输出setAuto VBUS curr),为防止电压下降;比较两者0xBC2[实际的充电电流]和0xB03寄存器是UsbChStatus2用于读取当前充电器的输入电流[ab8500的HW 计算出来的最优输入电流,防止压降] 然后逐步调整(100mA)
   i. 充电器的USB cable被拔掉(VBUS falling),触发ab8500_charger_vbusdetf_handler->ab8500_charger_detect_usb_type_work
   j. 主要的几个控制寄存器,
    UsbChStatus2(0xB03): Result of automatic input current limitation (to avoid to Vbus voltage to drop). Input current limitation can be from 90mA to 1.3A by about 100mA steps
    UsbChCurrLevel(0x0BC2): USB charger current control
    ChOutCurrLevel(0xB42):Defined charger output current when Btemp above Medium threshold and below High threshold. Setting from 100mA to 1.5A by 100mA steps

12.2 手机startup完后,用USB charger充电

ChargerFuelGauge (Riogande platform)相关推荐

  1. AIOT时代来临,物联网平台(IoT Platform)真有那么重要吗?

    AIOT is comming 2019年悄悄的过去,曾今在作文中展望的2020马上就要到了,岁月如梭,每天度过的生活好像都是一样的,殊不知,5G已在悄然布局,人工智能.云计算.大数据.物联网,这些已 ...

  2. 用户画像-标签体系(dwt层)

    1 前言 最近在学习用户画像,翻看了七十多份资料,简单过了一遍赵宏田老师的书,最近又看了许多微信公众号里的文章. 整体感受就是,资料太杂.内容太乱.重复的太多.相互间也会有些冲突.但大致可以归为两类: ...

  3. BI数据分析专业词汇整理(1/9)

    *ROI测算: 实验组假设不做活动日活跃天 = 对照组日活跃天 * (实验组流量 / 对照组流量) 实验组收益 = 实验组日活跃天 - 实验组假设不做活动日活跃天 *A\B测试实验结束后需要: 1-反 ...

  4. 《中国联通5G行业专网白皮书》发布!(附下载)

    近日,中国联通发布<5G行业专网白皮书>.白皮书中指出,中国联通5G专网分为三种类型:5G虚拟专网.5G混合专网.5G独立专网. 5G专网类型 5G虚拟专网 指基于中国联通5G公众网络资源 ...

  5. TOGAF10®标准中文版(全文目录)

    The Open Group是一个通过技术标准实现业务目标的全球联盟.我们拥有超过870个成员组织,成员来自技术社区的各个部门,包括客户.系统和解决方案供应商.工具供应商.集成商和顾问,以及学者和研究 ...

  6. OM | 具有弹性需求的广义随机共乘(拼车)用户均衡问题

    编者按: 通过扩展确定性共乘用户均衡问题,提出了具有弹性需求的广义随机共乘用户均衡问题,用于具有共乘出行活动的城市交通网络分析. 1.引言​ 共乘(ridesharing), 即生活中的"拼 ...

  7. 车载软件背景(留坑)

    目前,车载软件已经成为汽车电子系统中不可或缺的一部分.随着汽车制造商不断增加车载软件的功能和性能,车载软件的市场规模也在不断扩大.据市场研究公司 Grand View Research 预测,到202 ...

  8. 【学习笔记】低代码平台(LCAP:Low-Code Application Platform)

    学习笔记:低代码平台(LCAP:Low-Code Application Platform) [概念] 开发者写很少的代码,通过低代码平台提供的界面.逻辑.对象.流程等可视化编排工具来完成大量的开发工 ...

  9. 基于低代码平台(Low Code Platform)开发中小企业信息化项目

    前言:中小企业信息化需求强烈,对于开发中小企业信息化项目的软件工作和程序员来说,如何根据中小企业的特点,快速理解其信息化项目的需求并及时交付项目,是一个值得关注和研讨的话题. 最近几年来,随着全球经济 ...

最新文章

  1. 人名翻译_考研英语翻译:句子中出现人名怎么办?
  2. 浅谈JavaScript中按键事件的e.keyCode || e.which || e.charCode
  3. 查询数据库游标使用情况以及sql
  4. Sublime Text 设置在标签页中打开文件
  5. 春眠不觉晓,读书醒醒脑|世界读书日送送送10本硬核书
  6. 传智播客 C/C++学习笔记 在向指针所指空间copy数值,要分配内存
  7. 记录gns3出现各种erro报错以及具体修复过程
  8. 电脑文件夹同步软件哪个比较好用?
  9. 如何在安装时备份sis文件
  10. Xshell vim使用右侧数字键盘时数字变成英文字母的解决办法
  11. 蒙泰RIP快捷键大全
  12. LwIP 协议栈移植教程
  13. Window-10 Hyper-V 安装 Windows 10
  14. 自己写的java excel导出工具类
  15. 对互联网的认识和看法,直接关系到产业互联网的路径发展
  16. 【Python】第二章 内置数据类型
  17. lycos搜索引擎_搜索元老Lycos计划在2013年推全新搜索引擎
  18. 应届生从头脑风暴到游戏策划案的个人思路(三)(初稿)
  19. ISO9001认证多少钱?
  20. 3D中的方位和角位移(2)

热门文章

  1. java sdk 安装_Java SDK下载安装环境配置+AndroidKiller配置教程
  2. 3A+ISP之AE篇
  3. 教你如何打韩文---韩语键盘及打字技巧
  4. python DbUtils 封装
  5. 坐标转换软件OpenCoord V1.1.1正式发布,欢迎下载使用
  6. 快速查询宅急送单号物流信息的方法
  7. 今夕何夕 HDU - 6112 ( 模拟 )
  8. linux 下 adb 安装apk
  9. 小程序tabBar底部如何实现?
  10. win10+cuda11.0+vs2019安装教程