嵌入式开发学习(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的NorFlashiROM)。

第一步: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接口的代码。

原文地址:https://www.cnblogs.com/airduce/p/7492383.html