内存:
SRAM 静态内存(片上RAM) 特点就是容量小、价格高,优点是不需要软件初始化直接上电就能用
DRAM 动态内存(DDR2DDR3) 特点就是容量大、价格低,缺点就是上电后不能直接使用,需要软件初始化后才可以使用。
单片机中:内存需求量小,而且希望开发尽量简单,适合全部用SRAM
嵌入式系统:内存需求量大,而且没有NorFlash等可启动介质
PC机: 内存需求量大,而且软件复杂,不在乎DRAM的初始化开销,适合全部用DRAM
外存:
NorFlash:特点是容量小,价格高,优点是可以和CPU直接总线式相连,CPU上电后可以直接读取,所以一般用作启动介质。
NandFlash(跟硬盘一样):特点是容量大,价格低,缺点是不能总线式访问,也就是说不能上电CPU直接读取,需要CPU先运行一些初始化软件,然后通过时序接口读写。(EMMC)
所以一般PC机都是:很小容量的BIOS(NorFlash)+ 很大容量的硬盘(类似于NandFlash)+ 大容量的DRAM
一般的单片机: 很小容量的NorFlash + 很小容量的SRAM
嵌入式系统:因为NorFlash很贵,随意现在很多嵌入式系统倾向于不用NorFlash,
直接用:外接的大容量Nand + 外接大容量DRAM + SoC内置SRAM
S5PV210使用的启动方式是:外接的大容量Nand + 外接大容量DRAM + SoC内置SRAM
实际上210的启动还要更好玩一些,210内置了一块96KB大小的SRAM(叫iRAM),同时还有一块内置的64KB大小的NorFlash(叫iROM)。210的启动过程大致是:
第一步:CPU上电后先从内部IROM中读取预先设置的代码(BL0),执行。这一段IROM代码首先做了一些基本的初始化(CPU时钟、关看门狗···)(这一段IROM代码是三星出厂前设置的,三星也不知道我们板子上将来接的是什么样的DRAM,因此这一段IROM是不能负责初始化外接的DRAM的,因此这一段代码只能初始化SoC内部的东西);然后这一段代码会判断我们选择的启动模式(我们通过硬件跳线可以更改板子的启动模式),然后从相应的外部存储器去读取第一部分启动代码(BL1,大小为16KB)到内部SRAM。
第二步:从IRAM去运行刚上一步读取来的BL1(16KB),然后执行。BL1负责初始化NandFlash,然后将BL2读取到IRAM(剩余的80KB)然后运行
第三步:从IRAM运行BL2,BL2初始化DRAM,然后将OS读取到DRAM中,然后启动OS,启动过程结束。
BL0做了什么?
关看门狗
初始化指令cache
初始化栈
初始化堆
初始化块设备复制函数device copy function
设置SoC时钟系统
复制BL1到内部IRAM(16KB)
检查BL1的校验和 跳转到BL1去执行
思路:因为启动代码(uboot)的大小是不定的,有些公司可能96kb就够了,有些公司可能1MB都不够。所以刚才说的2步的启动方式不合适。三星的解决方案是:把启动代码分为2半(BL1和BL2),这两部分协同工作来完成启动。
S5PV210的所有启动
先1st启动,通过OMpin选择启动介质
再2nd启动,从SD2
再Uart启动
再USB启动
上一篇:tq210 内存配置
下一篇:TQ210裸机编程(4)——按键(中断法)
设计资源 培训 开发板 精华推荐
- LTC2483、16 位 ADC 的典型应用,具有简单的驱动输入电流消除和 I2C 接口
- AD9518-1A/PCBZ,AD9518-1A 评估板,2500 MHz 极低噪声 PLL 时钟合成器
- LTC1760CFW 演示板,VIN=12V 至 20V,V OUT1 =4A
- ADR525B 2.5 Vout 高精度并联模式电压基准的典型应用
- Lm309 三端 5V 稳压器的典型应用电路
- MC33074DR2G 高输入阻抗差分放大器的典型应用
- LTC3422 的典型应用 - 具有输出断开连接的 1.5A、3MHz 同步升压型 DC/DC 转换器
- 使用 NXP Semiconductors 的 MKW40Z160VHT4 的参考设计
- AD8330-EVALZ,评估套件是一种易于使用的附件,可用于对 AD8330 可变增益放大器 (VGA) 进行动手评估
- RS232接口