U-Boot
BootLoader简介
一个嵌入式系统从软件角度来看可以分为三个层次:
- 引导加载程序
包括固化在固件(firmware)中的boot程序(可选),和bootloader两大部分 - Linux内核
特定于嵌入式平台的定制内核 - 文件系统
包括系统命令和应用程序
BootLoader就是在操作系统运行之前运行的一段小程序。通过这段小程序可以初始化硬件设备,从而将系统从硬件环境带到一个合适的状态,以便最终调用操作系统做好准备。
BootLoader的启动过程可分为单阶段(single-stage)和多阶段(multi-stage)两种,通常过阶段的BootLoader具有更复杂的功能,更好的可移植性,从固态存储设备上启动的BootLoader大多采用两阶段,即启动过程可以分为stage1和stage2:stage1完成初始化硬件,为stage2准备内存空间,并将stage2复制到内存中,设置堆栈,然后跳转到stage2.
stage1(汇编代码)通常包括以下步骤:
- 硬件设备初始化(主要是CPU内部寄存器)
- 为加载BootLoader的stage2准备RAM空间
- 拷贝BootLoader的stage2到RAM中
- 设置好堆栈(目的:为了运行c语言,创建环境)
- 跳转到stage2的c入口点
st