器件了解
- 内存:
SRAM 静态内存
特点就是容量小、价格高,优点是不需要软件初始化直接上电就能用
DRAM 动态内存
特点就是容量大、价格低,缺点就是上电后不能直接使用,需要软件初始化后才可以使用。
SRAM (Static Random Access Memory) 和 DRAM (Dynamic Random Access Memory) 都是计算机中常见的内存类型,但它们的工作原理和性能有所不同。
SRAM:
SRAM是静态随机存取存储器,它的特点是数据在不供电的情况下也能保持,因此访问速度非常快,通常用于高速缓存(Cache)和处理器内部的数据结构。
它不需要周期性的刷新操作,因为数据不会因电力断开而丢失。
由于SRAM的非易失性特性,它功耗较高,成本也相对昂贵。
DRAM:
DRAM是动态随机存取存储器,数据存储在电容器上,需要定期刷新以防止数据丢失。刷新频率通常是几千到几万次每秒。
主要用于主内存(Main Memory)或系统内存,比如RAM,容量比SRAM大得多,但访问速度相对较慢。
DRAM的功耗较低,但由于其需要频繁刷新,设计上通常使用了DRAM刷新定时器来管理刷新操作。
单片机中:内存需求量小,而且希望开发尽量简单,适合合全部用SRAM
嵌入式系统:内存需求量大,而且没有NorFlash等可启动介质
PC机:内存需求量大,而且软件复杂,不在乎DRAM的初始化开销,适合全部用DRAM
-
外存:
Norflash 特点是容量小,价格高,优点是可以和CPU直接总线式相连,CPU上电后可以直接读取,所以一般用作启动介质。NandFlash (跟硬盘一样):特点是容量大,价格低,缺点是不能总线式访问,也就是说不能上电CPU直接读取,需要CPU先运行,些初始化软件,然后通过时序接口读写
NorFlash,全称是“Non-Volatile RAM”,中文通常称为“非易失性闪存”。它是一种固态存储器,用于持久性数据存储,常见于嵌入式系统、U盘、SD卡等设备中。与NandFlash相对的是NOR(Normal RAM),NOR闪存的特点是可以像普通RAM一样被随机读写,但它的速度相对较慢,功耗较高。
NandFlash的优势在于:
高密度:相同体积下能存储更多的数据。
成本效益:生产成本低,适合大量生产。
低能耗:与DRAM相比,NandFlash在休眠模式下几乎不消耗电力。
集成度高:现代NandFlash芯片集成了控制逻辑和接口,简化了系统设计。
然而,NandFlash也有一些限制:
写入速度慢:尤其是对于随机写操作,不如SDD或NOR快。
有限的写次数:每块NandFlash都有一个写入次数限制,超过后可能需要特殊处理或更换。
容易出现坏块:长时间使用后,可能会出现不可修复的坏块。
所以一般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,大小为16K)到内部SRAM。
第二步:从SRAM去运行上一步读取过来的启动代码,然后去执行。这段启动代码就会负责初始化Nand,初始化DRAM,初始化板卡,然后将OS从Nand读取到DRAM,然后运行。
第二步:从IRAM去运行刚上一步读取来的BL1(16KB),然后执行。BL1负责初始化NandFlash,然后将BL2读取到IRAM(剩余的8OKB)然后运行
第三步:从IRAM运行BL2,BL2初始化DRAM,然后将OS读取到DRAM中,然后启动OS,启动过程结束。
资料:S5PV210_iROM_ApplicationNote_Preliminary_20091126.pdf
思路:因为启动代码的大小是不定的,有些公司可能96kb就够了,有些公司可能1MB都不够。所以刚才说的2步的启动方式不合适。
解决方案是:把启动代码分为2半(BL1和BL2),这两部分协同工作来完成启动。
- BL0做了什么?
关看门狗
初始化指令cache
初始化栈
初始化堆
初始化块设备复制函数device copy function
设置SoC时钟系统
复制BL1到内部IRAM(16KB)
检查BL1的校验和
跳转到BL1去执行
- S5PV210的所有启动
CM[5]= 0
先1st启动,通过OMpin选择启动介质
再2nd启动,从SD卡通道2
再Uart启动
再USB启动
板子上选择不同的启动模式
从SD0的eMMC启动和外置SD卡从SD2通道启动是串联关系,OMpin设置保持不变
OM0-OM5
101100
使用USB启动来做裸机调试
OM0-OM5
101101
1xxxx1
总结
了解内存、外存的区别,对启动的需求
理解S5PV210 的启动大致流程
学习记录,侵权联系删除。
来源:朱老师物联网大课堂