[具身智能-576]:RDK X5:miniboot 分区、FIP 固件镜像、BL1.bin关系,为什么称为miniboot 分区?
一、三者完整层级关系(RDK X5 SPI NAND 视角)
1. 基础定义
-
miniboot 分区 SPI NAND Flash 上一个独立 MTD 硬件分区(mtd0),整块分区专门存放芯片上电最小启动全链路固件,官方命名
miniboot,镜像文件叫miniboot.img。 分区内部采用A/B 双备份 slot0/slot1,两套完整启动固件,升级失败自动切回旧固件防砖。 -
BL1.bin TF-A 标准一级安全引导固件,是miniboot 分区最开头、独立存放的第一段二进制,不在 FIP 包内部。 上电由芯片片内 BOOTROM直接读取,先载入片内 SRAM 运行(此时 DDR 未初始化)。
-
FIP 固件镜像(fip.bin) ARM TF-A 标准容器包,紧跟 BL1.bin 之后存放在 miniboot 分区内; 一个 FIP 内部打包 4 段固件:BL2、BL31、BL32 (OP-TEE)、BL33 (U-Boot); BL1 运行完成后,才解析、验签、加载 FIP 内所有固件。
2. 空间排布(miniboot 分区内部物理顺序)
plaintext
miniboot分区起始地址
├─ slot0主固件槽
│ ├─ BL1.bin (独立段,分区头部)
│ └─ fip.bin (FIP容器,内含BL2/BL31/OPTEE/U-Boot)
└─ slot1备用固件槽(完全复刻slot0结构,升级写入此处)
关键边界
- BL1 与 FIP 是同分区内两段独立二进制,不是嵌套;
- BL2/BL31/OPTEE/U-Boot 不单独占用 Flash 地址,全部封装在 FIP 一个文件里;
- ubootenv 是 SPI NAND 另一独立分区,不属于 miniboot 分区。
3. 启动加载逻辑(对应你的串口日志)
- 上电 → 芯片内置 BOOTROM(不在 Flash)读取 miniboot 分区头部 BL1.bin;
- BL1 初始化 SPI NAND、校验自身签名,读取同 slot 内的 fip.bin;
- BL1 解析 FIP 头部索引,拆分并依次验签加载 BL2→BL31→OP-TEE→U-Boot;
- BL2 完成 DDR 初始化,后续固件全部搬运至 DDR 内存执行。
二、为什么这个分区叫 miniboot(最小启动分区)
1. 字面含义:Mini + Boot = 最小化启动固件集合
地平线命名逻辑:这块分区存放不依赖任何外部存储(SD/eMMC)就能完成完整硬件初始化的最小启动链。
- 只靠这片 SPI NAND,就能完成:SPI Flash 驱动、DDR 内存初始化、安全校验、加载 U-Boot;
- 全程不需要 SD 卡即可跑通底层引导;SD 卡仅用于存放 Linux 系统,不在 miniboot 范畴。
2. 工程层面核心理由
(1)功能最小闭环,脱离操作系统独立运行
miniboot 分区内全套固件只做一件事:硬件初始化 + 安全引导 U-Boot,不含 Linux 内核、Ubuntu 系统、驱动库、应用程序。 体积极小(整个分区仅 7MB),对比 SD 卡几十 GB 系统镜像,属于 “微型启动固件”,因此命名 mini。
(2)是整机最底层、不可缺失的最小启动底座
无论 SD 卡是否损坏、丢失,只要 miniboot 分区固件完好,板子至少能跑完串口底层打印、进入 Fastboot 刷机模式(你日志里SD Card not detected, entering Fastboot update mode就是典型场景)。 如果 miniboot 分区损坏,板子完全无串口输出、无法刷机,彻底变砖。
(3)编译产物统一命名规范
地平线编译脚本会把BL1 + FIP (全部 BL2~U-Boot) + DDR 初始化固件打包成单一镜像miniboot.img,烧录时完整写入 miniboot 分区,行业内统一简称 miniboot 固件 / 分区。
(4)区分层级,和上层 boot 分区做隔离
- miniboot 分区:板载 SPI NAND,底层安全引导(BL1/FIP/U-Boot);
- SD 卡内 /boot 分区:SD 卡 FAT32 分区,存放 Linux 内核、dtb、boot.scr; 用 miniboot 名字明确区分片载底层启动分区与SD 卡系统启动分区,避免开发混淆。
3. 通俗总结命名逻辑
“mini” = 体积小、功能极简、不依赖外部存储; “boot” = 承担芯片上电第一级引导工作; 合称为miniboot分区,专门存放完成最小硬件启动所需的全部底层 TF-A 固件。
三、易混淆关键点澄清
- BL1.bin 不是 FIP 的一部分:FIP 只包含 BL2 及之后固件,BL1 独立在分区头部;
- FIP 只是容器,不是独立分区:FIP 物理上仍存在 miniboot 分区内部;
- miniboot 分区 ≠ U-Boot:U-Boot 只是 FIP 内部其中一段固件,miniboot 包含完整 BL1+FIP 全套安全启动链;
- 烧 SD 镜像不会改动 miniboot 分区;升级 BL1/BL31/U-Boot 必须单独刷 miniboot.img
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐



所有评论(0)