1. 引言对于系统启动可以有多种方案本文介绍结合 Flash 和 eMMC 的启动方式。该方案兼顾了 Flash 的快速启动与 eMMC 的大容量存储优势是嵌入式 Linux 系统中常见的启动组合。2. 整体启动流程系统启动分为四个阶段各阶段分工明确BootROM 阶段SPL 阶段U-Boot 阶段Kernel 阶段3. BootROM 阶段BootROM 是固化在芯片内部的只读程序上电后首先执行。它负责从外部存储介质加载 SPL。从 Flash 中读取 SPL因 Flash 支持 XIP可快速加载校验 SPL 的完整性如 CRC 校验将 SPL 拷贝到 SRAM 中执行4. SPL 阶段SPLSecondary Program Loader是 U-Boot 的简化版本运行在 SRAM 中负责初始化 DDR 并加载完整的 U-Boot。初始化 DDR 控制器从 Flash 或 eMMC 中加载 U-Boot 到 DDR跳转到 U-Boot 入口5. U-Boot 阶段U-Boot 是完整的引导加载程序运行在 DDR 中负责加载内核和设备树。初始化外设网卡、存储控制器等从 eMMC 中读取内核镜像zImage/Image和设备树dtb设置启动参数并跳转到内核6. Kernel 阶段内核接管系统后完成剩余初始化并挂载根文件系统。解压并初始化内核挂载根文件系统通常位于 eMMC 分区启动 init 进程进入用户空间7. 方案优势与注意事项优势Flash 启动快适合快速加载 SPL 和 U-BooteMMC 容量大、成本低适合存放内核和根文件系统注意事项需合理划分 eMMC 分区boot、rootfs、data建议在 U-Boot 中配置环境变量以支持灵活的启动参数生产环境建议增加启动冗余如 A/B 分区升级