ARM裸机学习之S5PV210启动方式理解

笔者使用的是朱老师的嵌入式及 教程 S5PV210
一.内存映射
专业术语:
ROM:只读存储器,例如硬盘
RAM:随机访问存储器,例如内存
IROM:内部ROM,集成到SoC内部的ROM
IRAM:同理
DRAM:动态RAM 内存
SRAM:静态RAM 内存
SROM:sram 和 rom
DRAM是采用总线型连接,内存映射上有多少空间是DRAM的,那么实际上就只能外接这么多大小的内存芯片,而flash(NandFlash)的连接方式和DRAM不同,其地址总线和数据总线是复用的,读写数据需要先发送命令,不能随机访问。内存映射上的大小并不是实际flash的大小。
所谓总线型连接就是指按照地址总线和数据总线分开的方式来进行cpu和存储器芯片的直接连接。除了DRAM可以进行总线型连接外,NorFlash也可以总线型连接,和DRAM一样直接占用cpu的地址空间。通常NorFlash连接在SROM(图中红色区域)区域中。

二.CPU和外部存储器的接口 2017/10/24 14:51
内存: 内部存储器 用来运行程序的,RAM (DRAM SRAM DDR)
外存: 外部存储器 用来存储东西的,ROM (硬盘 flash SSD)
内存采用直接地址访问,所以是通过地址总线&数据总线的总线式访问的
好处:直接访问,随机访问
坏处: 占用了CPU的地址空间,大小受限
外存采用CPU的外存接口来访问的
好处:不占用CPU的地址空间,
坏处:访问速度没有总线式快,访问时序复杂

SoC常用外部存储器类型
•Nor Flash:最早的FLASH存储器,支持总线式访问,CPU可以像访问内存一样访问,如s3c2440
•Nand Flash: 集成密度高,存储空间较大,分为SCL颗粒和MLC颗粒
•eMMC/iNand/moviNand
eMMC::针对手机和平板电脑等产品的内嵌式存储器标准规格,提供标准接口并管理闪存
iNAND:是SanDisk公司研发的存储芯片,可以简单的看成SD卡或MMC卡芯片化
moviNand是三星公司研发的存储芯片,功能类似于iNand。
•oneNAND: 三星公司研发的结合Nor优点和Nand Flash 高容量存储特点的Flash 
•SD卡/TF卡/MMC卡
•eSSD: Embeded SSD 采用 MLC Nand Flash技术 
•SATA硬盘

Nand Flash的SLC 和MLC对比
SLC(Single-Level Cell )单层单元闪存,每个单元存储一位数据,一般而言,SLC虽然生产成本较高,但在效能上大幅胜于MLC。
MLC(Multi-Level Cell) 多层单元闪存,通过使用大量的电压等级,每一个单元储存两位数据,数据密度比较大。
A.读写速度较慢。相对主流SLC芯片,MLC芯片目前技术条件下,理论速度只能达到2MB左右,因此对于速度要求较高的应用会有一些问题。 
B.MLC能耗比SLC高,在相同使用条件下比SLC要多15%左右的电流消耗。 
C.MLC理论写入次数上限相对较少,因此在相同使用情况下,使用寿命比较SLC短。 
D.MLC的价格比SLC低30%~40%,有些甚至更低。

三.S5PV210的启动过程详解
内存 : 
SRAM 静态内存 特点就是容量小、价格高,优点是不需要软件初始化直接上电就能用 
DRAM 动态内存 特点就是容量大、价格低,缺点就是上电后不能直接使用,需要软件初始化后才可以使用。
单片机中:内存需求量小,而且希望开发尽量简单,适合全部用SRAM 
嵌入式系统:内存需求量大,而且没有NorFlash等可启动介质 
PC机: 内存需求量大,而且软件复杂,不在乎DRAM的初始化开销,适合全部用DRAM
外存:  
NorFlash:特点是容量小,价格高,优点是可以和CPU直接总线式相连,CPU上电后可以直接读取,所以一般用作启动介质。 
NandFlash(跟硬盘一样):特点是容量大,价格低,缺点是不能总线式访问,也就是说不能上电CPU直接读取,需要CPU先运行一些初始化软件,然后通过时序接口读写。
所以一般PC机都是:很小容量的BIOS(NorFlash)+ 很大容量的硬盘(类似于NandFlash)+ 大容量的DRAM 
一般的单片机: 很小容量的NorFlash + 很小容量的SRAM 
嵌入式系统:因为NorFlash很贵,所以现在很多嵌入式系统倾向于不用NorFlash, 
直接用:外接的大容量Nand + 外接大容量DRAM + SoC内置SRAM
S5PV210使用的启动方式是:外接的大容量Nand + 外接大容量DRAM + SoC内置SRAM

S5PV210启动方式理解,图

S5PV210的启动可大致分为五个步骤
1、iROM阶段(BL0) 
2、BL1阶段 
3、BL2阶段 
4、拷贝OS到SDRAM 
5、启动OS
(1)BL0:是指S5PV210的iROM中固化的启动代码
        作用:初始化系统时钟,设置看门狗,初始化堆和栈,加载BL1

(2)BL1:是批在iRAM自动从外扩存储器(nand/sd/usb)中拷贝的uboot.bin二进制文件的头最大16K代码
        作用:初始化RAM,关闭Cache,设置栈,加载BL2

(3)BL2:是指在代码重定向后在内存中执行的uboot的完整代码
        作用:初始化其它外设,加载OS内核

(4)三者之间的关系:(Interal ROM固化代码)BL0将BL1(bootloader的前16KB--BL1)加载到iRAM;BL1然后在iRAM中运行将BL2(剩下的bootloader)加载到SDRAM;BL2加载内核,把OS在SDRAM中运行起来,最终OS是运行在SDRAM(内存)中的。(理解引用网上的一些大佬分析的,如有侵权,提醒删)

iROM都做了些什么?
1、关闭看门狗; 
2、初始化icache; 
3、初始化栈; 
4、初始化堆; 
5、初始化 块设备拷贝函数 ; 
6、初始化PLL,设置系统时钟; 
7、拷贝BL1到内部的SRAM区域; 
8、检查BL1的校验和; 
9、检查是否是安全启动模式; 
10、跳转到BL1的起始代码处。


从图可以看出210在启动的时候首先会判断,系统是从休眠中唤醒还是刚上电,从而决定是重新引导系统还是直接跳转到OS继续执行休眠前的代码;然后还有一个”Checksum OK?”的判断,如果BL1的代码检验出错会自动跳转尝试用 “2nd”方式启动
S5PV210还提供了一个”Secure Boot” 安全启动的模式。
S5PV210提供多种启动方式如下
”1st启动”可以通过引脚选择,
当”1st启动”失败后,会尝试从”2nd启动”,也就是从SD卡通道2,通过SD卡启动方式启动。
如果”2nd启动”仍然失败,会尝试从“Uart boot”启动
如果仍然失败将会尝试从 “USB boot”启动。()
这节的学习,有点迷迷糊糊的,因为都是一些原理性的东西,不能更直接的理解,还没上手源码分析,后面上手u-boot分析,再补上。
学习这节知识,引用了很多网上朋友们分享的一些理解,因为我是使用的笔记软件记录学习情况,如有侵权,联系删。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值