本篇文章为迁移文章。迁移后的文章可能存在诸多问题,如果遇到问题,可以打开此链接,通过微信联系我,也可以发表评论。

在紫光展讯芯片(如虎贲系列)的刷机流程中,BROM(BootROM)、FDL1和FDL2是三个至关重要的底层模块。它们构成了设备从开机到固件运行的完整链路,理解其分工与协作逻辑,不仅能帮你规避刷机风险,还能深入掌握芯片启动的底层原理。
BROM(BootROM):硬件级启动的“守门人”
BootROM是芯片出厂时直接固化在硬件中的一段不可修改代码,其本质是设备上电后运行的第一段程序,也被称为“Romcode”或“Bootloader”(虽然其都是烧写在芯片内的固件,但安卓Bootloader与其仍有区别,切勿混淆)。它的核心使命是为设备建立最基础的运行环境,并决定后续启动流程的走向。当用户按下电源键或深度刷机键(音量下键)时,BROM会立即激活,执行硬件级别的初始化操作,例如配置CPU的时钟频率、检测电源状态以及扫描外部按键信号,然后开放u2s端口尝试连接。
在刷机场景中,BROM的核心功能是“模式判断”与“安全校验”。若检测到设备处于刷机模式(例如通过USB连接PC且可以正确识别),BROM会切换至下载协议(如UART),与PC端的刷机工具建立通信。此时,BROM会接收来自工具的第一级下载程序(FDL1),并将其加载到芯片的内部RAM(IRAM)中执行。对于支持安全启动(Secure Boot)的设备,BROM还会对FDL1的合法性进行验证——通过比对预置在芯片中的数字证书,确保后续代码未被篡改。若签名校验失败,BROM会直接中断启动流程,防止恶意固件注入。
由于BROM是硬件固化的,其代码无法被用户修改或绕过,这既保障了设备的基础安全性,也意味着一旦BROM损坏(如物理层面的芯片故障),设备将彻底无法启动,通常只能通过返厂维修解决。
FDL1:内存初始化的“开拓者”
FDL1是由展讯平台“chipram”项目编译生成的轻量级程序,其核心任务是为刷机流程搭建临时运行环境。由于BROM仅能访问芯片内部的极小容量RAM(通常为几十KB),无法直接处理完整的固件包(如数百MB的system镜像),FDL1的首要职责便是初始化外部DDR内存。
当BROM将FDL1加载到IRAM后,FDL1会通过精密配置DDR控制器的时序参数(如频率、电压、行列地址延迟等),激活外部内存芯片的工作状态。这一过程需要与硬件设计严格匹配,任何时序偏差都可能导致DDR初始化失败,进而引发刷机工具卡在FDL1阶段(例如进度条无响应)。成功初始化DDR后,设备便拥有了足够的内存空间(如1GB~8GB),为后续更大规模的代码运行奠定基础。
完成DDR配置后,FDL1会继续与PC工具通信,接收第二级下载程序(FDL2)并将其传输到DDR中运行。此时,FDL1的使命结束,控制权将完全移交至FDL2。值得注意的是,FDL1的代码通常与具体硬件型号强相关——不同设备的DDR类型(如LPDDR3/LPDDR4)或布局设计需要适配不同的FDL1文件,这也是刷机时必须选择与机型匹配的刷机包的重要原因之一。
FDL2:固件写入的“执行引擎”
FDL2是由展讯“u-boot”项目生成的第二级下载程序,其功能复杂度远超FDL1,直接负责将完整的固件包写入设备的存储芯片(如eMMC或UFS)。在FDL2接管控制权后,它会进一步初始化存储控制器,识别闪存芯片的型号、分区表结构,并建立与PC端的高速传输通道。
在刷机过程中,FDL2的核心工作分为两阶段:“分区配置”与“镜像写入”。首先,FDL2会解析刷机包中的分区描述文件(partition-时间戳.xml),在存储芯片中划分出boot、system、userdata等逻辑分区。随后,它将逐个接收来自PC的镜像文件(如boot.img、system.img),按照分区表将其写入对应物理分区。
FDL2的稳定性直接决定了刷机成功率。例如,若设备在FDL2阶段出现进度条卡顿或报错,可能源于以下原因:DDR内存虚焊(导致数据传输异常)、闪存驱动不兼容(无法识别新型存储芯片)、或固件损坏(刷机包不完整或签名异常)。此时,你需要结合具体错误代码,排查硬件问题或更换经过官方签名的固件包。
三者的协作:从开机到固件落地的完整链条
整个刷机流程本质上是BROM、FDL1、FDL2的接力执行过程:
- BROM启动:设备上电后,BROM初始化硬件并检测刷机模式,若触发下载条件,则通过USB加载FDL1至IRAM。
- FDL1运行:FDL1完成DDR内存的配置,为FDL2提供运行环境,随后将控制权移交至DDR中的FDL2。
- FDL2接管:FDL2驱动存储芯片,解析并写入完整的固件包,最终完成系统升级。
这一链条的每个环节均存在严格的安全校验机制,形成从硬件到系统镜像的可信启动链。若用户试图刷入未经签名的第三方固件,BROM或FDL2会在不同阶段拦截非法操作,从而保障设备底层安全。
技术延伸:从刷机到底层调试
对于开发者或极客用户,通过UART串口可实时监控BROM、FDL1、FDL2的运行日志。例如,在BROM阶段,串口会输出硬件初始化状态码;在FDL1阶段,可查看DDR时序配置的详细信息;FDL2阶段则会打印闪存驱动加载进度与镜像校验结果。这些日志是诊断刷机故障的“黑匣子”,能精准定位问题根源(如DDR时序错误码“0x2000”代表频率配置超限)。
此外,理解BROM/FDL的工作机制,还能为救砖操作提供思路。例如,若设备因FDL2阶段的错误刷机导致无法开机,可通过长按3秒设备侧面的“音量-”强制进入BROM模式,绕过损坏的FDL1/FDL2或系统固件重新写入完整固件救砖。
结语
BROM、FDL1、FDL2的设计如同精密的齿轮组,环环相扣地确保设备即使刷入了错误的系统依然可以底层地重刷系统救砖。对于我们来讲,了解这些之后,你一定能认识到BROM与FDL在设备上的重要性,从而更谨慎的刷机。
最后留下一句话:深度刷机是你最后的武器,切忌乱刷FDL,乱刷FDL会导致整个芯片损坏,你会喜提一块大板砖!