1,S5PV210的启动过程
(1)iROM:iROM(价格最贵)在0地址处,与CPU总线式连接,上电就会执行,和norflash类似。210启动时会首先执行内部的固件代码,三星公司出厂前内置的代码段,称为BL0。BL0部分包括对SD卡、Nandflash等SOC内部硬件进行初始化并判断系统启动方式,找到外部用来启动系统的存储器,并将存储器中的启动代码(Bootloader)拷贝到SRAM中。
注释:不论是arm的何种处理器,其都是从0x00地址处开始执行程序。IROM上电能直接执行是因为不需要进行初始化,总线式访问,而SD卡之类的需要通过时序实现,需要初始化才能使用。BL0空间有限,所以做最重要的事,进行必要的初始化,不然无法使用SD卡等设备。
(2)Boot device:用来存放启动代码、内核、文件系统的外设存储器,例如Nandflash、SD卡、SPIflash等(价格低、时序访问,需要初始化)。iROM部分的固件代码会自动判断从哪里获取启动代码,一般看不到固件代码但是芯片手册会告诉我们固件代码所支持的外设存储器,只需要将启动代码放在存储器中,固件代码会将他拷贝到SOC内部的SRAM中。
(3)SRAM:三星210芯片有96KB(价格贵、总线式访问),固件代码将Uboot中的前16KB拷贝到SRAM中运行,这16KB代码叫BL1,BL1中要完成关看门狗、设置栈、开iCache、初始化DDR、从SD卡复制BL2到DDR中特定位置,跳转执行BL2。如果BL2小于80KB则被拷贝到SRAM中运行,而实际Uboot至少大于280KB,所以BL1汇编代码还要负责将(BL1+BL2)拷贝到DDR中运行(利用ldr pc, =main这种方式以远跳转从SRAM中运行的BL1跳转到DDR中运行的BL2)。
注释:三星210SRAM只有96KB,而其他厂商可能有300KB,不分BL1与BL2,一次读取完Uboot,不经过第4步&