嵌入式开发学习(2)<S5PV210启动过程详解>
基本概念:
内存:
SRAM 静态内存 特点:容量小、价格高,优点:不需要软件初始化,上电就能用。
DRAM 动态内存 特点:容量大、价格低,缺点:上电不能用,需要软件初始化。
单片机中:内存需求量小,而且希望开发尽量简单,适合全部用SRAM。
嵌入式系统:内存需求量大,而且没有NorFlash等可启动介质。(介于单片机和PC机中间)。
PC机:内存需求量大,而且软件复杂,不在乎DRAM的初始化开销,适合全部用DRAM。
外存:
NorFlash 容量小,价格高,可以和cpu总线式相连,上电cpu直接能读取。所以一般用来作启动。
NandFlash(跟硬盘一样,容量大,价格低,缺点:不能总线式访问,不能上电cpu直接读取,需要cpu先运行一些软件,然后通过时序接口读写)。
所以
一般的PC机都是:很小容量的BIOS(NorFlash)+很大容量的硬盘(类似于NorFlash)。
一般的单片机:很小容量的NorFlash + 很少容量的SRAM。
嵌入式系统:因为NorFlash很贵,所以现在的嵌入式系统不倾向于用NorFlash,直接用:外接的大容量的NandFlash+外接大容量的DRAM+Soc内置SRAM。
S5PV210启动过程:
S5PV210的启动方式:外接的大容量的NandFlash+外接大容量的DRAM+Soc内置SRAM。
实际上启动还要更复杂一些,210内置了一块96kb大小的SRAM(叫iRAM),还有一块内置的64kb的NorFlash(iROM)。
第一步:CPU上电后先从内部的IROM中读取预先设置的代码(BL0),并执行。这一段IROM代码做了一些基本的初始化(cpu始终,看门狗。。。)(这一段IROM代码是三星出厂前设置的,三星也不知道我们板子上将来要接什么样的DRAM,因此这一段代码不负责初始化外接的DRAM的,因此这一段代码只能初始化SoC内部的东西);然后这一段代码会判断我们选择的启动模式(我们可以设置硬件开关可以改变板子的启动模式)然后从外部存储器读取相应的第一部分(BL1,16kb)启动代码(uboot)到内置的SRAM(iRAM)。
第二步:从iRAM去运行上一步读取来的代码(BL1 16kb),BL1负责初始化NandFlash,然后将BL2读取到iRAM(剩余的80kb)
第三步:从iRAM运行BL2,BL2初始化DRAM(SDRAM),然后将OS读取到DRAM(SDRAM)中,然后启动OS,启动过程结束。
下面是详细的启动过程流程图:
cup加电后,从三星内置的IROM开始启动,判断选择的启动模式:
1、如果选择的是SD启动,则先尝试从SD通道0(内置4GiNAMD卡)启动,如果通道0启动失败,则尝试从通道2启动,如果通道2启动失败,则整个启动彻底失败。
2、如果选择的是USB启动,则去读USB接口的代码。