三星S5PV210的启动过程详解

时间:2024-04-14 14:02:44

S5PV210要使用iROM引导加载程序,需要几个硬件功能:

三星S5PV210的启动过程详解
S5PV210微处理器是基于Cortex A8的,SoC内内置了一块大小为64KB的iROM(NandFlash类型)和一块大小为96KB的SRAM(iRAM)。
还有各种类型的控制器,包含:SDRAM控制器、4位/8位的高速SD/MMC控制器、NandFlash控制器、OneNand控制器、eSSD控制器、UART/USB控制器。

三星S5PV210使用的启动方式

外接的大容量NandFlash + 外接的大容量DRAM + SoC内置SRAM。

启动过程

先看一张图,概述其启动大致过程:
三星S5PV210的启动过程详解
1.先从iROM进行初始启动:初始化系统时钟、设备特定控制器和引导设备。
2.将引导加载程序加载到SRAM。引导加载程序称为BL1。然后,在安全引导模式的情况下,iROM验证BL1的完整性。
3.将执行BL1:BL1将加载在SRAM上称为BL2的剩余引导加载程序,然后BL1在安全引导模式下验证BL2的完整性。
4.将执行BL2:BL2初始化DRAM控制器,然后将OS数据加载到SDRAM。
5.最后,跳转到操作系统的开始地址。这将为使用系统创造良好的环境。

启动过程详解:
三星S5PV210的启动过程详解

1.CPU上电后先从内部iROM中读取预先设置的代码(称为BL0)放置在内部64KB的 ROM 中执行。这一段iROM代码首先会初始化基本的系统功能,如初始化时钟、指令cache(指令缓存)、关闭看门狗、栈和堆。这段代码是三星出厂前设置的,三星也不知道我们板子上将来接的是什么样子的DRAM,因此这段代码是不能负责初始化外接的DRAM的,因此这段代码只能初始化SoC内部的东西。

2.该iROM代码会判断我们选择的启动模式(从引导设备选择),然后将第一个引导加载程序镜像(称为BL1,大小为16KB)从特定的引导设备加载到内部96KB的 SRAM中。该引导设备由启动模式(OM)引脚选择。根据安全引导键值, iROM代码可以对第一个引导加载程序镜像进行完整性检查(即检查其校验和),若检验和正确,则执行下一步,否则跳转到第二启动方式。

3.再从SRAM中运行刚读取到的第一引导加载程序(BL1)去加载第二引导加载程序(BL2,大小为80KB),然后根据安全引导键值检查第二引导加载程序的完整性。这一段代码负责初始化NandFlash,然后将第二引导加载程序(BL2)读取到 iRAM(剩余的80KB),然后运行。

4.然后从iRAM中运行第二个引导加载程序(BL2),这部分代码负责初始化系统时钟、UART和DRAM控制器。初始化DRAM控制器后,将OS镜像(操作系统)从引导设备加载到DRAM中。根据安全启动键值, 第二个引导加载程序可以对操作系统镜像进行完整性检查。

5.最后,跳转到操作系统的开始地址,开始运行操作系统。

至此,整个启动过程结束!

上面说的过程是在第一启动方式成功的情况下的流程,如果第一启动方式不成功,那么S5PV210就会跳转到第二启动方式去启动,第一启动方式是可以通过OM引脚来选择从哪个外存启动的,然而第二启动方式则是固定从SD卡的通道2启动。具体的实现方式与上面的第一启动方式差不多,只不过外存介质换了,依旧是从步骤2开始执行。如图:
三星S5PV210的启动过程详解
注意:这是非安全启动模式的情况。在安全启动模式下,BL1的验证完整性应在第一和第二启动步骤的校验和后面添加。

如果第二启动方式即SD卡通道2启动失败,则跳转至UART启动,UART失败,则跳转至USB方式启动,再不行,那启动整个过程就彻底失败了。

启动设备选择:
三星S5PV210的启动过程详解

其中:
引导加载程序主要由iROM、第一和第二引导加载程序组成。

iROM代码:包含小而简单的代码,它与平台无关,存储在内部内存中。
第一引导加载程序:包含小而简单的代码,它与平台无关,存储在外部内存设备中…与安全引导有关。
第二引导加载程序:包含复杂的代码,它是特定于平台的,并存储在外部内存设备中。

最后一点:
因为启动代码的大小是不定的,有些公司可能96KB就够了,有些公司1MB都不够。
三星的解决方案是:把启动代码分为两半(BL1和BL2),这两部分协同工作完成启动。