BQ27505-J4数据闪存访问与阻抗跟踪算法调优实战指南

发布时间:2026/7/23 14:30:37

BQ27505-J4数据闪存访问与阻抗跟踪算法调优实战指南
1. 项目概述与核心价值在移动设备和便携式电子产品的开发中电池管理系统BMS的精度直接决定了用户体验的底线。用户最怕的莫过于电量显示“跳水”——明明还有20%转眼就自动关机。这背后是电池这个复杂的电化学系统其内部状态SOC State of Charge难以被直接测量所带来的挑战。传统的库仑计Coulomb Counting方法虽然能通过积分电流来估算电量但极易因电流检测误差、电池自放电和容量衰减而累积偏差时间一长精度就无从谈起。因此以德州仪器TI的阻抗跟踪Impedance Track™技术为代表的“模型学习”算法成为了中高端设备实现精准电量计量的行业标杆。而bq27505-J4正是这一技术路线上一颗经典的单节电池电量计芯片。它不仅仅是一个电流积分器更是一个内置了电池模型、能够动态学习电池特性如最大化学容量Qmax和内阻Ra的微型“电池专家系统”。这个“专家系统”的所有知识和经验——从电池的化学特性、保护阈值到算法参数——都存储在一块非易失性的数据闪存Data Flash中。理解如何访问、配置这片数据闪存以及其核心的阻抗跟踪算法如何运作是让bq27505-J4从“能用”到“好用”的关键。本文将从一个资深嵌入式工程师的视角拆解bq27505-J4的数据闪存访问机制并深入其阻抗跟踪算法的核心参数分享在实际项目中调优这些参数的经验与避坑指南。无论你是正在评估这颗芯片还是正在为电量跳变问题头疼相信这些从一线实战中总结的细节都能给你带来直接的帮助。2. 数据闪存Data Flash深度解析与访问实战数据闪存是bq27505-J4的“灵魂”所在它存储了芯片运行所需的所有配置、校准和状态信息。与通过标准命令如0x08/0x09读取电压直接获取的实时数据不同数据闪存中的参数决定了芯片的“行为模式”和“认知基础”。访问它是进行芯片初始化、产线校准和后期算法优化的必经之路。2.1 访问模式与安全机制理解SEALED与UNSEALEDbq27505-J4设计了三级安全模式来控制数据闪存的访问权限这是保护电池包参数不被意外修改或恶意篡改的重要机制。完全访问模式FULL ACCESS这是最高权限模式。在此模式下不仅可以读写所有数据闪存还能写入用于切换模式的密钥Unseal/Full-Access Keys。通常只在芯片初次编程或需要彻底重新校准时使用。未密封模式UNSEALED这是开发调试和产线校准的主要工作模式。在此模式下可以自由读写绝大部分数据闪存包括算法参数、保护阈值等和制造商信息块。芯片出厂后通常处于SEALED模式需要输入正确的密钥对才能进入UNSEALED模式。密封模式SEALED这是芯片交付给终端用户后的正常工作模式。在此模式下常规数据闪存访问被完全禁止只能通过特定的标准命令如DesignCapacity()读取少数关键信息。但是制造商信息块BManufacturer Info Block B仍然可读可写这为设备制造商在密封后写入序列号、生产日期等自定义信息留下了通道。制造商信息块A则变为只读。关键经验很多工程师在调试时发现无法修改参数第一个要检查的就是芯片是否处于SEALED模式。在SEALED模式下尝试通过数据闪存接口如DataFlashClass命令写配置是不会有任何响应的但也不会报错容易让人误以为是通信或硬件问题。密封与解密封流程 从SEALED模式进入UNSEALED模式需要向Control()寄存器地址0x00/0x01依次发送两个16位的密钥。这两个密钥Unseal Key 0 和 Unseal Key 1存储在数据闪存的特定位置Subclass 112。这里有一个极易出错的细节发送顺序和字节序。假设从芯片读出的密钥是Unseal Key 1: 0x1234Unseal Key 0: 0x5678那么正确的发送顺序是向Control()写入0x3412Key 1的字节交换紧接着向Control()写入0x7856Key 0的字节交换必须连续发送中间不能插入任何其他对Control()寄存器的写操作。成功后CONTROL_STATUS寄存器中的[SS]Seal Status位会被清除。从UNSEALED进入FULL ACCESS模式流程类似但使用另一组密钥Full-Access Keys。2.2 数据闪存访问的两种方式标准命令与块传输访问数据闪存有两种主要方式适用于不同场景。方式一通过标准/扩展命令直接访问部分最常用的参数被映射到了固定的命令地址无论芯片处于SEALED还是UNSEALED模式都可以直接读取。这对于主机MCU实时获取关键信息非常方便。示例DesignCapacity()(0x3c/0x3d): 直接读取设计容量。StateOfHealth()(0x28/0x29): 读取健康状态。ApplicationStatus()(0x6a): 读取应用状态标志位。这种方式简单直接但只能覆盖一小部分数据闪存内容。方式二通过块传输Block Transfer访问这是访问任意数据闪存位置的通用方法但仅在UNSEALED模式下可用。它通过一组扩展命令协同工作以32字节为块Block进行读写。其核心思想是先将目标数据块从闪存“搬”到一组临时的命令寄存器0x40-0x5f中修改后再写回。完整的写操作流程以修改Design Capacity为例Design Capacity位于Class: Configuration (48), Subclass: Data (48), Offset: 10。它是一个2字节有符号整数I2。设置访问模式向BlockDataControl()(0x61) 写入0x00启用通用数据闪存访问模式。选择数据类向DataFlashClass()(0x3e) 写入目标Class ID此处为0x30十进制48。选择数据块由于Offset 10小于32它在第一个32字节块内。因此向DataFlashBlock()(0x3f) 写入0x00。计算目标地址目标数据在BlockData()寄存器空间中的地址为0x40 (Offset % 32) 0x40 10 0x4A。读取当前块连续读取从0x40到0x5f的32个字节获取整个数据块。修改数据在本地内存中将地址0x4A和0x4B小端格式的两个字节修改为新的容量值例如2000mAh对应0xD0 0x07。计算校验和计算修改后的32字节数据块所有字节的和取最低有效字节LSB然后计算其补码[255 - LSB]。例如和为0x1234LSB为0x34则校验和为255 - 0x34 0xCB。写回数据块将修改后的32字节数据依次写入0x40至0x5f。写入校验和将计算出的校验和如0xCB写入BlockDataChecksum()(0x60)。只有正确写入校验和芯片才会真正将数据从命令寄存器空间写入非易失性数据闪存。验证重新执行步骤1-5读取数据确认修改已生效。避坑指南校验和错误是导致写入失败的最常见原因。务必确保计算的是32字节数据的和并且是写入校验和之前的数据。有些工程师会忘记包含0x40-0x5f全部32个地址或者错误地包含了命令地址本身。TI的评估软件EV2300/2400配套软件在底层也是执行这一流程手动实现时务必仔细核对。2.3 关键数据闪存参数分类与配置要点数据闪存参数表庞大但可以归纳为几大类每类都有其配置逻辑1. 安全与保护参数Class 2, Subclass SafetyOT Chg/OT Dsg过温充电/放电单位0.1°C。切勿照搬电芯规格书需考虑温度传感器在电池包内的位置热阻。通常设定值比电芯极限温度低5-10°C为系统反应留出余量。OT Chg Time/OT Dsg Time过温持续时间达到温度阈值后持续多久才触发保护。用于过滤短暂的温度尖峰防止误触发。2. 充电配置参数Class 34, 36Charging Voltage充电电压必须严格匹配电池的满充电压如4.2V, 4.35V。设置错误会导致无法充满或过充。Taper Current消流电流 Minimum Taper Charge最小消流容量判定充电终止的条件。当电流小于Taper Current且累计容量大于Minimum Taper Charge时芯片才认为充电完成更新FullChargeCapacity(FCC)。如果Minimum Taper Charge设置过大在快充场景下电流可能早已降到Taper Current以下但累计容量不足会导致FCC长期无法更新SOC计算失准。3. 电量算法核心参数Class 48, 49, 80, 81, 82Design Capacity设计容量这是算法学习的起点应设置为电池的标称容量。它不直接影响FCC报告但影响初始学习速率和某些内部判断。Qmax 0/1这是阻抗跟踪算法的“基石”代表电池在C/20倍率下的最大化学容量。初始值必须设置准确通常从电芯规格书中获取或通过一次完整的充放电学习得到。算法会在此基础上进行更新。Ra Table内阻表存储不同SOC和温度下的电池内阻。初始值可由电芯规格书或TI提供的化学ID配置导入。算法在运行中会动态更新此表。Dsg/Chg Current Threshold放电/充电电流阈值这是芯片判断“有电流”的门槛。设置至关重要。设得太高小电流负载会被忽略导致SOC更新滞后设得太低噪声可能被误判为电流引起SOC跳动。通常设置为待机电流的1.5-2倍。4. 校准参数Class 104CC Gain/CC Delta/CC Offset用于校准电流检测通道。这需要在产线上通过精密负载进行校准以消除PCB走线电阻和芯片自身偏差的影响。不准确的校准是电量误差的主要来源之一。Board Offset板级电压偏移校准用于补偿电压检测路径上的误差。3. 阻抗跟踪Impedance Track™算法核心机制剖析阻抗跟踪算法的精髓在于它不满足于简单的电流积分而是通过建立电池的等效电路模型实时计算电池的开路电压OCV和内阻Ra从而对负载下的电压降进行补偿得到更真实的SOC。3.1 算法基本原理与工作流程其核心思想可以概括为“在已知的SOC-OCV关系曲线上通过实时测量的负载电压和电流反推当前的真实SOC”。OCV-SOC曲线这是电池的“指纹”描述了在无负载、充分弛豫Relaxed状态下电池开路电压与荷电状态的一一对应关系。这条曲线是已知的并固化在芯片的算法模型中通过化学ID选择。实时测量芯片持续测量电池的端电压V_cell、流经检测电阻的电流I和温度T。内阻Ra计算当负载变化时电池端电压会因内阻产生压降ΔV I * Ra。算法通过比较负载施加瞬间的电压变化和电流可以计算出该SOC点和温度下的瞬时内阻。这些数据被不断学习并更新到Ra表中。SOC推算在负载状态下算法利用当前估算的SOC来自库仑积分和Ra表计算出当前应有的OCV估算值OCV_estimated V_cell I * Ra(SOC, T)。然后将这个OCV_estimated与OCV-SOC曲线进行比对对库仑积分得到的SOC进行纠正。如果积分SOC对应的OCV与估算OCV不符算法会逐步调整SOC使其匹配。Qmax更新在电池经历一次完整的充放电循环并且中间有足够的弛豫时间Relax来获取准确的OCV时算法会对比充放电前后的SOC变化和流过的电荷量来更新电池的最大化学容量Qmax。这是算法“学习”电池老化、提升长期精度的关键。3.2 关键算法参数详解与调优策略1. Load Mode 与 Load Select定义“负载模型”这是算法中最灵活也最容易配置错误的部分之一。Load Mode (0x50, Offset 1)选择恒定电流0或恒定功率1模型。对于电流变化剧烈的负载如射频功放恒定功率模型更准确。Load Select (0x50, Offset 0)定义算法使用哪个“电流/功率值”来进行负载补偿计算。模式0上一循环平均电流使用上一个完整放电周期的平均电流。适用于负载模式非常固定的设备。模式1当前循环平均电流默认使用本次放电周期至今的平均电流。这是最通用的设置能动态适应本次使用的负载情况。模式6用户自定义速率使用User_Rate-mA或User_Rate-mW寄存器中的值。这为你提供了完全的控制权可以手动设定一个典型的放电速率适用于负载极不规律、无法用平均值的场景。调优心得对于智能手机等负载复杂的设备通常使用Load Mode0恒流Load Select1当前平均电流。如果你发现设备在玩游戏大电流和看电子书小电流时电量下降速度的预测偏差很大可以尝试切换到Load Mode1恒功率看看是否能改善。User_Rate模式则更像一种“保底”或“特殊工况”设置。2. Relax相关参数确保OCV测量的准确性算法学习Qmax和更新Ra表极度依赖准确的OCV测量。而获取准确OCV的前提是电池必须“弛豫”Relax即电流极小且电压稳定。Quit Current退出电流判定进入弛豫模式的电流阈值。必须大于系统的待机电流否则芯片永远无法进入弛豫状态。通常设为待机电流的1.5倍。Dsg/Chg Relax Time放电/充电弛豫时间电流低于Quit Current后需要持续多长时间才判定为进入弛豫模式。用于过滤短暂的负载空闲。Quit Relax Time退出弛豫时间电流高于Quit Current后需要持续多长时间才判定为退出弛豫模式。防止因瞬间的负载脉冲误退出学习状态。3. Qmax Filter 与 Ra Filter控制学习速度与稳定性Qmax Filter(0x50, Offset 44)Qmax更新的滤波系数。值越大对新学习到的Qmax值信任度越低更新越缓慢保守。对于一致性好的电芯可以设小一些如80让算法快速学习对于老化不一致或质量一般的电芯建议设大如96或更大防止单次异常循环导致容量估值剧烈波动。Ra Filter(0x50, Offset 24)内阻更新的滤波系数。同理控制内阻表的学习速度。内阻受温度、SOC影响大通常需要比Qmax更快的更新速度此值可设小一些。4. Reserve Cap备用容量Reserve Cap-mAh/mWh定义当报告容量为0后电池实际还能放出的容量。这用于补偿电池在超低电量下因极化加剧导致的电压骤降。设置此值可以防止设备在显示0%后立即关机给予系统一个安全关机的缓冲时间。该值需要根据电池在低SOC下的实际放曲线来测定。4. 实战配置流程与典型问题排查4.1 新电池包初始化配置流程硬件校准 a. 将芯片置于FULL ACCESS或UNSEALED模式。 b. 在无电流流过的状态下校准CC Offset电流偏移使Current()读数为0。 c. 施加一个已知的精确负载电流如100mA校准CC Gain使Current()读数与真实值匹配。 d. 使用精密电压源校准Pack V Offset。参数预配置 a. 根据电芯规格书填入Design Capacity、Charging Voltage、Terminate Voltage放电终止电压。 b. 填入初始的Qmax 0/1可先设为与Design Capacity相同。 c. 根据应用设定保护参数温度、电压阈值。 d. 根据系统特性设定Dsg/Chg Current Threshold、Quit Current等。 e. 导入或填入初始的Ra Table可从TI针对该电芯化学体系的配置文件中获取。学习循环 a. 将芯片切换到SEALED模式模拟用户状态。 b. 对电池包执行一次完整的慢速充放电循环建议C/3或更小。确保充电到满Charging Voltage 电流降至Taper Current以下放电至Terminate Voltage。 c. 在整个循环中确保有多次长时间的静置30分钟以便芯片进入弛豫状态学习准确的OCV点从而更新Qmax和Ra表。 d. 循环结束后进入UNSEALED模式读出更新后的Qmax和Ra Table值。这些值就是针对这个特定电池包的“黄金参数”。生成黄金映像Golden Image 将步骤3中学习到的最佳参数连同其他配置保存为一个二进制文件。这个文件可用于批量生产时直接烧录到所有同型号电池包的bq27505-J4中确保一致性。4.2 常见问题与排查实录问题1SOC显示长时间不动然后突然跳变。可能原因ADsg/Chg Current Threshold设置过高。小电流负载被忽略库仑积分未启动SOC冻结。直到大电流负载出现才被检测到积分开始SOC突然变化。排查监控Current()读数看在小负载时是否低于阈值。适当降低阈值。可能原因B未进入弛豫模式Qmax和Ra表长期未更新算法无法对负载进行有效补偿导致SOC估算越来越偏离最终在某个点被强制纠正。排查检查Quit Current是否小于系统待机电流。检查设备是否有真正的“零电流”静置期。问题2电量显示到20%或10%左右时设备突然关机。可能原因ARa Table不准确或未更新。在低SOC时电池内阻急剧增大。如果算法中使用的内阻值比实际小它会高估OCV从而高估剩余容量。当实际电压跌至系统关机电压时显示电量还很多。解决确保电池经历了完整的学习循环更新了Ra表。可以尝试在低SOC区间如20%以下进行中低电流放电并给予充分弛豫时间帮助算法学习该区间的内阻。可能原因BReserve Cap设置过小或为0。没有为电压骤降预留缓冲容量。解决适当增加Reserve Cap-mAh值例如设为设计容量的2%-3%。问题3充电永远显示不到100%或者在95%-100%之间徘徊。可能原因Taper Current或Minimum Taper Charge设置不合理。排查监控充电末期的电流和FCC更新标志。如果电流已小于Taper Current但FCC未更新可能是Minimum Taper Charge太大累计的消流容量未达标。对于快充需要调小Minimum Taper Charge。问题4不同温度下电量精度差异大。可能原因Ra Table和OCV-SOC曲线本身包含温度补偿但初始的Ra表数据可能不完整或者温度传感器校准Int/Ext Temp Offset不准。解决确保在宽温范围如0°C 25°C 45°C下都进行了完整的学习循环让算法充分学习不同温度下的内阻特性。校准温度传感器读数。问题5生产线上如何高效校准和配置标准流程使用TI的评估板如EV2400和上位机软件进行交互式配置和校准然后导出黄金映像文件。量产方案开发一个基于MCU的自动化校准工装。工装程序需实现 a. 通过I2C与bq27505-J4通信。 b. 控制精密电源和电子负载施加校准电流。 c. 自动执行解密封、校准CC Gain/Offset等、写入黄金映像参数、重新密封的完整流程。 d. 记录每个电池包的校准后关键参数如实际Qmax用于质量追溯。关键技巧在写入黄金映像后务必进行一次完整的读回验证确保所有参数写入正确。校验和错误是批量生产中的主要风险点。

相关新闻

三种常用的数据存储技术

三种常用的数据存储技术

2026/7/23 14:30:37

数据存储技术 当今最主流、最常用的数据存数技术有MySQL、SQLite、Redis,他们三者各有不同的长处,用途也不同,可以互相配合使用,对比如下MySQL(存中心)SQLite(存本地)Redis&#xff…

职场工作服套装生产厂家如何选择?

职场工作服套装生产厂家如何选择?

2026/7/23 14:30:37

选择合适的职场工作服套装生产厂家对于企业来说至关重要,以下是一些选择要点:一、生产能力与规模厂房与设备 考察厂家是否有现代化的标准生产厂房,像深圳市凯思顿服饰有限公司,拥有5000平方米的厂房,厂区布局规整&…

TPS6131x I2C寄存器配置与PCB布局实战:驱动手机闪光灯的精密电源管理

TPS6131x I2C寄存器配置与PCB布局实战:驱动手机闪光灯的精密电源管理

2026/7/23 14:30:37

1. 项目概述与核心价值在手机、平板这类便携设备里,给摄像头闪光灯或者手电筒供电,看起来是个简单的活儿,不就是让LED亮起来嘛。但真干过这行的工程师都知道,这里面的水可深了。你得考虑电池电压会波动,LED的亮度要精准…

全年龄段覆盖的超低钆造影剂获批:Ambelvist为新生儿到成人的MRI检查筑牢安全底线【海得康】

全年龄段覆盖的超低钆造影剂获批:Ambelvist为新生儿到成人的MRI检查筑牢安全底线【海得康】

2026/7/23 15:20:40

2026年6月15日,拜耳宣布新型大环钆造影剂Ambelvist(gadoquatrane)正式获得美国FDA批准上市,这款产品是目前美国获批的剂量最低的大环钆基造影剂,推荐剂量仅为0.01 mmol/kg实际体重,换算后相当于0.04 mmol G…

VMware运行Win11虚拟机的配置与优化指南

VMware运行Win11虚拟机的配置与优化指南

2026/7/23 15:20:40

1. 微软重新上架VMware版Win11虚拟机的背景解析 上周微软商店突然下架了VMware平台的Windows 11虚拟机镜像,这件事在开发者圈子里引起了不小的震动。作为一个常年使用虚拟机做跨平台开发的工程师,我当时正准备给团队的新人配置开发环境,结果发…

浑南区知名的小程序开发供应商找哪家

浑南区知名的小程序开发供应商找哪家

2026/7/23 15:20:40

引言在数字化浪潮席卷各行各业的今天,小程序作为一种轻量级的应用,已成为企业提升品牌形象、拓展线上业务的重要工具。浑南区作为沈阳的重要产业集聚区,拥有众多优秀的小程序开发供应商。本文将为您推荐一家在浑南区颇具口碑的小程序开发供应…

深入解析I2C从机寄存器:从数据交换到FIFO与中断管理

深入解析I2C从机寄存器:从数据交换到FIFO与中断管理

2026/7/23 15:20:40

1. I2C从机寄存器体系概览与核心设计思路 在嵌入式系统开发中,I2C总线因其简洁的两线制(SDA数据线和SCL时钟线)和灵活的多主多从架构,成为了连接各类传感器、EEPROM、RTC等外设的首选协议。然而,要真正用好I2C&#xf…

为什么你的飞书AI审批总卡在“待人工复核”?揭秘TOP3模型幻觉触发场景及4步精准干预法

为什么你的飞书AI审批总卡在“待人工复核”?揭秘TOP3模型幻觉触发场景及4步精准干预法

2026/7/23 15:20:40

更多请点击: https://kaifayun.com 第一章:为什么你的飞书AI审批总卡在“待人工复核”?揭秘TOP3模型幻觉触发场景及4步精准干预法 飞书AI审批流程中频繁滞留在“待人工复核”状态,并非算力不足或配置错误,而是大语言模…

告别 GPG 的瑞士军刀包袱:为什么 age 才是 21 世纪的文件加密利器?

告别 GPG 的瑞士军刀包袱:为什么 age 才是 21 世纪的文件加密利器?

2026/7/23 15:10:39

在当今的云原生与 DevOps 实践中,文本配置、敏感凭据和基础设施代码(IaC)的加密存储已经成为刚需。提到文件加解密,许多从业者的第一反应依然是 PGP / GPG(GnuPG)。然而,每次在终端尝试配置 GPG…

微服务进阶:服务网格与Istio

微服务进阶:服务网格与Istio

2026/7/23 3:40:08

541|微服务进阶:服务网格与Istio 上篇文章我们聊了微服务的基本概念和拆分方法。 但微服务多了,问题也多了: 服务之间怎么通信? 怎么监控每个服务的调用链路? 熔断、限流、重试怎么做? 安全认证怎么统一? 以前这些都靠SDK库(比如Hystrix、Feign),每个服务都要集成…

零售超级终端全域协同:ShareKit 碰一碰商品流转业务落地案例

零售超级终端全域协同:ShareKit 碰一碰商品流转业务落地案例

2026/7/23 4:40:05

一、零售门店全域协同业务背景与行业痛点 1.1 门店超级终端设备矩阵(连锁便利店/商超标准配置) 自助收银Kiosk一体机:顾客结算、自助核销优惠券、商品素材预览;运营折叠平板:店长后台商品上新、图片录入、活动配置、…

噗叽短视频界面分析

噗叽短视频界面分析

2026/7/23 1:54:13

1 和小红书类似,可以采用类似判断方法------------其实他比小红书好判断,因为他没有图片,控件位置几乎是固定的,都不用判断------------2 因为他没有点赞按钮------------而且几乎所有控件位置都是完全一样的,所以我就…

企业级AI搜索落地选型实战手册(含LLM+RAG+Hybrid架构对比矩阵与ROI测算模板)

企业级AI搜索落地选型实战手册(含LLM+RAG+Hybrid架构对比矩阵与ROI测算模板)

2026/7/23 0:09:56

更多请点击: https://kaifayun.com 第一章:企业级AI搜索落地选型实战手册(含LLMRAGHybrid架构对比矩阵与ROI测算模板) 企业级AI搜索系统落地成败,核心在于技术选型与业务价值的精准对齐。盲目堆砌大模型能力或过度依赖…

TM4C129LNCZAD外设实战:LCD、比较器与PWM寄存器配置详解

TM4C129LNCZAD外设实战:LCD、比较器与PWM寄存器配置详解

2026/7/23 0:09:56

1. 项目概述与核心价值在嵌入式系统开发,尤其是基于ARM Cortex-M内核的微控制器项目中,深入理解并熟练配置芯片的片上外设,是从“点亮LED”迈向“实现复杂系统功能”的关键一步。Tiva™ TM4C129LNCZAD作为TI公司Cortex-M4F家族中的高性能成员…

AtomCode `fmt_dur` 争议溯源:两个函数、三段演进、四个事实

AtomCode `fmt_dur` 争议溯源:两个函数、三段演进、四个事实

2026/7/23 0:09:56

一、快速声明与争议背景本文是对 AtomCode 终端 spinner 时长显示 fmt_dur 相关说法的事实性核验。2026 年 7 月 CSDN 上出现两篇互相矛盾的博文,近期又有 AI 在对话中输出格式描述 XhYm / YmZs / Zs。本文基于 AtomCode 仓库 main4677ddfa 及全分支 Git 历史给出可…