一、内存与外存
1、内存:(内存就是一块电路)
1.1、SRAM 静态内存
优点:不需要软件初始化直接上电就能用
缺点:容量小、价格高
1.2、DRAM 动态内存(平时所说的内存条)
优点:容量大,价格低
缺点:上电后不能直接使用,需要软件初始化之后才可以使用
1.3、应用:
(1)单片机中:内存需求量小,而且希望开发尽量简单,适合全部用SRAM。
(2)嵌入式系统:内存需求量大,而且没有NorFlash等可启动介质。
(3)PC机中:内存需求量大,而且软件复杂,不在乎DRAM的初始化开销,适合全部使用DRAM.
2、外存
2.1、NorFlash
缺点:容量小,价格高
优点:可以和CPU直接总线式相连,CPU上电后可以直接读取,所以一般用作启动介质。
2.2、NandFlash(与硬盘一样)
优点:容量大,价格低
缺点:不能总线式访问,也就是说不能上电CPU直接读取,需要CPU先运行一些初始化软件,然后通过时序接口读写。
2.3、应用
(1)一般PC机:很小容量的BIOS(NorFlash)+ 很大容量的硬盘(类似于NandFlash) + 大容量的DRAM(动态内存)。
先给CPU上电后直接读取BIOS中的启动硬盘代码和启动内存(DRAM)代码,然后才启动硬盘,读取硬盘中的代码。
(2)一般的单片机:很小容量的NorFlash + 很小容量的SRAM
(3)嵌入式系统:因为NorFlash很贵,所以现在很大嵌入式系统倾向于不用NorFlash,直接使用:外接的大容量Nand + 外接的大容量DRAM + SoC内置的SRAM。
(4)S5PV210使用的启动方式是:外接的大容量的Nand + 外接大容量DRAM + SoC内置SRAM。210内置了一块96KB大小的SRAM(叫iRAM),同时还有一块内置的64KB的NorFlash(叫iROM)。
二、S5PV210的启动过程是 :
1、资料显示
①iROM可以做初始启动:初始化系统时钟,设备特定的控制器和启动设备。
②iROM引导代码可以加载引导载入SRAM。引导加载程序称为BL1。然后在安全引导模式下,iROM验证BL1的完整性。
③BL1将执行,BL1引导代码可以加载引导载入SRAM,引导加载程序称为BL2,然后在安全引导模式下验证BL2的完整性。
④BL2将执行,BL2 控制DRAM控制器初始化,加载操作系统数据更快。
⑤最后,跳转到操作系统的起始地址。这将为系统的使用创造良好的环境。
2、 S5PV210的启动过程
第一步:首先,CPU上电后先从内部IROM(NorFlash)中读取预先设置的代码(BL0),执行。这一段IROM代码做了一些基本的初始化(CPU时钟、关看门狗···),这一段IROM代码是三星出厂前设置的,三星也不知道我们板子上将来接的是什么样的DRAM,因此这一段代码是不能负责初始化外接的DRAM的,只能初始化SoC内置的东西。这一段代码(BL0)会判断我们选择的启动模式(我们通过硬件的跳线(即拨码开关)可以选择不同的启动方式),然后从相应的外部存储器中读取第一部分启动代码(BL1,大小为16K)到内置SRAM中。
第二步:从内置SRAM中去运行刚才上一步读取来的启动代码(BL1,16KB),然后执行,代码BL1负责初始化NandFlash,然后将代码BL2读取到SRAM中(剩余的80KB)。
第三步:从内置SRAM中运行刚才读取到的BL2(80KB),BL2负责初始化DRAM,然后将OS(操作系统)从外部存储器读取到DRAM,然后运行OS(操作系统),启动过程结束。
2.1 S5PV210的所有启动
-
- 先1st启动,通过OMpin选择启动介质
- 再2nd启动,从SD2
- 再Uart启动(串口启动)
- 再USB启动
2.2 iROM(BL0)启动顺序(参见2.3 V210启动图)
1、关看门狗定时器
2、初始化指令缓存
3、初始化栈区域(参见第2.5章的“内存映射”)
4、初始化堆区域。(参阅第2.5章“记忆地图”)
1—4一般都是用汇编语言写的。后边才能用C语言写。
5、初始化块设备复制函数。(参阅《装置复制功能》第2.7章)
6、设置系统时钟。(参阅第2.11章的“时钟配置”)
7、将BL1复制到内部SRAM区域(参见第2.7章的“设备复制功能”)
8、验证BL1的校验和。如果校验失败,iROM将尝试第二次启动。(SD / MMC通道2)
9、检查它是否是安全引导模式。
如果安全键值是用S5PV210编写的,那么它就是安全引导模式。
如果是安全引导模式,请验证BL1的完整性。
10、跳转到BL1的开始地址
2.3、 V210引导图
2.4、第1次启动失败时的第2次启动顺序
2.5、SoC通过OMpin来识别外部启动介质
2.6、开发板上的拨码开关
2.7、体验从SD0的eMMC启动
开发板收到默认就是从eMMC启动,内部预先烧录了android。
101100 |
2.8、从SD2启动
- 可以使用外置SD卡从SD2通道启动,但这需要先破坏板载的eMMC中的android镜像。破坏方法见九鼎官方的裸机教程文档《x210v3开发板裸机教程.pdf》中2.5.2节(P19)
- OMpin设置和SD0启动一样
2.9、USB调试模式
2.10、总结
- 拨码开关设置我们只需动OM5即可,其他几个根本不需要碰。需要SD启动时OM5打到GND,需要USB启动时OM5打到VCC
- 可以先不销毁eMMC中的android,而使用USB启动来做裸机调试。之后课程中我们会使用USB启动和SD卡启动两种方式共同来完成实验,让大家对比学习。