mtk 如何学习SW FG充电流程

mtk 如何学习SW FG充电流程

  72/82/92充电框架有了比较大的修改,如果需要学习,你应该了解什么概念。
				  [PLATFORM]
				MT6572 MT6582 MT6592
				
				
				[Solution]
				1.common 层充电函数的位置:
				alps\mediatek\kernel\drivers\power
				battery_common.c ----->充电控制主线程
				battery_meter.c ----->SW FG算法,也即是OAM
				linear_charging.c ----->PMIC充电控制
				switch_charging.c ----->SW charger充电控制
				 
				2.客制化的地方:
				alps\mediatek\custom\mt6572\kernel\battery\battery\
				a.cust_battery_meter.h ----->FG客制化文件,ZCV表格电池容量,填写的文件
				譬如72默认就是使用sw fg
				#define SOC_BY_SW_FG
				 
				b.cust_battery_meter_table.h---->FG客制化文件,ZCV表格,电池数据,填写的位置
				填写对应4个温度
				OCV r表格 
				OCV DOD表格的位置
				 
				c.cust_charging.h ----->充电文件控制的位置。
				设置USB/AC充电电流大小的位置
				 
				3.SW FG的原理:
				a.PMIC adc来获取raw vbat电压。
				b.通过ZCV表格,将vbat转换成OCV
				c.ocv-vbat/r 来获取电流I
				d.对电流i 进行积分,获取电量。
				 
				4.关机充电
				关机充电是使能kernel power off charging
				在kernel里面充电,充电控制流程与开机是一致的。
				具体logo显示的控制,
				DCC IPO文档:
				a.Instant_Power_On_Document//关机充电会使用到IPO服务来画logo,关机充电参考文档
				 
				5.Fuel Gauge测试文档
				请到DCC 上面下载
				a.Fuel Gauge Application Notes //测试文档
				b.Fuel Gauge introduce //介绍文档
				c.Battery_Charging_Introduction_for_Customer//软体介绍文档
				 
				6.Ecourse
				名称:SW Fuel Gauge introduce
				path:
				SW > ALPS > Basic Training.
### Android MTK 平台关机充电流程解析 #### 1. 关机充电背景 在Android设备中,特别是在MTK平台上,当设备处于关机状态并连接到电源适配器时,系统会进入一种特殊的模式——关机充电模式。这种模式允许电池在不启动操作系统的情况下完成快速充电过程[^3]。 #### 2. PowerManagerService 的角色 `PowerManagerService.java` 是 Android 系统框架中的核心服务之一,负责管理设备的电源状态和唤醒锁等功能。对于关机充电场景而言,该文件定义了一些关键逻辑用于处理设备从正常运行切换至关机以及后续的充电行为[^1]。 以下是 `PowerManagerService` 中可能涉及的关键方法片段: ```java private void handleShutdown() { // 处理关机请求的具体逻辑 if (mShuttingDown) { nativeHandleShutdown(); // 调用本地接口执行实际操作 } } ``` 上述代码展示了如何通过调用原生函数来触发硬件级别的关机动作。此阶段完成后,设备将完全断电,并等待外部条件满足后再重新激活某些模块以支持关机充电功能。 #### 3. 内核重启机制 一旦设备正式进入关机序列,Linux内核层面也会参与其中。具体来说,`do_kernel_restart()` 函数被用来通知所有注册过的重启处理器准备行动。这些处理器通常由驱动程序提供,它们各自承担不同的职责,比如保存当前上下文或者配置特定寄存器以便于之后恢复工作环境[^2]。 下面是一个简化版的例子展示这一过程的一部分实现细节: ```c void do_kernel_restart(char *cmd) { atomic_notifier_call_chain(&restart_handler_list, reboot_mode, cmd); } ``` 这里利用了原子通知链表结构 (`atomic_notifier_call_chain`) 来遍历所有的回调函数实例列表(`&restart_handler_list`) ,从而确保每一个必要的组件都能得到适当的通知去响应即将发生的改变 —— 即系统的彻底关闭或者是转换成备用模式如shutdown charging mode . #### 4. 低电量自动关机阈值设定 针对不同型号的产品设计需求,制造商往往希望自定义设置较低水平下的剩余容量百分比作为强制切断供电的标准。例如,在版本号为9.0及以上的新一代安卓智能手机里,默认情况下如果检测到低于某个预定比例(比如说百分之二),则立即实施紧急停运措施以防过度耗尽锂电池单元内部储存的能量储备造成永久损害等问题发生[^4]。 为此目的所作的主要改动集中在以下几个方面: - **核心类别位置**: 文件路径位于 `frameworks\base\services\core\java\com\android\server\BatteryService.java`. - **主要功能描述**: 修改现有算法使得能够识别新的临界点数值并且依据它做出相应的决策反应. #### 结论 综上所述,我们可以看到整个 android mtk shutdown charging process 不仅涉及到高层级的应用层面上的服务控制,同时也深入到了中间件乃至最底层的操作系统内核部分。只有全面理解各个层次之间的相互作用关系才能真正掌握其全貌并有效解决可能出现的各种复杂状况。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值