U-Boot启动流程

1 BootRoom阶段

  1. 上电复位,CPU从Boot Room的固定地址读取指令开始执行;
  2. 初始化时钟、引脚、片上SRAM;
  3. 读取启动引脚,判断启动介质(SD/eMMC/SPI/NAND);
  4. 从启动介质中读取SPL(Secondary Program Loader)到片上SRAM
  5. 跳转到SPL入口

2 SPL阶段

  1. 再次初始化时钟,PLL,电源
  2. 初始化DDR
  3. 读取完成的U-Boot并加载到DDR;
  4. 跳转到DDR中的U-Boot入口

3 U-Boot阶段

3.1 汇编阶段

  1. 设置异常向量表
  2. 设置 CPU 模式SVC(超级管理员模式)
  3. 关中断、关 MMU、关 Cache
  4. 设置栈指针 SP
  5. 清零 BSS 段
  6. 调用 C 语言入口函数 board_init_f

3.2 board_init_f

  1. 初始化基础硬件:时钟、串口、DDR
  2. 初始化全局数据结构体 gd_t
  3. 准备重定位地址
  4. 跳转到 board_init_r

3.3 board_init_r

  1. 初始化各种外设:GPIO、I2C、SPI、MMC/eMMC/SD、Ethernet、USB、NAND、Flash 等
  2. 初始化命令系统
  3. 初始化环境变量
  4. 显示控制台提示符
  5. 进入 主循环:等待命令 或 自动启动内核

3.4 启动内核前准备

  1. 读取设备树 dtb
  2. 读取Linux内核镜像
  3. 设置启动参数 bootargs
  4. 调用 bootm/booti 启动内核

3.5 启动内核

相关推荐
风曦Kisaki3 小时前
Kubernetes(K8s)笔记Day06: 持久化存储(emptyDir,hostPath,NFS),PV 和 PVC,StorageClass存储类
linux·运维·笔记·云原生·容器·kubernetes
虹科数字化与AR5 小时前
安宝特方案丨汽车模具增材制造:从数字模型到精密模具的直达通道
经验分享
小星星闪亮登场8 小时前
2026萌新联赛第三场-- (郑州轻工业大学)
数据结构·c++·经验分享·算法·贪心算法·排序算法·深度优先
wgego8 小时前
基础的反序列化一些总结(php和java)
java·开发语言·笔记
AF_INET610 小时前
RK开发板(五)ISP Tunner工具的基本使用
经验分享·sensor·rockchip·rv1126b·isp tunner·图像调试·isp调试
YIN_尹10 小时前
测完ToDesk、UU远程和向日葵,双模式、画质、掉帧差距多大?远程打游戏这事有点意思
经验分享
依然范特东11 小时前
强化学习笔记6--IS、PPO、TD、DQN、Actor-Critic
笔记·算法
聚美智数11 小时前
发票勾选认证-进项发票勾选认证-进项发票认证-发票认证API接口介绍
经验分享
LaughingZhu12 小时前
Product Hunt 每日热榜 | 2026-08-04
人工智能·经验分享·深度学习·神经网络·产品运营
Mxzx品牌13 小时前
佛山招聘软件哪个好:【帅聘网】匹配度高
笔记·其他·生活