大家都知道,S3C6410支持多种启动模式,启动模式的选择通过设置OM【4:1】引脚值设定。其中OM【4:1】=0011时为选择Nand模式,OM【4:1】=1111时为选择iROM模式。
目前我用的开发板是tiny6410,通过查看开发板原理图发现tiny6410支持两种启动模式(通过S2-Config选择,S2开关控制OM【4:3】引脚值):
1.
S2朝上拨动,OM【4:3】=11,OM【4:1】=1111,此时S3C6410选择iROM启动模式。GPN【15:13】=000表明处理器识别SD/MMC类型的Nandflash。
系统现在处于SDBOOT模式,根据友善提供的教程:准备1张2G的SD卡,通过SDflasher将友善自主研发的superboot.bin文件烧录到SD卡中,复制u-boot.bin、内核映像、文件系统映像到SD卡上,同时配置FriendlyARM.ini文件。
正常情况下,OM【4:1】=1111时,处理器上电后的启动流程如下:
1.1.处理器上电后,OM[4:1]=1111,运行iROM中的程序(芯片出厂时已经固定的),这个程序被称为Bootloader0(BL0),它会做一些初始化的工作。
1.2. 然后根据GPN[15:13]的管脚设置,选择从相应的设备(SD/MMC/OneNand/Nand)中的指定区域读取4KB的程序到SteppingStone中运行,这段代码被称为Bootloader1(BL1)。
1.3. BL1可以初始化系统时钟,UART,SDRAM等设备,然后拷贝Bootloader2(BL2)到SDRAM中。
1.4. 跳转到SDRAM中的BL2,继续运行,BL2可以支持更强大的功能,可以将OS加载到SDRAM中,然后运行OS。
问题1:tiny6410开发板是如何在OM【4:1】=1111模式下执行复制SD卡里的映像内容到Nandflash的?
2.
S2朝下拨动,OM【4:3】=00,OM【4:1】=0011,此时S3C6410选择Nand启动模式。GPN【15:13】引脚的值对处理器不起作用。
问题2:这种模式下处理器上电后,会运行iROM中的程序吗?还是直接从Nandflash中的指定区域读取4KB的程序到SteppingStone中运行。也就是BL0这个阶段执行吗?
希望大家踊跃发言,互相学习!