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 启动内核

相关推荐
问心无愧05131 小时前
ctf show web入门48
android·前端·笔记
咸甜适中1 小时前
rust语言学习笔记Trait之Default(默认值)
笔记·学习·rust
半导体守望者1 小时前
RF电源架构设计匹配器设计步骤功率放大器拓扑图滤波器设计电路布局设计指南
经验分享·笔记·功能测试·自动化·制造
05候补工程师1 小时前
ROS 2 入门:从零实现小海龟 (Turtlesim) 的手动控制与自动化绘圆
运维·经验分享·python·ubuntu·机器人·自动化
Kang.lee1 小时前
2026.5.12【芯片设计面试经验分享】上海车载芯片设计公司
经验分享·面试·职场和发展
智者知已应修善业1 小时前
【51单片机一个按键切合初始流水灯按一下对半闪烁按一下显示时间】2023-10-16
c++·经验分享·笔记·算法·51单片机
奋斗的小乌龟2 小时前
langchain4j笔记-03
笔记
问心无愧05132 小时前
CTF show web入门45
android·前端·笔记
nnsix2 小时前
设计模式 - 单例模式 笔记
笔记·单例模式·设计模式