先知者为师
分类: LINUX
2013-05-15 22:56:05
S5PC100处理器采用64位内部总线构架,包括强大的硬件加速器,具有更高的主频和更丰富外设,能适用于对性能和处理能力有更高要求的嵌入式系统应用场合。S5PC100的支持多种启动方式:NAND、SD/MMC、OneNAND、NAND与USB等。流程图大致如下:
从上图可以看出,整个其他过程分为两个阶段:BL0,BL1。
第一阶段:CPU上电后从内部ROM开始执行,在内部ROM有第一个引导程序BL0,BL0从系统指定的外部启动器件(NAND、SD/MMC、OneNAND、NAND与USB)中加载第二个引导程序BL1到内部RAM,同时对BL1进行安全校验。
第二阶段:BL1初始化DRAM控制器,即初始化内存,然后从外部启动器件(NAND、SD/MMC、OneNAND、NAND与USB)中加载OS IMAGE 文件到DRAM中,同时对OS IMAGE进行安全校验,如果正确就引导系统启动。
在S5PC100的文档上大致是这么说的,我用的是S5PC100评估板。它的其他方式大概和上述相同:CPU上电,BL0从NAND(NAND 启动方式)的BLOCK0中加载STEPLDR.BIN到RAM,STEPLDR初始化CPU后再从NAND 中加载EBOOT.BIN到DRAM即内存中;EBOOT.BIN会进一步其他的初始化操作,比如串口等;最后EBOOT.BIN加载OS image 文件到DRAM中,进而引导系统启动。
在整个启动过程中用到了三个引导文件:
ROM中的引导文件(但是不知道具体是什么,应该是CPU自带的启动文件,那位知道介绍一下);
STEPLDR.BIN:引导EBOOT的,该文件被ROM内部的引导文件加载到CPU内部RAM中,这个文件比较小,只有3,4K左右,而已S5PC100的内部RAM为96K,完全没问题。
EBOOT.BIN:这个就不用多说了,做过wince的都知道。
由于能力有限,上述分析也许有误,还望高手指点。
http://blog.csdn.net/figthter_cui/article/details/5842971
/***************************************第二篇文章***************************************
http://blog.csdn.net/guetcw/article/details/5837958
●地址映射
● IRAM
● IROM启动方式:
? NAND Flash
? OneNAND
? MMC or SD Memory including MoviNAND and iNAND
? USB
不支持大于2G MMC卡起动。
● 起动过程:
引导代码分为BL0 (1st boot loader) 和 BL1(2nd boot loader).
BL0固化在内部IROM,CPU复位后首先运行BL0,将存放在外部存储设备中的BL1加载到内部IRAM然后运行BL1。BL1初始化动态内存DRAM,然后将OS加载到DRAM运行OS。
● BL0引导顺序:
1. 初始化PLL和时钟,将其设定为固定值;
2. 初始化栈和堆区域;
3. 初始化指令Cache 控制器;
4. 从外部起动设备中加载BL1;
5. 如果起动安全机制开启,则检查BL1数据完整性;
6. 如果校验通过,则跳转到0x34010地址处运行;
7. 如果校验失败则停止。
?如果从SD/MMC起动,BL0将SD/MMC最后的9KB数据加载到0x34000处运行。
?如果从OneNAND 和NAND起动,BL0将开始的16KB数据加载到0x34000处运行。
?坏块标记位置:如果是512B页的NAND,块坏标记在附加区域的第6个字节,如果是其它NAND,块坏标记在附加区域的第一个字节。
?如果从其它起动设备起动失败,BL0会将一个错误代码写入内部一个寄存器(0xE010841C),然后从USB起动。