在xxx_defconfig文件中有一个配置ENVF(Environment File) 功能

CONFIG_ENVF=y

什么是 ENVF?

  • ENVF 是 Rockchip 的一种机制,让 U-Boot 从外部文件(env.img)读取环境变量
  • 环境变量包括:bootargs(内核启动参数)、bootcmd(启动命令)、mtdparts(分区信息)等
  • 这个 env.img 文件通常存储在 SPI NAND 的某个分区中

启动流程

1. U-Boot 启动
2. 从 SPI NAND(emmc,nor等) 读取 env.img 文件
3. 从 env.img 中获取 bootargs 和 bootcmd
4. 执行 bootcmd(通常是 "boot_fit")
5. 使用 bootargs 启动 Linux 内核

boot_fit一个自定义的 U‑Boot 环境变量,通常用来封装“加载并启动 FIT(Flattened Image Tree)镜像”的一系列操作。它就是第4步中的实际执行者,连接了环境变量与内核引导的“最后一公里”。

boot_fit 最终会调用 bootm(或 booti)等命令,解析 FIT 镜像,把内核、设备树、initramfs 加载好,并把 bootargs 传递给内核,跳转执行。此后 Linux 接管系统。