背景

在新基线上移植有关的代码时,在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. WebGL实现简易的局部“马赛克”

    前言 接触过Canvas的小伙伴应该都知道,在Canvas2D中我们要加载一个图片很简单,通过调用drawImage API就能将图像绘制到画布上,当然在WebGL中我们也可以绘制图像,在绘制时我们需 ...

  2. SAP UI5 官方教程学习记录

    最近有闲跟着官方的Get Started教程学习了UI5,记录一下自己学习中遇到的几个问题. 本文链接:https://www.cnblogs.com/hhelibeb/p/17835722.html ...

  3. 记录Notion API Authorization中的一个坑

    正文 Notion官方文档的Authorization部分提到: In your integration code, include the token in the Authorization he ...

  4. Delaunay三角剖分实现

    参考文章:https://www.cnblogs.com/zhiyishou/p/4430017.html 本文使用逐点插入法进行剖分,并使用Unity3D实现. 通过阅读文章<Triangul ...

  5. 大数据之Hadoop集群中MapReduce的Join操作

    需求分析 如下两张输入表格 order表 id pid amount 1001 01 1 1002 02 2 1003 03 3 1004 01 4 1005 02 5 1006 03 6 pd表 p ...

  6. Swoole 源码分析之 WebSocket 模块

    首发原文链接:Swoole 源码分析之 WebSocket 模块 大家好,我是码农先森. Swoole 源码分析之 WebSocket 模块 引言 WebSocket 是一种在单个 TCP 连接上进行 ...

  7. Anaconda 虚拟环境

    1. 查看虚拟环境 conda env list 2. 创建虚拟环境 conda create -n env_name python=3.8 --- env_name: 虚拟环境名 --- pytho ...

  8. 从零开始写 Docker(十六)---容器网络实现(上):为容器插上”网线”

    本文为从零开始写 Docker 系列第十六篇,利用 linux 下的 Veth.Bridge.iptables 等等相关技术,构建容器网络模型,为容器插上"网线". 完整代码见:h ...

  9. 15种pod的状态

    15种pod的状态 调度失败 常见错误状态(Unschedulable) pod被创建后进入调度阶段,k8s调度器依据pod声明的资源请求量和调度规则,为pod挑选一个适合运行的节点.当集群节点不满足 ...

  10. Nodejs fs模块 全局变量

    fs模块提供了用于与文件进行交互相关方法 const fs = require('fs') # 写入数据 fs.writeFile(文件,数据,err=>{}) # 读取文件中数据 fs.rea ...