uboot核内核启动流程

发布时间 2023-05-22 17:16:13作者: 韩若明瞳

bootloader 启动流程和功能说明

bootloader 基本功能说明

  • 有的程序在启动bootloader之前会运行一段 固化程序
  • bootloader 启动过程分单阶段和多阶段
  • 多阶段可以提供更复杂的功能和更好的移植性
  • 一般从固态存储设备启动分两个阶段

第一个阶段 bootloader 启动说明

源码 U-boot/arch/arm/cpu/xxx(armv7)/start.S

  • 硬件设备初始化(关闭 看门口, 关中断, 设置CPU的速度和时钟频率, RAM初始化)
  • 为加载第二阶段的 Bootloader 的代码准备 RAM 空间(初始化RAM芯片,使可用, 调用lowlevel_init使外接SDRAM可用)
  • 复制 Bootloader 的第二阶段代码到 RAM 空间
  • 设置好栈
  • 跳转到第二阶段代码的入口 C 处

第二个阶段 bootloader 启动阶段

  • 初始化本阶段要使用的硬件设备(CPU中断, 系统时钟,定时器, 检查flash, 串口初始化, 检测系统内存映射)
  • 检测系统内存映射
  • 将内核映像和根文件系统映像从 flash 上读到 RAM 空间中
  • 为内核设置启动参数
  • 调用内核, 至少初始化串口用于调试

bootloader 和 内核交互

  • 单向的交互
  • bootloader 将各类参数传递给内核, 由于不能同时运行, 传递办法只有一个: 将参数放在某个约定的地方
  • 然后再启动内核, 内核从约定的地方获取参数