S5PV210-NoOS-S5PV210启动过程详解

内存

SRAM:静态内存 

缺点是容量小,价格高

优点是不需要软件初始化,上电就能用

DRAM 动态内存

容量大,价格低,上电后不能直接使用需要软件初始化。

笔记本、嵌入式、手机等。就是平常用的内存条。

 

单片机中:内存需要量小,希望开发尽量简单,适合全部用sram.

pc机中:内存需求量大,而且软件复杂,不在乎dram的初始化开销,适合全部用dram.

嵌入式系统:内存需求量大,而且没有Norflash等可启动介质

外存

Norflash:特点是容量小,价格高,优点是可以和cpu直接总线式相连,CPU上电后可以直接读取, 所以一般用作启动介质。

Nandflash(跟硬盘一样):特点是容量大,价格低,缺点是不能总线式访问,也就是说不能上电cpu直接读取,需要cpu先运行一些初始化软件,然后通过时序接口读写

所以一般PC机都是:BIOS(Norflash)+硬盘(类似于Nandflash)+大容量的DRAM。启动时从bios启动,负责初始化硬盘和DRAM。

一般的单片机的flash也全是norflash。很小容量的Norflash+很小容量的sram.

嵌入式系统:因为Norflash很贵,所以很多嵌入式系统倾向于不用norflash,

直接用外接大容量Nand+外接大容量DRAM+soc内置的SRAM.

S5PV210使用的启动方式是外接大容量Nand+外接大容量DRAM+soc内置的SRAM.

实际上210的启动还要更复杂一些。210内部内置了一块96kb大小的SRAM(iRAM),同时还有一块内转的64k大小的Norflash(Irom)。

 

210的启动过程大致是:

  1. CPU上电后先从内部Irom中读取预先设置的代码(BL0),执行。这一段IROM代码首先做了一些基本的初始化(CPU时钟,关看门狗……)。这一段IROM代码是三星出厂前设置的,三星也不知道我们板子上将来接什么DRAM,因此这一段IROM是不能负责初始化外接的DRAM的。这一段代码只能初始化CPU内部的东西。然后这一段代码判断我们启动的模式(通过硬件的跳线)。然后从相应的外部存储器去读取第一部分启动代码(BL1,大小为16K)到SRAM()。
  2. 从SRAM去运行上一部读取来的BL1(16KB),BL1负责初始化NandFlash,然后将BL2读取到IRAM(剩余的80K)
  3. 从IRAM运行BL2,LB2初始化DRAM,然后将OS读取到DRAM中,然后启动OS,启动过程结束。

思路:因为启动代码的大小是不定的,有些公司的可有96K就够了,有些公司可能1MB都不够。所以刚才说的2步启动有些地方不合适。三星的解决方案是:把启动代码分为两半(BL1,BL2),这两部分协同工作来完成启动

S5PV210-NoOS-S5PV210启动过程详解_第1张图片

BL0做了什么?

  1. 关看门狗
  2. 初始化cache
  3. 初始化栈
  4. 初始化堆(初始化堆和栈之后,C语言程序才能运行)
  5. 初始化块设备的复制函数
  6. 设置soc的时钟系统
  7. 复制BL1到内部的IRAM(16K)
  8. 检查BL1的校验和
  9. 安全启动相关工作
  10. 跳转到BL1去执行

S5PV210的启动过程

先1st启动

再2sd启动 SD卡通道2启动

如果失败再Uart启动

如果失败再USB启动

 

参考 S5PV210_iROM_ApplicationNote_Preliminary_20091126.pdf

你可能感兴趣的:(嵌入式lInux)