uboot启动主要分为两个阶段,第一个阶段由start.S引导,主要进行SoC内部器件的初始化,代码运行在SRAM中。第二阶段由start_armboot引导,主要进行板级的硬件初始化,代码运行在DRAM中。
uboot的启动过程:
- x210内部的iROM内的BL0代码:初始化系统时钟,特定设备(与启动介质相关)控制器并且启动设备
- BL0加载bootloader的前16KB到SRAM,这段bootloader就是BL1 ( uboot中的start.S 前16KB )。
- BL1( start.S )继续初始化SoC内部的硬件,之后初始化DRAM并重定位代码到DDR中。最后跳转到第二阶段(BL2)。
- BL2( start_armboot ) 初始化board内SoC外的硬件,还有一些软件的数据结构。将系统的一些数据也复制到DDR中
- 跳转到系统的启动地址。 </