SRAM、SDRAM、nor flash、nand flash理解以及uboot在nor flash和nand flash启动

· 笔者最近开始用mini2440开发板学习linux下uboot移植,学习的过程中涉及到uboot在nor flash、nandflash下启动以及和sdram关系。发现自己先前对于SRAM、SDRAM、nor flash、nand flash的理解十分模糊,所以重新查阅资料学习,现分析如下:

1、SRAM(Static Random Access Memory)

静态随机存取存储器,它是一种具有静止存取功能的内存,不需要刷新电路即能保存它内部存储的数据,掉电消失。制作工艺复杂,成本较高,所以使用较少。一般容量较小,但是读写速度很快。

2、SDRAM(Synchronous Dynamic Random Access Memory)

同步动态随机存储器通常就是我们常说的内存。为了保存数据,需要不断刷新,一旦不刷新或掉电数据即消失。同步指 存储器工作需要同步时钟;动态指刷新来保证数据不丢失;随机是指数据不是线性依次存储,而是自由指定地址进行数据读写。

3、nor flash 和nand flash

都是非易失性闪存技术,两者在读写速度、接口、成本、寿命等方面有如下区别:

1)读写速度:

nor读速度比nand快;

nand写速度比nor快;

nand以8~32k的块擦除,时间为4ms,nor要求在进行擦除前先要将目标块内所有的位都写为1以64~128k的块擦除,时间 为5s。

2)接口:nor的擦写次数是十万次;
nand的最大擦写次数是一百万次;

nor flash带有SRAM接口,有足够的地址引脚来寻址,可以很容易的存取其内部的每一字节;

nand flash使用复杂的I/O口串行存取数据,8个引脚用来传送控制、地址和数据信息,时序较复杂。

3)成本及容量:

nor flash 一般容量较小,工艺较复杂,所以成本较高;

nand flash 的生产工较为简单,因此其容量较大,价格更低。

4)擦除寿命:

nor的擦写次数是十万次;

nand的擦写次数是一百万次。

注意:

所有flash器件都受到位交换现象的困扰,nand flash较多见,一个位会发生反转或被报告反转了。如果发生在一个关键文 件上,这个小小的故障可能导致系统停机。如果只是报告有问题,多读几次就可能解决了。当然,如果这个位真的改变了, 就必须采用错误探测/错误更正(EDC/ECC)算法。

同时,nand器件中的坏块是随机分布的,需要对介质进行初始化扫描以发现坏块,并将坏块标记为不可用。在已制成的器 件中,如果通过可靠的方法不能进行这项处理,将导致高故障率。

4、UBOOT启动:

1)uboot在 nor flash中启动:nor flash 有自己的地址和数据线,支持片上运行,因此,uboot可以直接在nor flash上运行,启动后,地址会映射到0x0。

2)uboot在 nand flash中启动:因为使用复杂的I/O口串行存取数据,还需结合时序,所以nand flash不能像nor flash 一样随机访问,不能片上执行。当我们吧把u-boot下载到nand flash上后,设备重启时,nand flash 控制器会自动将nand flash上前4kb的内容复制到Steppingstone(SDRAM中一块4KB的区域),nand flash  控制器将PC指针直接指向ARM地址空间0x00000000,准备开始执行Steppingstone的代码。也就是说,nand flash不能直接将uboot启动,而是利用SDRAM作为一个载体,执行SDRAM中的uboot代码。


由于笔者刚开始学习,能力有限,难免有错误之处,还请诸位批评指出,共同进步。

你可能感兴趣的:(SRAM、SDRAM、nor flash、nand flash理解以及uboot在nor flash和nand flash启动)