U-Boot 的启动流程

Tags
Linux
ID
58
 
  1. 从 Flash 加载 u-boot: 当嵌入式设备上电或复位时,硬件引导 ROM(Read-Only Memory)会执行一段固定的引导代码,该代码负责从 Flash 存储器中加载 u-boot 到 RAM(Random Access Memory)中。
  1. 执行 u-boot: 一旦 u-boot 成功加载到 RAM 中,硬件引导 ROM 会跳转到 u-boot 的入口点(通常是固定地址),开始执行 u-boot。
  1. 初始化硬件: u-boot 开始运行后,首先会初始化设备的硬件环境,包括 CPU、内存控制器、外设等。这样确保后续的操作可以正确运行。
  1. 确定启动设备和加载内核: u-boot 会根据预设的启动设备配置(如 Flash、SD 卡、网络等)来确定从哪个设备加载操作系统内核。它会根据配置的引导方式(如 TFTP、NFS 等)从相应的设备中加载内核映像(通常是 Linux 内核)到 RAM 中。
  1. 设置内核启动参数: 在加载内核之前,u-boot 会设置启动参数,这些参数包括内核的启动地址、命令行参数、设备树等。这些信息会传递给操作系统内核,让内核能正确初始化硬件并完成启动过程。
  1. 启动内核: 内核启动参数设置完成后,u-boot 会将控制权交给操作系统内核。内核接管后会根据 u-boot 提供的信息来初始化硬件,设置操作系统环境,并开始正式运行操作系统。
  1. 操作系统启动: 最后,操作系统会继续加载并初始化设备驱动、用户空间等,完成整个系统的启动过程。