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. uva oj 567 - Risk(Floyd算法)
  2. 使用mysqlimport导入包含主键自增长属性的表
  3. Windows和Linux内存检测工具:Valgrind,Visual Leak Detector,CppCheck, Cpplint
  4. 干净虚拟机(centos 6.4)上从头到尾安装并调试Mdrill(二)
  5. pythonpptx模块详解_详解 Python 操作 PPT 的各种骚操作!
  6. yxr:Makefile 简单样本
  7. 【树莓派】从零搭建DAS服务器,挂载扩容硬盘,实现文件存储与自动下载
  8. JavaSrcipt学习(学习打卡Day4)
  9. Excel如何筛选数据重复项?
  10. java 写 xml 文件 工具类_XML读写工具类
  11. dva 底层框架构建
  12. 福晟集团用创新理念引领发展新趋势
  13. 关于示波器是否必须要接地线的疑问
  14. 在Unity实现Canny边缘检测
  15. GO语言-自定义error
  16. 4号线地铁站点列表_北京地铁4号线线路图 4号线地铁站点列表
  17. AAA认证是什么?一文带你科普AAA认证及协议
  18. 苹果 macOS Big Sur 11.5 RC 2(20G71)候选版本发布
  19. 7.1 Java(农夫果园【2】:一个农场,专门种植销售各类水果,在这个系统中需要描述下列水果葡萄、草莓、苹果)
  20. Prometheus Operator 通过additional 添加target

热门文章

  1. Java基础进阶网络编程概述
  2. 现代数值分析 matlab,现代数值分析(MATLAB版)
  3. Win95双启动的恢复
  4. FindBugs级别
  5. cube station下载_cubestation魔方软件下载-cubestation安卓版v1.4.4_5577安卓网
  6. tesseract4.1遇到奇怪的0xc000001d应用程序无法运行
  7. 只需九步让你新站成为高权重网站
  8. SpringBoot实现PPT格式文件上传并在线预览
  9. 电脑发现感染麻辣香锅恶意软件咋处理?
  10. antdpro菜单自定义图标