S5PV210的启动过程详解
2022-08-03 来源:csdn
S5PV210芯片简介:
S5PV210是ARM架构(crotex_A8内核)的32位芯片,理论上支持4G的内存空间,但因为是统一编址,实际只支持1.5G的内存,内置了iROM和iRAM。启动方式由下图所示:
启动方式详解:
(1)上电后首先从iROM中读取预先设置的代码BL0,BL0会初始化芯片内部,包括CPU的时钟、关看门狗、初始化栈等等。这一段代码时出厂的时候内置的,因为不知道将来芯片会接哪些型号的外设,所以没法去初始化外设,都是初始化芯片内部。BL0其中有一个特别重要的功能,就是判断启动模式,也就是判断BL1要通过哪种存储介质读取,比如图中有NorFlash、eSSd、NandFlash、USB等。Soc判断启动模式的方式是去读取Soc的某几个引脚电平高低来判断启动模式,可以通过外部的硬件开关来选择启动模式。在这里我们可选择的是第一启动方式,第二启动方式是默认(SD/MMC channel 2)的。当第一启动方式失败后,会尝试第二启动方式。如果第二启动也失败,则此次启动失败。
(2)通过BL0选择的启动方式,去对应的介质读取BL1(BL1最大为16KB,数据手册写的是BL1的长度可以配置,但是看到U_boot里都是写死的16KB)代码到iRAM,BL1代码是我们写的启动代码,也就是bootloader的一部分。这里隐藏了一个细节,如果BL1是在oneNand、eSSD卡等存储介质里,是先需要一定的时序去初始化存储器才能读取数据的。具体的初始化时BL0里做的,当BL0里判断出了启动方式,会调用内置的Device Copy Function函数去初始化储存器的。
(3)BL1执行完后,将BL2(启动代码剩下的部分,最大不超过80KB)读取到iRAM中执行。
(4)BL1+BL2需要完成一个重要的作用,就是初始化DDR内存,然后把OS加载内存中。
(5)跳转到DDR中,把剩下的启动代码执行完毕,将OS运行起来,到此整个启动过程结束。
补充:
以上是三星建议的启动方式,实际的U-boot并不是这样。三星建议的启动方式,有个局限,整个的启动代码不能超过96KB(iRAM为96KB)。实际的操作是,BL1去初始化DDR,并且把整个bootloader和OS都加载到DDR中,然后跳转到DDR中去执行DDR里的那份BL2代码。这样的好处是bootloader可以超过96KB,不用受到iRAM的限制。
下一篇:S5PV210中断的介绍与配置