声明:本文由个人学习过程中整理而成,转载请注明出处。

1、bootloader介绍

(1)对于计算机系统,从开机上电到操作系统的启动需要一个引导程序叫做bootloader(启动加载程序)。

通过bootloader建立了适当的系统软硬件环境,为最终调用操作系统内核做好准备。

(2)对于嵌入式系统的bootloader是基于特定的硬件平台实现的,无法通用。

bootloader不仅依赖CPU架构,而且还依赖板级设备的配置。


2、uboot主要的作用就是启动操作系统内核。

linux内核设计成可以被传参。

可以在uboot中准备好要传给linux内核的一些参数,然后放在内存中特定位置等待linux内核获取。

内核启动后会到特定位置去取uboot留给他的参数,然后内核解析这些参数用来指导linux内核的启动过程。


3、uboot的启动方式:uboot大小随意,假定为200KB。

启动过程:先开机上电后BL0(iROM)运行,BL0会加载外部启动设备中的uboot的前16KB(BL1)到SRAM中去运行,BL1运行时会初始化DDR,然后将整个uboot搬运到DDR中,然后用一句长跳转(从SRAM跳转到DDR)指令从SRAM中直接跳转到DDR中继续执行uboot直到uboot完全启动。


4、S5PV210的启动方式:内置SRAM(iRAM)的容量是96KB,内置的NorFlash(iROM)的容量是64KB。大致可以分三步。

第一步:CPU先读取运行iROM里面设定好的代码,这一段代码会做一些基本的初始化(比如关看门狗...),然后选择判断启动模式,在相对应的外部存储器中读取一部分代码(BL1,大小16KB)到iRAM。

第二步:运行、执行读取到iRAM中的BL1,负责将BL2(大小80KB)读取到iRAM中。

第三步:运行、执行读取到iRAM中的BL2,负责初始化DRAM,然后将OS读取到DRAM中启动OS。


参考资料:《uboot和系统移植---朱有鹏老师》