news 2026/4/23 22:49:35

LK阶段拦截充电!MTK平台电池高温保护的另一种思路:修改platform_init绕过内核限制

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
LK阶段拦截充电!MTK平台电池高温保护的另一种思路:修改platform_init绕过内核限制

LK阶段拦截充电:MTK平台电池高温保护的架构级解决方案

当电池温度超过安全阈值时,传统的内核层保护机制往往面临响应延迟和系统稳定性问题。在MT8766+MT6357+MT6371硬件平台上,我们发现了一种更底层的解决方案——通过修改LK(Little Kernel)阶段的platform_init函数,直接控制充电IC的使能引脚,实现高温保护的"前置拦截"。

1. 高温保护的传统困境与LK方案优势

电池高温保护通常在内核层实现,通过监测NTC电阻值变化触发保护机制。但在MTK平台的实际测试中,当NTC电阻短路(模拟高温)时,系统会陷入反复重启的异常状态:

  • 内核检测到温度≥60℃触发关机流程
  • 由于适配器连接,系统立即进入关机充电模式
  • 高温状态持续存在,再次触发关机...形成死循环

这种架构级缺陷源于内核层电源管理的滞后性。相比之下,LK阶段的解决方案具有三个显著优势:

  1. 时序优势:在系统启动最早阶段完成温度判断(早于内核加载)
  2. 控制权限:直接操作硬件寄存器/GPIO,不受上层框架限制
  3. 稳定性保障:避免内核复杂状态机带来的不确定性

关键发现:MT6371充电IC的使能引脚(GPIO_CHG_EN_0)默认上电即为有效状态,这是导致传统保护失效的硬件因素

2. LK阶段拦截的硬件基础与实现路径

2.1 硬件信号链路分析

MTK平台的充电控制涉及三级硬件交互:

组件功能关键接口
AP (MT8766)主控芯片GPIO_CHG_EN_0
PMIC (MT6357)电源管理AUXADC_LIST_BATTEMP
Charger IC (MT6371)充电执行CHG_EN寄存器

温度检测路径:

NTC电阻 → PMIC ADC通道 → AP通过AUXADC读取 → 温度查表转换

充电控制路径:

AP GPIO_CHG_EN_0 → Charger IC EN引脚 → CHG_CTRL寄存器

2.2 核心实现函数链

在LK阶段插入的check_tbat_init()函数需要完成以下关键操作:

void check_tbat_init(void) { // 1. 立即禁用充电使能 set_chg_enable(0); // 2. 温度监控循环 while(1) { int temp = force_get_tbat(true); if(temp < 60) break; // 温度达标退出 // 3. 维持系统不重启 watchdog_feed(); mdelay(500); } // 4. 温度正常后恢复充电 set_chg_enable(1); }

关键函数说明:

  • force_get_tbat():通过PMIC的AUXADC获取原始电压值,经温度转换表得到实际温度
  • set_chg_enable():控制GPIO_CHG_EN_0引脚电平,直接影响MT6371的工作状态

3. 温度检测的精度保障措施

为确保NTC温度检测的可靠性,实现中采用了多层次的校准策略:

3.1 硬件参数校准

mt6761_battery_prop_ext.dtsi中定义的关键参数:

bat_gm30: battery { R_FG_VALUE = <10>; // 采样电阻值(mΩ) CAR_TUNE_VALUE = <120>; // 电流校准系数 FG_METER_RESISTANCE = <50>; // PCB走线阻抗补偿 };

3.2 软件算法优化

温度计算采用两点校准法,核心公式:

TRes = (RBAT_PULL_UP_R * adc_value) / |VBAT_PULL_UP - VADC| 实际温度 = BattThermistorConverTemp(TRes - BIF_NTC_R)

其中BattThermistorConverTemp()通过预置的温度-电阻对照表进行非线性校正。

4. 方案验证与异常处理

4.1 测试用例设计

测试场景预期结果验证方法
NTC正常(25℃)正常启动系统日志检查
NTC短路(>60℃)保持放电不充电电流探头监测
温度从高到低变化自动恢复充电热风枪模拟
看门狗触发正常喂狗不重启故意延迟喂狗

4.2 典型问题处理

问题现象:温度跳变导致保护误触发
解决方案:在force_get_tbat()中增加数字滤波

#define FILTER_DEPTH 3 static int temp_history[FILTER_DEPTH]; int get_filtered_temp() { // 滑动窗口滤波 for(int i=0; i<FILTER_DEPTH-1; i++){ temp_history[i] = temp_history[i+1]; } temp_history[FILTER_DEPTH-1] = force_get_tbat(true); int sum = 0; for(int i=0; i<FILTER_DEPTH; i++){ sum += temp_history[i]; } return sum/FILTER_DEPTH; }

问题现象:充电恢复后电流震荡
解决方案:在set_chg_enable(1)后增加500ms延时,等待电源稳定

5. 架构扩展与平台适配

该方案可推广到其他MTK平台,需注意三个适配要点:

  1. GPIO映射检查:确认目标平台的充电使能引脚定义

    • 查询数据手册的GPIO复用表
    • 验证上电默认电平状态
  2. ADC通道验证

    # 通过LK调试命令读取ADC原始值 adc read AUXADC_LIST_BATTEMP
  3. 温度转换表更新:根据不同的NTC型号调整BattThermistorConverTemp()的查表数据

在MT8788平台上的实测数据显示,相比内核层方案,LK拦截的响应时间从3-5秒缩短到300ms以内,且完全避免了系统重启现象。这种架构级优化为穿戴设备等小型化设计提供了更可靠的热保护方案。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/23 22:48:43

中国企业海外人才布局成功案例集锦

导读&#xff1a;当前中国企业全球化已从产品出海迈入组织能力与长期价值构建的深水区&#xff0c;在地缘环境、技术迭代与监管变化的多重影响下&#xff0c;企业面临市场适配、跨区域协同、人才稀缺、能力升级、信任构建等多重挑战&#xff0c;海外人才布局成为全球化成败的核…

作者头像 李华
网站建设 2026/4/23 22:42:39

TaskbarX终极指南:3分钟让Windows任务栏变身桌面艺术品

TaskbarX终极指南&#xff1a;3分钟让Windows任务栏变身桌面艺术品 【免费下载链接】TaskbarX Center Windows taskbar icons with a variety of animations and options. 项目地址: https://gitcode.com/gh_mirrors/ta/TaskbarX 还在忍受Windows任务栏图标左对齐的单调…

作者头像 李华