赞
踩
目录
工作中,用到过两种flash:M25P32、AT25DF641A。
下面以这个串行Flash(AT25DF641A)为例,对Flash读写访问进行简单介绍。
总结:
AT25DF641A flash芯片管脚封装
按照芯片手册的读时序进行即可,没有特别需要注意的地方。
有几点说明需要注意:
由下图芯片手册说明可知,该Flash芯片在上电后,会默认处于保护状态。
在Flash芯片处于保护状态下,是不允许写访问和擦除操作。
首先需要知道,WEL bit 需要在写访问和擦除操作之前置1。
其次需要知道,WEL bit在写访问和擦除操作等成功后,会被自动清0。
首先需要知道,写访问的地址空间必须是擦除过的地址空间。
其次需要知道,进行擦除操作之前,需要先将WEL bit置1.
最后需要知道,擦除操作成功后,Flash芯片会自动将WEL bit清零。
Flash 的编程原理都是只能将 1 写为 0,而不能将 0 写为 1。所以在 Flash 编程之前,必须将对应的Page擦除,而擦除的过程就是把所有位都写为 1 的过程。
1.擦除的单位是page,一个page可能是256B也可能是512B。
2.擦除的地址需要提前进行页对齐。
实现目标 擦除一个page的数据
流程:
(1)设置寄存器为page擦除状态
(2)加载一个无效数据dummy,任意值到目标区域上
(3)激活寄存器高电平状态
(4)加一个while死循环,等待高电平状态消失,高电平状态消失说明擦写完成
(5)使能寄存器的鉴别模式
(6)读出所有数据和0xFFFFFFFF比较
(7)数据相符,关闭寄存器verify模式,返回success。失败重复上面所有步骤
(8)失败次数达到门限值,关闭寄存器verify模式,返回fail
一般在所有数据全部写入Flash之后,会将Flash芯片置于保护状态。
在发写指令和写地址之前,需要进行下面几个步骤:
在上面3个步骤执行完之后,按照手册的写访问时序进行即可实现数据的写入操作。
Byte写访问和Page写访问,是没有太大区别的。因为他们发的写指令码是一样的。
详细的代码不再介绍,按时序图写Verilog代码即可。
这部分引用文章 “片外存储器---FLASH以及页、扇区、块介绍” ,方便阅读和理解。
(一) 什么是FLASH存储器?
FLASH属于广义的ROM,因为它也是带电擦除的ROM。但是为了区别于一般的按字节为单位的擦写的E2PROM,我们叫它FLASH。FLASH做的改进就是擦除时不再以字节为单位,而是以块为单位。
FLASH分为Nor FLASH和NAND FLASH。NOR FLASH数据线和地址线分开,可以实现RAM一样的随机寻址功能,可以读取任何一个字节。但是擦除仍要按块来擦。
NAND FLASH同样是按块擦除,但是数据线和地址线复用,不能利用地址线随机寻址。读取只能按页来读取(NAND FLASH按块来擦除,按页来读,NOR FLASH没有页)。由于NAND FLASH引脚上复用,因此读取速度比NORFLASH慢一点,但是擦除和写入速度比NORFLASH快很多。NAND FLASH内部电路更简单,因此数据密度大,体积小,成本也低。因此大容量的FLASH都是NAND型的。小容量的2~12M的FLASH多是NOR型的。
NORFLASH可以进行字节寻址,所以程序可以在NOR FLASH中运行。嵌入式系统多用一个小容量的NOR FLASH存储引导代码,用一个大容量的NAND FLASH存放文件系统和内核。
(二)Flash中页、扇区、块是什么意思?有什么区别?
Flash是用于存储数据的存储器,但很多人看到页(Page)、扇区(Sector)、块(Block)等这些单位时总是分不清楚到底是什么含义,下面就来详细讲解一下!
下面以W25Q128芯片为例,先看下面这段话:
W25Q128存储芯片是由65536可编程的页组成的,每页有256个字节。一次最多可以写256个字节。可以一次擦除16页(4K字节)、128页(32K字节)、256页(64K字节)或者一整片。W25Q128有4096个可擦除的扇区,256个可擦除的块。4K字节的扇区对于数据和参数存储有更高的灵活性。
如果不理解的话,先看完下面的内容之后,再回过头来看就会理解了。
nor flash一般是串行传输,即通常意义上走的SPI协议端口。
nand flash
一、NAND flash和NOR flash的性能比较
1、NOR的读速度比NAND稍快一些。
2、NAND的写入速度比NOR快很多。
3、NAND的4ms擦除速度远比NOR的5s快。
4、大多数写入操作需要先进行擦除操作。
5、NAND的擦除单元更小,相应的擦除电路更少。
二、NAND flash和NOR flash的接口差别
NOR flash带有SRAM接口,有足够的地址引脚来寻址,可以很容易地存取其内部的每一个字节。
NAND器件使用复杂的I/O口来串行地存取数据,各个产品或厂商的方法可能各不相同。8个引脚用来传送控制、地址和数据信息。NAND读和写操作采用512字节的块,这一点有点像硬盘管理此类操作,很自然地,基于NAND的存储器就可以取代硬盘或其他块设备。
三、NAND flash和NOR flash的容量和成本
NAND flash的单元尺寸几乎是NOR器件的一半,由于生产过程更为简单,NAND结构可以在给定的模具尺寸内提供更高的容量,也就相应地降低了价格。
四、NAND flash和NOR flash的可靠性和耐用性
采用flahs介质时一个需要重点考虑的问题是可靠性。对于需要扩展MTBF的系统来说,Flash是非常合适的存储方案。可以从寿命(耐用性)、位交换和坏块处理三个方面来比较NOR和NAND的可靠性。
五、NAND flash和NOR flash的寿命(耐用性)
在NAND闪存中每个块的最大擦写次数是一百万次,而NOR的擦写次数是十万次。NAND存储器除了具有10比1的块擦除周期优势,典型的NAND块尺寸要比NOR器件小8倍,每个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闪存的管理,包括纠错、坏块处理和损耗平衡。
参考文献
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。