一个嵌入式系统从软件角度来看分为三个层次:

  1. 引导加载程序
    包括固化在固件(firmware)中的boot程序(可选),和BootLoader两大部分。
  2. Linux内核
    特定于嵌入式平台的定制内核
  3. 文件系统
    包括了系统命令和应用程序。

BootLoader概念

BootLoader 就是在操作系统运行之前运行的一段小程序。通过这段小程序,可以初始化硬件设备,从而将系统的软硬件系统带到一个合适的状态,以便为最终调用操作系统做好准备。

为什么需要进行 bootloader 移植?

  1. 每种不同的CPU体系结构都有不同 BootLoader。除了依赖于CPU的体系结构外,BootLoader 还依赖于具体的嵌入式板级设备的配置,比如板卡的硬件地址分配,外设芯片的类型等。
  2. 这就是说,对于两块不同的开发板而言,即使它们是基于同一种CPU而搭建的,但如果它们的硬件资源或配置不一致的话,要想在一块开发板上运行的 BootLoader 程序也能在另一块板子上运行,还是需要修改。

BootLoader 的启动流程

BootLoader 的启动过程可分为单阶段(Single-Stage)和多阶段(Multi-Stage)两种,通常的 BootLoader 具有更复杂的功能,更好的可移植性。从固态存储设备上启动的 BootLoader 大多采用两阶段,即启动过程可以分为 stage1 和 stage2:stage 1完成初始化硬件,为 stage2 准备内存空间,并将 stage2 复制到内存中,设备堆栈,然后跳转到stage 2.

stage 1通常包括以下步骤:

  • 硬件设备初始化
  • 为加载 BootLoader 的stage 2 准备RAM空间
  • 拷贝 BootLoader 的stage 2 到RAM空间
  • 设置好堆栈
  • 跳转到 stage 2 的 C 入口点

stage 2通常包括以下步骤:

  • 初始化本阶段要使用到的硬件设备
  • 将内核映像和根文件系统映像从 flash 上读到 RAM 中
  • 调用内核

内存分布

嵌入式之旅之bootloader介绍

相关文章:

  • 2021-09-13
  • 2021-12-21
  • 2022-12-23
  • 2021-12-20
  • 2022-12-23
  • 2022-01-10
  • 2022-01-05
  • 2022-01-07
猜你喜欢
  • 2022-12-23
  • 2021-09-20
  • 2021-09-16
  • 2022-01-17
  • 2022-12-23
  • 2021-04-05
  • 2021-06-06
相关资源
相似解决方案