嵌入式系统中Flash的种类与选择

  嵌入式硬件系统一般都需要有软件的支持才能够正常工作,嵌入式系统需要为软件提供相应的存储空间。在以往的单片机系统内,一般使用ROM(Read Only Memory)或EPROM(Erasable Programmable Read Only Memory)存储程序。由于现有的嵌入式系统越来越复杂,原有的ROM由于容量、灵活性差等的限制,无法满足日益复杂的应用要求。

随着Flash技术的成熟和普及,一些单片机芯片(如Freescale的8位单片机MC68HC908)已经开始采用片内FLASH取代过去常用的片内ROM或EPROM,使单片机具有了在线编程写入或擦除的功能。

可以毫不夸张的说,Flash已经是目前嵌入式最为主要的存储介质。早在二十多年前,Flash Memory就已经被发明出来。在这么多年的发展过程中,Flash Memory技术经过了多次变革和发展,但其变化的总体趋势一直都是:存储容量越来越大、数据读写速度越来越快、性能价格比越来越高。目前日益普及的手机、数码相机、数字摄像机、路由器、交换机等都已广泛利用Flash Memory作为永久性存储器,只不过由于它封装在设备内部,只有开发商和设计人员直接接触、了解它而已。随着U盘的普及,Flash Memory正在被越来越多的普通用户熟悉和关注。

FLASH作为一种安全、快速的存储体,以其体积小、容量大、成本低、掉电数据不丢失等一系列优点,成为了嵌入式系统中数据和程序最主要的载体。FLASH在结构和操作方式上与硬盘、EEROM等其他存储介质有较大区别,闪存的数据删除不是以单个的字节为单位而是以固定的区块为单位,区块大小一般为256KB到20MB。

闪存是电可擦除只读存储器(EEPROM)的变种,EEPROM与闪存不同的是,它能在字节水平上进行删除和重写而不是整个芯片擦写,这样闪存就比EEPROM的更新速度快。由于其断电时仍能保存数据,闪存通常被用来保存设置信息,如在电脑的BIOS、PDA、数码相机中保存资料等。另一方面,闪存不像RAM一样以字节为单位改写数据,因此不能取代RAM。

闪存属于内存器件的一种。不过闪存的物理特性与常见的内存有根本性的差异:目前各类 DDR 、 SDRAM 或者 RDRAM 都属于挥发性内存,只要停止电流供应内存中的数据便无法保持,因此每次电脑开机都需要把数据重新载入内存;闪存则是一种不挥发性( Non-Volatile )内存,在没有电流供应的条件下也能够长久地保持数据,其存储特性相当于硬盘,这项特性正是闪存得以成为各类便携型数字设备的存储介质的基础。

1. 根据结构的不同可以将闪存分成NOR FLASH和NAND FLASH两种。但不管哪一种都具有如下特点:

(1)区块结构

FLASH在物理结构上分成若干个区块,区块之间相互独立。比如NOR FLASH把整个Memory分成若干个Sector,而NAND FLASH把整个Memory分成若干个Block;

(2)先擦后写

由于FLASH的写操作只能将数据位从1写成0,不能从0写成1,所以在对存储器进行写入之前必须先执行擦操作,将预写入的数据位初始化为1。擦操作的最小单位是一个区块,而不是单个字节。

(3)操作指令

除了NOR FLASH的读,FLASH的其它操作不能像RAM那样,直接对目标地址进行总线操作。比如执行一次写操作,它必须输入一串特殊的指令(NOR FLASH),或者完成一段时序(NAND FLASH)才能将数据写入到FLASH中。

(4)位反转

由于FLASH固有的电器特性,在读写数据过程中,偶然会产生一位或几位数据错误。这就是位反转。位反转无法避免,只能通过其他手段对结果进行事后处理。

(5)坏块

FLASH在使用过程中,可能导致某些区块的损坏。区块一旦损坏,将无法进行修复。如果对已损坏的区块进行操作,可能会带来不可预测的错误。尤其是NAND FLASH在出厂时就可能存在这样的坏块(已经被标识出)。

 

2. NOR Flash与NAND Flash的比较

(1)NOR Flash与NAND Flash各自特点

NOR 的特点是芯片内执行(XIP,eXecute In Place),这样应用程序可以直接在闪存内运行,不必再把代码读到系统 RAM 中。NOR 的传输效率很高,在 1~4MB 的小容量时具有很高的成本效益,但是很低的写入和擦除速度大大影响了它的性能。

NAND 结构能提供极高的单元密度,可以达到高存储密度,并且写入和擦除的速度也很快,容量大、芯片面积小、单元密度高、擦除速度快、成本低等特点这也是为何所有的 U 盘都使用 NAND 闪存做为存储介质的原因。应用 NAND 的困难在于闪存和需要特殊的系统接口。

(2)性能比较

任何闪存器件的写入操作只能在空或已擦除的单元内进行,所以大多数情况下,在进行写入操作之前必须先执行擦除。NAND器件执行擦除操作是十分简单的,而NOR则要求在进行擦除前先要将目标块内所有的位都写为0。由于擦除NOR器件时是以64~128KB的块进行的,执行一个写入/擦除操作的时间为5s,与此相反,擦除NAND器件是以8~32KB的块进行的,执行相同的操作最多只需要4ms。这样,当选择存储解决方案时,设计师必须权衡以下的各项因素。

1) NOR的读速度比NAND稍快一些。

2) NAND的写入速度比NOR快很多。

3) NAND的4ms擦除速度远比NOR的5s快。大多数写入操作需要先进行擦除操作。

4) AND的擦除单元更小,相应的擦除电路更少。

(3)接口差别

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

NAND闪存使用复杂的I/O口来串行地存取资料,各个产品或厂商的方法可能各不相同。8个引脚用来传送控制、地址和资料信息。    NAND读和写操作采用512字节的块,这一点有点像硬盘管理此类操作,很自然地,基于NAND的闪存就可以取代硬盘或其它块设备。

(4)容量和成本

NAND 闪存的单元尺寸几乎是NOR闪存的一半,由于生产过程更为简单,NAND结构可以在给定的模具尺寸内提供更高的容量,也就相应地降低了价格。
    NOR 闪存占据了1~16MB 闪存市场的大部分,而NAND闪存只是用在8MB以上的产品当中,这也说明NOR主要应用在代码存储介质中,NAND适合于资料存储,NAND在CompactFlash、Secure Digital、PC Cards和MMC存储卡市场上所占份额最大。

(5)可靠性和耐用性

采用闪存介质时一个需要重点考虑的问题是可靠性。可以从寿命(耐用性)、位交换和坏块处理三个方面来比较NOR和NAND的可靠性。

在NAND闪存中每个块的最大擦写次数是一百万次,而NOR的擦写次数是十万次。NAND内存除了具有10:1的块擦除周期优势,典型的NAND块尺寸要比NOR器件小8倍,每个NAND内存块在给定的时间内的删除次数要少一些。

所有闪存器件都受位交换现象的困扰。在某些情况下(很少见,NAND发生的次数要比NOR 多),一个比特位会发生反转或被报告反转了。一位的变化可能不很明显,但是如果发生在一个关键文件上,这个小小的故障可能导致系统停机。如果只是报告有问题,多读几次就可能解决了。

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

 

 

NOR和NAND是现在市场上两种主要的非易失闪存技术。Intel于1988年首先开发出NOR flash技术,彻底改变了原先由EPROM和EEPROM一统天下的局面。紧接着,1989年,东芝公司发表了NAND flash结构,强调降低每比特的成本,更高的性能,并且象磁盘一样可以通过接口轻松升级。但是经过了十多年之后,仍然有相当多的硬件工程师分不清NOR和NAND闪存。

  相“flash存储器”经常可以与相“NOR存储器”互换使用。许多业内人士也搞不清楚NAND闪存技术相对于NOR技术的优越之处,因为大多数情况下闪存只是用来存储少量的代码,这时NOR闪存更适合一些。而NAND则是高数据存储密度的理想解决方案。

  NOR的特点是芯片内执行(XIP, eXecute In Place),这样应用程序可以直接在flash闪存内运行,不必再把代码读到系统RAM中。NOR的传输效率很高,在1~4MB的小容量时具有很高的成本效益,但是很低的写入和擦除速度大大影响了它的性能。

  NAND结构能提供极高的单元密度,可以达到高存储密度,并且写入和擦除的速度也很快。应用NAND的困难在于flash的管理和需要特殊的系统接口。

 

性能比较

  flash闪存是非易失存储器,可以对称为块的存储器单元块进行擦写和再编程。任何flash器件的写入操作只能在空或已擦除的单元内进行,所以大多数情况下,在进行写入操作之前必须先执行擦除。NAND器件执行擦除操作是十分简单的,而NOR则要求在进行擦除前先要将目标块内所有的位都写为0。

  由于擦除NOR器件时是以64~128KB的块进行的,执行一个写入/擦除操作的时间为5s,与此相反,擦除NAND器件是以8~32KB的块进行的,执行相同的操作最多只需要4ms。

  执行擦除时块尺寸的不同进一步拉大了NOR和NADN之间的性能差距,统计表明,对于给定的一套写入操作(尤其是更新小文件时),更多的擦除操作必须在基于NOR的单元中进行。这样,当选择存储解决方案时,设计师必须权衡以下的各项因素。

  ● NOR的读速度比NAND稍快一些。

  ● NAND的写入速度比NOR快很多。

  ● NAND的4ms擦除速度远比NOR的5s快。

  ● 大多数写入操作需要先进行擦除操作。

  ● NAND的擦除单元更小,相应的擦除电路更少。

 

接口差别

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

  NAND器件使用复杂的I/O口来串行地存取数据,各个产品或厂商的方法可能各不相同。8个引脚用来传送控制、地址和数据信息。

  NAND读和写操作采用512字节的块,这一点有点像硬盘管理此类操作,很自然地,基于NAND的存储器就可以取代硬盘或其他块设备。

 

容量和成本

  NAND flash的单元尺寸几乎是NOR器件的一半,由于生产过程更为简单,NAND结构可以在给定的模具尺寸内提供更高的容量,也就相应地降低了价格。

  NOR flash占据了容量为1~16MB闪存市场的大部分,而NAND flash只是用在8~128MB的产品当中,这也说明NOR主要应用在代码存储介质中,NAND适合于数据存储,NAND在CompactFlash、Secure Digital、PC Cards和MMC存储卡市场上所占份额最大。

 

可*性和耐用性

  采用flahs介质时一个需要重点考虑的问题是可*性。对于需要扩展MTBF的系统来说,Flash是非常合适的存储方案。可以从寿命(耐用性)、位交换和坏块处理三个方面来比较NOR和NAND的可*性。

  寿命(耐用性)

  在NAND闪存中每个块的最大擦写次数是一百万次,而NOR的擦写次数是十万次。NAND存储器除了具有10比1的块擦除周期优势,典型的NAND块尺寸要比NOR器件小8倍,每个NAND存储器块在给定的时间内的删除次数要少一些。

  位交换

  所有flash器件都受位交换现象的困扰。在某些情况下(很少见,NAND发生的次数要比NOR多),一个比特位会发生反转或被报告反转了。

  一位的变化可能不很明显,但是如果发生在一个关键文件上,这个小小的故障可能导致系统停机。如果只是报告有问题,多读几次就可能解决了。

  当然,如果这个位真的改变了,就必须采用错误探测/错误更正(EDC/ECC)算法。位反转的问题更多见于NAND闪存,NAND的供应商建议使用NAND闪存的时候,同时使用EDC/ECC算法。

  这个问题对于用NAND存储多媒体信息时倒不是致命的。当然,如果用本地存储设备来存储操作系统、配置文件或其他敏感信息时,必须使用EDC/ECC系统以确保可*性。

  坏块处理

  NAND器件中的坏块是随机分布的。以前也曾有过消除坏块的努力,但发现成品率太低,代价太高,根本不划算。

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

 

易于使用

  可以非常直接地使用基于NOR的闪存,可以像其他存储器那样连接,并可以在上面直接运行代码。

  由于需要I/O接口,NAND要复杂得多。各种NAND器件的存取方法因厂家而异。

  在使用NAND器件时,必须先写入驱动程序,才能继续执行其他操作。向NAND器件写入信息需要相当的技巧,因为设计师绝不能向坏块写入,这就意味着在NAND器件上自始至终都必须进行虚拟映射。

 

软件支持

  当讨论软件支持的时候,应该区别基本的读/写/擦操作和高一级的用于磁盘仿真和闪存管理算法的软件,包括性能优化。

  在NOR器件上运行代码不需要任何的软件支持,在NAND器件上进行同样操作时,通常需要驱动程序,也就是内存技术驱动程序(MTD),NAND和NOR器件在进行写入和擦除操作时都需要MTD。

  使用NOR器件时所需要的MTD要相对少一些,许多厂商都提供用于NOR器件的更高级软件,这其中包括M-System的TrueFFS驱动,该驱动被Wind River System、Microsoft、QNX Software System、Symbian和Intel等厂商所采用。

  驱动还用于对DiskOnChip产品进行仿真和NAND闪存的管理,包括纠错、坏块处理和损耗平衡。

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值