FLASH相关知识扫盲

##简述
在flash的动态存储(单链表方式)中,遇到flash坏块问题,从中引申出许多不熟的知识点,在此梳理标记。其大致过程,经过和同事及朋友的沟通,nand flash的坏块处理方法如下:flash寄存器标志位检测、采用文件系统管理、共用好块池机制写读匹配(快速检索到坏块位置),而nor flash的坏块问题上是不存在的。
##nand flash 坏块处理
共用好块池机制:首先,使用一个统一的备用好块池,为所有存放在 NAND 中的模块提供可替换的好块。这样,就不需要在每个模块后面放置一个保留区,提高了 NAND 的空间利用率。

##nor flash (W25Q64)
W25Q64是华邦公司推出的大容量SPI FLASH(nor flash)产品,其容量为64Mb。该25Q系列的器件在灵活性和性能方面远远超过普通的串行闪存器件。W25Q64将8M字节的容量分为128个块,每个块大小为64K字节,每个块又分为16个扇区,每个扇区4K个字节。W25Q64的最小擦除单位为一个扇区,也就是每次必须擦除4K个字节。所以,这需要给W25Q64开辟一个至少4K的缓存区,这样必须要求芯片有4K以上的SRAM才能有很好的操作。

##扇区(sector)和块(block)

sector:硬件(磁盘)上的最小的操作单位,是操作系统和块设备(硬件、磁盘)之间传送数据的单位
block由一个或多个sector组成,是软件(OS、文件系统)中最小的操作单位;操作系统的虚拟文件系统从硬件设备上读取一个block,实际为从硬件设备读取一个或多个sector.对于文件管理来说,每个文件对应的多个block可能是不连续的;block最终要映射到sector上,所以block的大小一般是sector的整数倍。不同的文件系统block可使用不同的大小,操作系统会在内存中开辟内存,存放block到所谓的block buffer中。

扇区组成物理块,物理块对应逻辑块,逻辑块与文件相对应。
扇区是硬件被操作时软件使用的最小的操作单元,就是一个扇区一个扇区进行操作(扇区的大小在存储设备生产时就设计好)。

##nor flash 和nand flash 的区别
简单说明:NAND FLASH内部结构是用与非门组成存储单元的。有非易失性,读写速度快,而且比较容易做到大容量。目前单片NAND FLASH存储容量可以达到8Gbit(1GByte)。NOR FLASH也有非易失性。随机存储速度比NAND FLASH 快得多。所以一般用NOR FLASH 用做内存片,或者叫做数据缓冲。而NAND FLASH则一般用来做存储数据用。比方说,U盘.MP3等。
详细说明:
FLASH存储器又称闪存,主要有两种:NorFlash和NandFlash,下面我们从多个角度来对比介绍一下。在实际开发中,设计者可以根据产品需求来进行闪存的合理选择。

###1、接口对比

NorFlash带有通用的SRAM接口,可以轻松地挂接在CPU的地址、数据总线上,对CPU的接口要求低。NorFlash的特点是芯片内执行(XIP,eXecute In Place),这样应用程序可以直接在flash闪存内运行,不必再把代码读到系统RAM中。如uboot中的ro段可以直接在NorFlash上运行,只需要把rw和zi段拷贝到RAM中运行即可。

NandFlash器件使用复杂的I/O口来串行地存取数据,8个引脚用来传送控制、地址和数据信息。由于时序较为复杂,所以一般CPU最好集成NAND控制器。另外由于NandFlash没有挂接在地址总线上,所以如果想用NandFlash作为系统的启动盘,就需要CPU具备特殊的功能,如s3c2410在被选择为NandFlash启动方式时会在上电时自动读取NandFlash的4k数据到地址0的SRAM中。如果CPU不具备这种特殊功能,用户不能直接运行NandFlash上的代码,那可以采取其他方式,比如好多使用NandFlash的开发板除了使用NandFlash以外,还用上了一块小的NorFlash来运行启动代码。

###2、容量和成本对比

相比起NandFlash来说,NorFlash的容量要小,一般在1~16MByte左右,一些新工艺采用了芯片叠加技术可以把NorFlash的容量做得大一些。在价格方面,NorFlash相比NandFlash来说较高,如目前市场上一片4Mbyte的AM29lv320 NorFlash零售价在20元左右,而一片128MByte的k9f1g08 NandFlash零售价在30元左右。

NandFlash生产过程更为简单,NAND结构可以在给定的模具尺寸内提供更高的容量,这样也就相应地降低了价格。

###3、可靠性性对比

NAND器件中的坏块是随机分布的,以前也曾有过消除坏块的努力,但发现成品率太低,代价太高,根本不划算。NAND器件需要对介质进行初始化扫描以发现坏块,并将坏块标记为不可用。在已制成的器件中,如果通过可靠的方法不能进行这项处理,将导致高故障率。而坏块问题在NorFlash上是不存在的。

在Flash的位翻转(一个bit位发生翻转)现象上,NAND的出现几率要比NorFlash大得多。这个问题在Flash存储关键文件时是致命的,所以在使用NandFlash时建议同时使用EDC/ECC等校验算法。

###4、寿命对比

在NAND闪存中每个块的最大擦写次数是一百万次,而NOR的擦写次数是十万次。闪存的使用寿命同时和文件系统的机制也有关,要求文件系统具有损耗平衡功能。

###5、升级对比

NorFlash的升级较为麻烦,因为不同容量的NorFlash的地址线需求不一样,所以在更换不同容量的NorFlash芯片时不方便。通常我们会通过在电路板的地址线上做一些跳接电阻来解决这样的问题,针对不同容量的NorFlash。

而不同容量的NandFlash的接口是固定的,所以升级简单。

###6、读写性能对比

写操作:任何flash器件的写入操作都只能在空或已擦除的单元内进行。NAND器件执行擦除操作是十分简单的,而NOR则要求在进行擦除前先要将目标块内所有的位都写为1。擦除NOR器件时是以64~128KB的块进行的,执行一个擦除/写入操作的时间约为5s。擦除NAND器件是以8~32KB的块进行的,执行一个擦除/写入操作最多只需要4ms。

读操作:NOR的读速度比NAND稍快一些。

###7、文件系统比较

Linux系统中采用MTD来管理不同类型的Flash芯片,包括NandFlash和NorFlash。支持在Flash上运行的常用文件系统有cramfs、jffs、jffs2、yaffs、yaffs2等。cramfs文件系统是只读文件系统。如果想在Flash上实现读写操作,通常在NorFlash上我们会选取jffs及jffs2文件系统,在NandFlash上选用yaffs或yaffs2文件系统。Yaffs2文件系统支持大页(大于512字节/页)的NandFlash存储器。

参考:
http://www.51hei.com/mcu/4121.html
https://zhidao.baidu.com/question/489331805743624212.html
http://blog.csdn.net/luopingfeng/article/details/23621229

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值