通常的启动顺序如下:Boot ROM -> SPL -> BootLoader-> kernel
- Boot ROM是厂商都无法进行更改,固化在芯片内部的ROM;
确定用于启动的设备;
从启动的设备的位置搬移一小段代码(4k/8k/16k)到RAM中运行,即SPL; - SPL(Secondary Program Loader)
SPL 最小代码初始化内存,是一个小型的二进制文件,当系统内存无法完全容纳BootLoader时,需要 SPL 启动BootLoader文件。SPL 是第二个加载(和执行)其他程序的东西。
功能:
初始化DDR;
从启动的设备搬移第二段代码到RAM中,加载BootLoader;(有些SoC是将BootLoader复制到RAM后,再进行DDR初始化;) - BootLoader
- BootLoader vs U-Boot
BootLoader是嵌入式设备中用来启动操作系统内核的一段程序,是基于特定硬件平台来实现的,不同的处理器架构都有不同的BootLoader。
U-Boot(Universal BootLoader)是一种通用的BootLoader,可以用于多种嵌入式CPU。 - 在开发BootLoader之前,先了解一些基本概念和步骤。
- https://zhuanlan.zhihu.com/p/556181275 提供了一个全面的教程,介绍了BootLoader的基本概念、工作原理、实现方法等。
- https://zhuanlan.zhihu.com/p/271663577 提供了一个关于BootLoader的简介,介绍了BootLoader的定义、作用、特点等。
- https://zhuanlan.zhihu.com/p/336441128 提供了一个关于BIOS、UEFI和Boot Loader的文章,介绍了它们之间的区别和联系。 - 开发BootLoader的资源:
- https://www.apriorit.com/dev-blog/66-develop-boot-loader 提供了一个全面的教程,介绍了如何编写自己的BootLoader。
- https://embetronicx.com/tutorials/microcontrollers/stm32/bootloader/bootloader-basics/ 提供了一个STM32 BootLoader教程,介绍了BootLoader的基础知识和实现方法。
- https://interrupt.memfault.com/blog/how-to-write-a-bootloader-from-scratch 提供了一个从零开始编写BootLoader的教程,介绍了为什么需要BootLoader,如何实现以及如何使BootLoader更有用。
- BootLoader vs U-Boot
作者:西伯尔
出处:http://www.cnblogs.com/sybil-hxl/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。