class="markdown_views prism-kimbie-light">
简单地说,BootLoader就是在操作系统内核运行之前运行的一段小程序。
通过这段小程序,我们可以
初始化硬件设备、
建立内存空间映射图,从而
将系统的软硬件环境带到一个合适状态,以便为最终调用操作系统内核准备好正确的环境。
在嵌入式系统中,通常并没有像
BIOS 那样的固件程序(注,有的嵌入式CPU也会内嵌一段短小的启动程序),因此整个系统的加载启动任务就完全由
BootLoader 来完成。比如在一个基于ARM7TDMI core的嵌入式系统中,系统在上电或复位时通常都从地址
0x00000000
处开始执行,而在这个地址处安排的通常就是系统的 BootLoader 程序。
而
uboot 其实是 bootloader 的一种,对于每种体系结构,都有一系列开放源码 Bootloader 可以选用。
以 ARM 处理器为例,每种芯片的开发板都有自己的 bootloader ,结果 ARM bootloader 也变得多种多样。最早有为 ARM720 处理器的开发板的固件,又有了 armboot ,StrongARM 平台的 blob ,还有 S3C2410 处理器开发板上的 vivi 等。现在 armboot 已经并入了
U-Boot ,所以
U-Boot 也支持 ARM/XSCALE 平台。
U-Boot 已经成为ARM平台事实上的标准
Bootloader。