充电学习—1、psy框架梳理

news2024/10/5 12:59:28

一、linux充电驱动代码框架:

在这里插入图片描述
在这里插入图片描述

  • APP 层
    该部分属于电量上报的最后的环节。其主要工作是:监听系统广播并对 UI 作出相应更新,包括电池电量百分比,充电状态,低电提醒,led 指示灯,异常提醒等
  • FrameWork 层
    本层的 Battery 服务使用 Java 代码写成,运行在 FrameWork 中的SystemServer 进程。该系统服务的主要作用是:监听电池信息变化消息,并将该消息以系统广播的形式转发至 Android 系统中各处
  • Native 层
    Healthd 守护进程属于 Android Native 层的一个系统服务,负责接受 Kernel Driver 层上报的 uevent 事件,对电池信息和充电状态实时监控。
  • Kernel 层
    本层属于电池的驱动部分,由 Charger-manager 驱动、充电 IC 驱动、Fuel 驱动构成,负责与硬件交互,注册 Power supply 属性,并生成 uevent 上报 Native 层。包含充电状态管理、电量统计与更新
  • 关机充电
    关机充电单独启动的一个 linux 应用,通过系统调用直接读取 sysfs 来获取电池信息,init 进程会根据启动模式来启动 charge 服务,不会启动 android 相关进程

二、power supply:

psy是linux供电系统抽象出来的一个 子系统,它是一个中间层,在kernel中属于设备驱动的一部分,负责硬件信息检测更新和对用户空间汇报各类信息变化。对它汇报的信息,抽象出来一个枚举类型:power_supply_property;
驱动层有两大模块:

  • 1、电池模块:
  • 2、充放电模块:
    这两部分都处理硬件相关的逻辑,在硬件发声变化时,触发对应的中断处理,然后会更新对应的psy属性的节点值,然后hal层会去读取这些节点,并在用户层做相应的更新。

三、power supply核心数据结构体:

1、struct power_supply
2、struct power_supply_desc:该描述符定义了psy的属性,包括它的type,psy包含的属性列表和属性个数,等
3、power_supply_batteryinfo:管理静态电池参数的结构

四、相关结构函数:

1、power_supply_core.c文件主要负责设备状态变化逻辑
power_supply_sysfs.c文件主要负责文件节点相关信息变化逻辑
2、power_supply_changed:驱动中检测到硬件变化时调用,通过此函数会去调度起psy中的changed work;该队列会去发送notify和uevent进行changed上报
3、power_supply_register:注册一个psy设备,在probe时调用注册
4、power_supply_get_by_name:通过名字去获取一个psy指针
5、power_supply_put:释放获取到的psy指针,和power_supply_get_by_name成对使用

五、充电驱动描述:

kernel驱动可以有三部分:charger manager、 fuel gauge、 charger ic ; 此三部分是作为独立的设备驱动,都注册都power_supply下,每一个设备都是单独的psy设备,psy设备之间通过属性相互访问,
fgu和IC其实是服务于CM的,CM不需要知道硬件的任何细节,会获取相应功能的psy设备实例,然后通过psy设备的属性获得想要信息

  • 1、CM – charger manager : 充电控制策略层
    修复并更新电量百分比
    充电流程管理(charging notcharging full充电状态转换管理)
    安全管理(OVP health charging-timeout)
    温控管理(jeita功能 thermal限流)
    电池电量显示策略(充放电曲线)
    电池容量管理(容量自学习功能)

  • 2、FGU–Fuel Gauge:
    pmic部分主要负责:
    库仑计电量积分
    充电器类型获取
    电池在位检测
    开机电压管理
    内阻–温度 容量–温度 等补偿算法

  • 3、charger IC:
    打开关闭充电
    设置充电电流
    设置截止充电电流
    打开关闭OTG

六、获取电量的方式:

1、内核通过power_supply_register函数注册battery电池psy设备
2、healthd通过power_supply_property接口获取电量:
psy->desc->name = “battery”
psp = POWER_SUPPLY_PROP_CAPACITY
电池在位检测:
psp = POWER_SUPPLY_PROP_PRESENT

七、一个IC的驱动流程:

在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1831309.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

字符串专题详解

目录 字符串hash进阶 KMP算法 next数组 KMP算法 KMP算法优化 字符串hash进阶 字符串hash是指将一个字符串S映射为一个整数,使得该整数可以尽可能唯一地代表字符串S。那么在一定程度上,如果两个字符串转换成的整数相等,就可以认为这两个…

Typora—适用于 Mac 和 Win 系统的优秀 Markdown 文本编辑器

Typora 是一款适用于 Mac 和 Win 系统的优秀 Markdown 文本编辑器,它以其简洁易用的界面和强大的功能受到了众多用户的喜爱。 首先,Typora 的界面设计非常简洁直观,没有过多繁杂的菜单和按钮,让用户能够专注于写作本身。它采用实时…

【计算机毕业设计】235基于微信小程序点餐系统

🙊作者简介:拥有多年开发工作经验,分享技术代码帮助学生学习,独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。🌹赠送计算机毕业设计600个选题excel文件,帮助大学选题。赠送开题报告模板&#xff…

抖音用户新作品监控助手,第一时间获取博主作品信息。

声明: 本文以教学为基准、本文提供的可操作性不得用于任何商业用途和违法违规场景。本人对任何原因在使用本人中提供的代码和策略时可能对用户自己或他人造成的任何形式的损失和伤害不承担责任。包含关注,点赞等 抖音新作品监控助手系统是一个功能强大的…

华火新能源集成灶评测:创新与品质的融合

在厨房电器的不断推陈出新中,华火新能源集成灶以其独特的魅力进入了人们的视野。今天,我们就来深入评测这款备受关注的产品——华火新能源集成灶 一、华火新能源集成灶的创新与环保 首先,我们先来探讨新能源集成灶的整体表现。华火新能源集成…

Java健身私教服务师傅小程序APP源码(APP+小程序+公众号+H5)

强身健体,私人定制的健身之旅 🏋️ 引言:探索私人健身新纪元 在现代都市的快节奏生活中,越来越多的人开始注重身体健康和健身塑形。然而,传统的健身房模式可能无法满足每个人的个性化需求。这时,一款名为…

如何利用V-Ray优化渲染效果——渲染100邀请码【7788】

3dmax效果图云渲染--渲染100 以3ds Max2025、VR6.2、CR11.2等最新版本为基础,兼容fp、acescg等常用插件,同时UT滤镜等参数也得到了同步支持。 注册填邀清码[7788]领30元礼包和免费渲染券哦~ 第一步:初次渲染 打开场景并将V-Ray设置为当前渲染…

基于复旦微FM33FG065A+OSRAM RGBi车载氛围灯方案

应用场景: 汽车内饰照明:这种方案可以用于改善汽车内部的氛围,提升驾驶舒适度和乘客体验。可以通过调节灯光颜色和亮度来营造不同的氛围,比如温馨的暖色调或者清爽的冷色调。 个性化定制:汽车制造商或者车主可以根据个…

kubesphere踩过的坑,持续更新....

踩过的坑 The connection to the server lb.kubesphere.local:6443 was refused - did you specify the right host… 另一篇文档中 dashboard 安装 需要在浏览器中输入thisisunsafe,即可进入登录页面 ingress 安装的问题 问题描述: 安装后通过命令 kubectl g…

Python实现连连看11

(2)isOneCornerLink()函数 isOneCornerLink()函数判断图片是否是单拐点连通。判断是否是单拐点连通有两种方式,如图14所示。 图14 判断单拐点连通的两种方式 从图14中可以看出,判断两张图片是否是单拐点连通,实际上就是判断图中红点与绿点所在图片是否分别与这两张图是直…

电商平台数据的认知与深度理解

随着信息技术的迅猛发展,电商平台已成为现代社会商业活动的重要舞台。在这个舞台上,数据不仅是交易的记录,更是企业决策的依据、用户行为的镜子和市场变化的晴雨表。本文将从多个维度对电商平台数据进行全面且深入的认知和理解。 一、数据的…

深入理解MySQL字符集

一、字符集介绍 字符集(Character Set)是多个字符的集合,它规定了字符在计算机中的编码方式。以下是关于字符集的详细介绍: 1. 字符集的定义与作用 字符集是各种文字和符号的总称,包括各国家文字、标点符号、图形符号…

图像分割——U-Net论文介绍+代码(PyTorch)

0、概要 原理大致介绍了一下,后续会不断精进改的更加详细,然后就是代码可以对自己的数据集进行一个训练,还会不断完善,相应其他代码可以私信我。 一、论文内容总结 摘要:人们普遍认为,深度网络成功需要数…

HarmonyOS开发日记 :自定义节点,实现 UI 组件 动态创建、更新

引言 UI动态操作包含组件的动态创建、卸载、更新等相关操作。 通过组件预创建,可以满足开发者在非build生命周期中进行组件创建,创建后的组件可以进行属性设置、布局计算等操作。之后在页面加载时进行使用,可以极大提升页面响应速度。 UI …

中国500米分辨率年最大LAI数据集(2000-2020)

叶面积指数是生态系统的一个重要结构参数,用来反映植物叶面数量、冠层结构变化、植物群落生命活力及其环境效应,为植物冠层表面物质和能量交换的描述提供结构化的定量信息,并在生态系统碳积累、植被生产力和土壤、植物、大气间相互作用的能量…

[Qt的学习日常]--常用控件2

前言 作者:小蜗牛向前冲 名言:我可以接受失败,但我不能接受放弃 如果觉的博主的文章还不错的话,还请点赞,收藏,关注👀支持博主。如果发现有问题的地方欢迎❀大家在评论区指正 目录 一、widget的…

如何使用视频文案提取帮手将手机上视频里的声音转成文字?

在自媒体短视频日益增加的时候不少自媒体创作者如何将视频转文字的需求日益增加。本次将给大家分享一款针对广大职场青年用户群体的视频转文字工具,旨在为用户提供高效、准确的视频转文字服务。 如何将手机上的视频转成文字呢 视频转文字工具具有转换速度快&#…

11.无代码爬虫八爪鱼采集器抓取网站信息的实操案例——选择目标网站、提取标题、发布时间、评论内容、作者昵称、点赞数量等字段

首先,多数情况下免费版本的功能,已经可以满足绝大多数采集需求,想了解八爪鱼采集器版本区别的详情,请访问这篇帖子: https://blog.csdn.net/cctv1123/article/details/139581468 八爪鱼采集器免费版和个人版、团队版下…

【SpringBoot】SpringBoot:打造现代化微服务架构

文章目录 引言微服务架构概述什么是微服务架构微服务的优势 使用SpringBoot构建微服务创建SpringBoot微服务项目示例:创建订单服务 配置数据库创建实体类和Repository创建服务层和控制器 微服务间通信使用RestTemplate进行同步通信示例:调用用户服务 使用…

hadoop/hive/DBeaver启动流程

hadoop 启动 cd到指定目录下 cd /opt/module/hadoop-3.3.0/sbin/启动文件 ./start-all.shjps一下,查看显示的内容 应该显示以下内容 NameNode SecondaryNameNode DataNode ResourceManager NodeManager如果缺少namenode,那么执行 rm -rf /tmp/hadoo…