背景

在新基线上移植有关的代码时,在log中发现有关的东西,请教了有关的同事以后,解决了这个问题。

[   12.775863] pmi632_charger: smblib_eval_chg_termination: Couldn't read SOC value, rc=-22
[ 12.795914] bcl_soc:bcl_read_soc battery percentage read error:-61
[ 12.825428] SMB5 status - usb:present=1 type=0 batt:present = 1 health = 1 charge = 1
[ 12.833844] QPNP SMB5 probed successfully
[ 12.840495] bcl_soc:bcl_read_soc battery percentage read error:-61
[ 12.882968] of_batterydata_get_best_profile: No battery data found
[ 12.889234] QG-K: qg_load_battery_profile: Failed to detect battery type rc:-22
[ 12.896565] QG-K: qg_setup_battery: Failed to load battery-profile rc=-22
[ 12.911117] QG-K: qpnp_qg_probe: QG initialized! battery_profile=Unknown Battery SOC=50 QG_subtype=3 QG_version=QG_PMIC5 QG_mode=QG_V_I
[ 12.928491] of_batterydata_get_best_profile: No battery data found

参考高通文档:

  • 80-NL239-4_F_PMIC_SW_Driver_Overview_MSM8916.pdf
  • android\kernel\Documentation\devicetree\bindings\batterydata\batterydata.txt

相关的名词

缩小 全称 意义
FCC Full-Charge Capacity 满电荷电量
UC Remaining Capacity RC 剩余电量
CC Coulumb Counter 电量计
UUC Unusable Capacity 不可用电量
PC Percentage Charge 剩余电荷占FCC百分比
SoC State of Charge 电量百分比
OCV Open Circuit Voltage 开路电压,电池在开路状态下的端电压称为开路电压
RUC Remaining Usable Capacity RUC=RC-CC-UUC,剩余可用电量

使用设备树

假设对应的电池数据为:batterydata-qrd-skua-4v35-2000mah.dtsi

&soc {
mtp_batterydata: qcom,battery-data {
qcom,batt-id-range-pct = <15>;
#include "batterydata-qrd-skua-4v35-2000mah.dtsi"
};
};

电池曲线设备树解析

特性

首先创建相应的dtsi文件,

qcom,battery-type // 指明电池类型的字符串;  如`qrd-skua-4v35-6500mAh`
qcom,batt-id-kohm // 电池ID电阻 // 当一些电池模型的ID电阻在一定范围内浮动时,电池ID电阻可以作为单电池模型数组以支持多ID;
qcom,chg-term-ua= <100000>; // // 电池的结束充电电流,这里为100mA;就是电池满电的时候的电流;
qcom,default-rbatt-mohm; // 标称电池电阻值;正常温度下的电池电阻值(取中值)
qcom,fcc-mah=<3200>;// 电池完全充满的电池容量3200mAh;能放电多少的电流
qcom,max-voltage-uv =<4200000>; // 电池最大的额定电压;
qcom,rbatt-capacitive-mohm=<50>;//电池的电容电阻; 跟着修改;
qcom,v-cutoff-uv = <3400000>; //电池的截止电压,当电池电压低于此值时设备会自动关机;
qcom,flat-ocv-threshold-uv = <3800000>;// 可以被认为处于平坦放电后的开始下降的阈值;在表格中查找那个电流下降的很快的那个值;

查找表

温度查找表:qcom,fcc-temp-lut:一维查找表节点会将温度编码成fcc查找。该方法的单位摄氏度映射成毫安时。

qcom,fcc-temp-lut {
qcom,lut-col-legend = <(-20) 0 25 40 60>;
qcom,lut-data = <2064 2067 2067 2066 2063>;
};

电池ACC查找表:qcom,ibat-acc-lut,一个二维查找表,将温度和蓄电池电流电池ACC(表观电荷的能力)。该查找表的单位应在摄氏度的温度,在毫安IBAT与ACC毫安时。

qcom,ibat-acc-lut {
qcom,lut-col-legend = <(-10) 0 25 50>;
qcom,lut-row-legend = <0 250 500 1000>;
qcom,lut-data = <2022 2046 2046>,
<1151 1962 2024>,
<680 1864 2008>,
<51 1548 1970>;
};

内部温度电阻:qcom,rbatt-sf-lut,一个二维查找表对应于电池充电的内部温度和内部电阻

qcom,rbatt-sf-lut  {
qcom,lut-col-legend = <(-10) 0 25 50>;
qcom,lut-row-legend = <100 95 90 85 80>,
<75 70 65 60 55>,
<50 45 40 35 30>,
<25 20 16 13 11>,
<10 9 8 7 6>,
<5 4 3 2 1>,
<0>;
qcom,lut-data = <1355 273 100 81 74>,
<1352 273 100 81 74>,
<1268 280 102 83 75>,
<1197 286 106 85 76>,
<1143 285 110 87 78>,
<1109 281 116 90 79>,
<1090 272 124 94 82>,
<1080 269 134 100 85>,
<1077 267 133 108 91>,
<1079 266 111 100 90>,
<1090 266 101 83 76>,
<1116 267 101 84 77>,
<1156 268 103 86 79>,
<1205 270 103 88 83>,
<1266 274 106 88 82>,
<1337 276 108 87 78>,
<1431 276 107 85 79>,
<1560 284 104 84 78>,
<1680 293 99 81 75>,
<2078 306 99 81 77>,
<2438 318 100 83 78>,
<2875 333 102 85 80>,
<3411 354 104 87 81>,
<4092 392 108 89 84>,
<5118 448 116 92 86>,
<6939 551 121 95 85>,
<10433 791 120 90 81>,
<17054 1280 121 93 84>,
<29375 2077 133 101 92>,
<52518 3457 173 135 133>,
<230352 176376 150360 117059 92159>;
};

温度和百分比查找表:qcom,pc-temp-ocv-lut ,一个包含温度和百分比的开路电压2维查找表,查找表的单位是百分比和电压的关系

qcom,pc-temp-ocv-lut {
qcom,lut-col-legend = <(-10) 0 25 50>;
qcom,lut-row-legend = <100 95 90 85 80>,
<75 70 65 60 55>,
<50 45 40 35 30>,
<25 20 16 13 11>,
<10 9 8 7 6>,
<5 4 3 2 1>,
<0>;
qcom,lut-data = <4328 4328 4322 4318 4310>, //100%电量
<4234 4252 4252 4250 4245>, //....
<4164 4191 4193 4191 4186>,
<4098 4132 4137 4135 4131>,
<4036 4074 4084 4082 4078>,
<3980 4019 4035 4033 4029>,
<3932 3967 3990 3989 3985>,
<3891 3923 3950 3950 3945>,
<3856 3886 3909 3912 3909>,
<3825 3855 3862 3868 3867>,
<3800 3828 3829 3829 3826>,
<3782 3805 3807 3806 3804>,
<3768 3786 3789 3789 3786>,
<3753 3770 3775 3774 3772>,
<3737 3757 3764 3761 3755>,
<3718 3740 3753 3746 3734>,
<3695 3719 3733 3725 3712>,
<3671 3702 3705 3698 3684>,
<3650 3691 3677 3668 3656>,
<3630 3681 3670 3662 3651>,
<3619 3676 3668 3660 3649>,
<3605 3670 3665 3658 3647>,
<3590 3664 3662 3655 3644>,
<3573 3655 3658 3651 3641>,
<3553 3643 3652 3647 3635>,
<3529 3622 3639 3632 3618>,
<3498 3590 3605 3595 3576>,
<3460 3543 3547 3535 3519>,
<3401 3476 3467 3455 3443>,
<3306 3368 3347 3336 3313>,
<3000 3000 3000 3000 3000>;
};

基本上,根据厂家电池曲线表格对应数据编写填写DTSI即可(或者直接让厂商提供)。

高通Android平台 电池 相关配置的更多相关文章

  1. 高通Android平台硬件调试之Camera篇

    之前一段时间有幸在高通android平台上调试2款camera sensor,一款是OV的5M YUV sensor,支持jpeg out,同时也支持AF,调试比较比较简单,因为别的项目已经在使用了, ...

  2. 高通 android平台LCD驱动分析

    目前手机芯片厂家提供的源码里包含整个LCD驱动框架,一般厂家会定义一个xxx_fb.c的源文件,注册一个平台设备和平台驱动,在驱动的probe函数中来调用register_framebuffer(), ...

  3. 高通Android display架构分析

    目录(?)[-] Kernel Space Display架构介绍 函数和数据结构介绍 函数和数据结构介绍 函数和数据结构介绍 数据流分析 初始化过程分析 User Space display接口 K ...

  4. 高通Android display分析【转】

    本文转载自:http://blog.csdn.net/zhangchiytu/article/details/6777039 高通7系列硬件架构分析 如上图,高通7系列 Display的硬件部分主要由 ...

  5. 高通android开发摘要

    一部分是开源的,可以从codeaurora.org上下载,还有一部分是高通产权的,需要从高通的网站上下载. 将高通产权的代码放到:vendor/qcom/proprietary 1. 设置bms一些参 ...

  6. Linux加载DTS设备节点的过程(以高通8974平台为例)

    DTS是Device Tree Source的缩写,用来描述设备的硬件细节.在过去的ARM Linux中,arch/arm/plat-xxx和arch/arm/mach-xxx中充斥着大量的垃圾代码, ...

  7. 关于 Android 平台开发相关的有哪些推荐书籍?

    转自:http://www.zhihu.com/question/19579609 作者:Shan Huang 链接:http://www.zhihu.com/question/19579609/an ...

  8. 高通Android camera运行流程【转】

    本文转载自:http://blog.csdn.net/unicornkylin/article/details/13293295 1.总体架构 Android Camera 框架从整体上看是一个 cl ...

  9. 高通8x12平台开机画面制作工具

    你可能在网上看到很到关于手动更换手机开机图片的文章,想想自己的开机画面是小两口,好基友的照片多么个性啊.但是你有没有发现,网上下载的什么"一键生成"之类的,在你的手机上不能用啊,( ...

  10. 高通android开发缩写

    1.TLMM MSM TLMM pinmux controller,Qualcomm MSM integrates a GPIO and Pin mux/config hardware, (TOP L ...

随机推荐

  1. 应急响应--windows入侵排查

  2. windows版 navicat_15.0.18 安装

    视频安装地址: https://www.ghpym.com/ghvideo07.html 一.下载安装包 下载地址(百度网盘): 链接:https://pan.baidu.com/s/1MIZfmS5 ...

  3. Linux — 进程管理

    进程创建 进程通过fork()创建的大致过程: #include <stdio.h> #include <stdlib.h> #include <sys/types.h& ...

  4. java8用Stream一行代码实现数据分组统计、排序、最大值、最小值、平均值、总数、合计

    getAverage(): 它返回所有接受值的平均值. getCount(): 它计算所有元素的总数. getMax(): 它返回最大值. getMin(): 它返回最小值. getSum(): 它返 ...

  5. 海康iSC综合安防平台-视频web插件调试

    综合安防管理平台 视频WEB插件 1.demo_window_simple_playback.html.demo_window_simple_preview.html为简化版demo,可在此基础上开发 ...

  6. CICD详解之gitlab,Jenkins

    持续集成概念 持续集成Continuous Integration 持续交付Continuous Delivery 持续部署Continuous Deployment 什么是持续集成: 持续集成是指开 ...

  7. sass @extend(继承)指令详解

    在设计网页的时候常常遇到这种情况:一个元素使用的样式与另一个元素完全相同,但又添加了额外的样式. 通常会在 HTML 中给元素定义两个 class,一个通用样式,一个特殊样式. 普通CSS的实现 接下 ...

  8. 1.Prism

    Region(区域)在程序编写的过程中我们肯定会遇到在一个区域上显示不同的内容,这些内容可能属于不同窗口,之前是弄个panel,需要显示哪个窗口就给让panel显示. 1.定义区域2.提供对区域的访问 ...

  9. MDK5常见问题

    (1)MDK5下载时未找到对应的芯片 解决方式:需要下载pack包. 官方链接:https://www.keil.com/dd2/pack/ 其它链接:https://blog.csdn.net/ni ...

  10. 鸿蒙HarmonyOS实战-ArkTS语言基础类库(容器类库)

    前言 容器类库是指一组用于存储和管理数据的数据结构和算法.它们提供了各种不同类型的容器,如数组.链表.树.图等,以及相关的操作和功能,如查找.插入.删除.排序等. 容器类库还可以包含其他数据结构和算法 ...