S5PV210的启动过程详解(一)

来源:互联网 发布:浪漫主义文学 知乎 编辑:程序博客网 时间:2024/05/16 11:46

内存:
SRAM (静态内存)
容量小、价格高,优点是不需要软件初始化上电就能用
DRAM(动态内存)
容量大、价格低,缺点就是上电后不能直接使用,需要软件初始化后才能使用。

外存:
NorFlash:特点是容量小,价格高,优点是可以和CPU直接总线式相连,CPU上电后可以直接读取,所以一般用作启动介质。(MMap可以看到)
NandFlash(硬盘一样):特点是容量大、价格低,缺点是不能总线式访问,也就是说不能上电CPU直接读取,需要CPU先运行一些初始化软件,然后通过时序接口读写。

一般的PC机:很小容量的BIOS(NorFlash)+ 很大容量的硬盘(类似于NandFlash)+ 大容量的DRAM
BIOS先启动,然后对硬盘和DRAM操作,启动后将需要的代码和数据拷贝到DRAM运行。

嵌入式系统:因为NorFlash很贵,所以现在很多的嵌入式系统倾向于不用NorFlash,直接用 NandFlash + DRAM.
直接用:外接的大容量的Nand + 外接大容量的DRAM + SoC内置SRAM
SRAM初始化NandFlash和DRAM,然后将NandFlash拷贝到DRAM运行。

S5PV210使用的启动方式:外接大容量Nand + 外接大容量DRAM + SoC内置SRAM
实际上210内置了一块96KB大小的SRAM(iRAM),同时还有一块内置的64KB大小的NorFlash(iROM)。210启动过程:
第一步:CPU上电后先从内部IROM中读取预先设置的代码(BL0),执行。这一段IROM代码首先做了一些基本的初始化(CPU时钟,关看门狗…)(这一段IROM代码是三星出厂前设置的,三星也不知道我们板子上将来接的是什么样的DRAM,因此这一段IROM是不能负责初始化外接的DRAM的,因此这一段代码只能初始化SoC内部的东西);然后这一段代码会判断我们选择的启动模式(我们通过硬件跳线可以更改板子的启动模式),然后从相应的外部存储器去读取第一部分启动代码(BL1,大小为16KB)到内部SRAM。
第二步:从IRAM去运行刚上一步读取来的BL1,然后执行。BL1负责初始化NandFlash,然后将BL2读取到IRAM(剩余的80KB)

这里写图片描述

思路:
因为启动代码的大小是不定的,有些公司可能96KB就够了,有些公司可能1MB都不够。三星的解决方式是:把启动代码分为2半(BL1和BL2),这两部分协同工作完成启动