cortex A8是基于ARMv7架构的处理器,主频可以达到1GHz。基于cortexA8的处理器有三星的S5PC100、S5PV210,TI的OMAP3530,全志的A10等。我有个想法就是把u-boot的2个阶段的代码独立。第一阶段代码称为硬件相关BL1,第二阶段代码称为硬件无关BL2。手上刚好有块s5pc100的板子,就介绍s5pc100的启动过程并验证。我把启动过程分为3个阶段BL0、BL1、BL2。BL0是固化在内部ROM上电就执行的一小段程序,我把自己写的boot代码,用于引导u-boot称为BL2,把u-boot的第二阶段代码用于引导内核称为BL2。这是我的理解,在接下来我将依次分析BL0、BL1、BL2,并实现BL1代码引导u-boot,BL2移到内核。
一、什么是BL0
BL0(1st boot loader)是固化在内部ROM上电就执行的一小段程序。BL0从系统指定的外部存储器件(NAND、SD/MMC、OneNAND与USB)中加载第二个引导程序BL1到内部RAM,同时对BL1进行安全检验。启动过程如下:
二、BL0做了些什么
s5pc100芯片手册见2.2FUNCTIONAL SEQUENCE,翻译成中文如下
1.初始化PLL和时钟,将其设定为固定值;
2.初始化栈和堆区域;
3.初始化指令Cache 控制器;
4.从外部起动设备中加载BL1ÿ