flash的读写与擦除

  对于flash的认识,比较肤浅,在网上找了些资料,感谢 http://blog.csdn.net/lin364812726/article/details/18815395  的博主,

将其博文转载过来,以便以后查看。

  flash闪存是非易失存储器,可以对称为块的存储器单元块进行擦写和再编程。

flash按照内部存储结构不同,分为两种:nor flash和nand flash。
(1)nor flash:像访问SDRAM一样,按照数据/地址总线直接访问, 可写的次数较少,速度也慢,由于其读时序类似于SRAM,读地址是线性结构,多用于程序代码的存储.
(2)nand flash:只有8位/16位/32位甚至更多位宽的总线,每次访问,都要将长地址分为几部分,一点点的分步传入才能访问nand flash。Nand Flash相比其余的几种flash优势在于可擦写次数多,擦写速度快,但是在使用以及使用过程中会出现坏块因此需要做特殊处理才可以使用。其主要用于数据存储,大部分U盘都是Nand Flash。

Nand和Nor的使用寿命,块擦除的速度,数据存储的出错几率等,都有很大区别。

  任何 flash器件的写入操作只能在空或已擦除的单元内进行,所以大多数情况下,在进行写入操作之前必须先执行擦除。NAND器件执行擦除操作是十分简单的,而NOR则要求在进行擦除前先要将目标块内所有的位都写为1。

  由于擦除NOR器件时是以64~128KB的块进行的,执行一个写入/擦除操作的时间为5s ,与此相反,擦除NAND器件是以8~32KB的块进行的,执行相同的操作最多只需要4ms。执行擦除时块尺寸的不同进一步拉大了NOR和NAND之间的性能差距。

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

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

节的块,这一点有点像硬盘管理此类操作,很自然地,基于NAND的存储器就可以取代硬盘或其他块设备。NAND Flash 的数据是以bit的方式保存在memory cell,

一般来说,一个cell 中只能存储一个bit。这些cell 以8个或者16个为单位,连成bitline,形成所谓的byte(x8)/word(x16),这就是NAND Device的位宽。这些Line

会再组成Page,(NAND Flash 有多种结构,以三星的K9F1208U0M),每页528Bytes(512byte(MainArea)+16byte(Spare Area)为例),每32个page形成一个

Block(32*528B)。具体一片flash上有多少个Block视需要所定,实例的NAND FLASH 有 4096个block,故总容量为4096*(32*528B)=66MB,但是其中的

2MB是用来保存ECC校验码等额外数据的,故实际中可使用的为64MB。

  NAND flash以页为单位读写数据,而以块为单位擦除数据。按照这样的组织方式可以形成所谓的三类地址:

Column Address:列地址

Page Address :页地址

Block Address :块地址

  对于NAND Flash来讲,地址和命令只能在I/O[7:0]上传递,数据宽度是8位。所有flash器件都受位交换现象的困扰。在某些情况下,一个比特位会发生反转或被

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

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

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

EDC/ECC系统以确保可靠性。NAND器件中的坏块是随机分布的。NAND器件需要对介质进行初始化扫描以发现坏块,并将坏块标记为不可用。在已制成的器件中,

如果通过可靠的方法不能进行这项处理,将导致高故障率。

  可以非常直接地使用基于NOR的闪存,可以像其他存储器那样连接,并可以在上面直接运行代码。对于NAND器件,由于需要I/O接口,NAND器件使用要复杂得

多。各种NAND器件的存取方法因厂家而异。在使用NAND器件时,必须先写入驱动程序,才能继续执行其他操作。向NAND器件写入信息需要相当的技巧,因为绝不

能向坏块写入,这就意味着在NAND器件上自始至终都必须进行虚拟映射。

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

行写入和擦除操作时都需要MTD。

  驱动还用于对DiskOnChip产品进行仿真和NAND闪存的管理,包括纠错、坏块处理和 损耗平衡。NAND FLASH的主要供应商是SAMSUNG和东芝,在U盘、各

种存储卡、MP3播放器里面的都是这种FLASH,由于工艺上的不同,它比NORFLASH拥有更大存储容量,而且便宜。但也有缺点,就是无法寻址直接运行程序,只能

存储数据。另外NAND FLASH 非常容易出现坏区,所以需要有校验的算法。

时间: 2024-12-10 20:46:42

flash的读写与擦除的相关文章

使用s3c2440芯片对外挂的nor flash进行读写擦除操作

学习目标: 1.了解nor flash存储芯片的概念和特性 2.掌握使用s3c2440芯片对外挂的nor flash进行读写擦除操作 1.NOR Flash的简单介绍 NOR Flash最早是由Intel公司于1988年开发出的,是现在市场上两种主要的非易失性存储器之一,它的出现彻底改变了存储器市场上由EPROM(Erasable Programmable Read-Only-Memory电可编程序只读存储器)和EEPROM(电可擦只读存储器Electrically Erasable Progr

STM32F10X SPI操作flash MX25L64读写数据(转)

源:STM32F10X SPI操作flash MX25L64读写数据 前一段时间在弄SPI,之前没接触过嵌入式外围应用,就是单片机也只接触过串口通信,且也是在学校的时候了.从离开手机硬件测试岗位后,自己一直想在嵌入式方面发展,在1月4号开始自己的第二份工作后,首先接触到的是为STM32F103写SPI控制flash读写操作,现记下曾经的脚印,希望以后能少走弯路!心得:细心活! 简单的一种应用,ARM芯片作为master,flash为slaver,实现单对单通信.ARM主控芯片STM32F103,

让MT7620完美支持32M SPI Flash(W25Q256) — 兼谈设备驱动中的shutdown方法

前言 OpenWrt的最新kernel(3.14.28)已经能够支持32M SPI Flash的读写以及擦除操作.然而,可能是系统考虑不周,亦或是MT7620系统的BUG,在配置了W25Q256的MT7620开发板系统上,无法soft reset!经过查阅相关资料,发现,MT7620默认支持24bit(3byte)的spi地址模式,而要支持32M以上的spi flash,则必须切换到32bit(4byte)地址模式.在soft reset的时候,spi停留在了32bit模式,没有切换回默认的24

stm32——Flash读写

stm32——Flash读写 一.Flash简介 通过对stm32内部的flash的读写可以实现对stm32的编程操作. stm32的内置可编程Flash在许多场合具有十分重要的意义.如其支持ICP(In Circuit Programming,在电路编程:在线编程)特性使得开发人员对stm32可以警醒调试开发,可以通过JTAG和SWD接口对stm32进行程序烧写:支持IAP(In Application Programming,在应用中编程)使得开发人员可以在stm32运行程序的时候对其内部程

Nand Flash原理(二)

K9F2G08U0B的存储阵列 图 2-1 K9F2G08U0B的存储阵列 由图2-1,我们可以知道:K9F2G08U0B的一页为(2K+64)字节(2K 表示的是 main 区容量,64表示的是 spare 区容量),它的一块为 64 页,而整个设备包括了2048个块.这样算下来一共有 2112M 位容量,如果只算 main 区容量则有256M 字节(即 256M×8 位). 要实现用 8 个 IO 口来要访问这么大的容量,如图 2-1 所示:K9F2G08U0A 规定了用 5 个周期来实现.

神秘的Flash Translation Layer (FTL)

如果仅仅是SSD的使用者,一定不会在意在SSD内部居然还存在一个复杂的软件层Flash Translation Layer(FTL).其实就是这个FTL才是SSD固态硬盘的软件核心技术.正因为有了FTL,NAND Flash才能被当成硬盘来使用:文件系统才可以直接把SSD当成普通块设备来使用.由于FTL是SSD设计厂商最为重要的核心技术,因此,没有一家厂商愿意透露这方面的技术信息,并且也一直没有业内的技术规范.标准存在. FTL的重要程度在于决定了一个SSD的使用寿命.性能和可靠性.一旦FTL出

STM32F412应用开发笔记之六:使用片上Flash存储参数

我们的项目中需要保存一些系统配置参数,这些数据的特点是:数量少而且不需要经常修改,但又不能定义为常量,因为每台设备可能不一样而且在以后还有修改的可能.这就需要考虑这些参数保存的问题.将这类数据存在指定的位置,需要修改时直接修改存储位置的数值,需要使用时则直接读取,会是一种方便的做法.考虑到这些数据量比较少,使用专门的存储单元既不经济,也没有必要,恰好有些MCU拥有比较大的FLASH,使用少量来存储这些参数则既方便有经济.STM32F4的Flash架构如下: 这次NUCLEO-F412ZG测试板上

nor flash和nand flash的区别

NOR和NAND是现在市场上两种主要的非易失闪存技术.Intel于1988年首先开发出NOR flash技术,彻底改变了原先由EPROM和EEPROM一统天下的局面.紧接着,1989年,东芝公司发表了NAND flash结构,强调降低每比特的成本,更高的性能,并且象磁盘一样可以通过接口轻松升级.一.存储数据的原理两种闪存都是用三端器件作为存储单元,分别为源极.漏极和栅极,与场效应管的工作原理相同,主要是利用电场的效应来控制源极与漏极之间的通断,栅极的电流消耗极小,不同的是场效应管为单栅极结构,而

如何挖掘NAND Flash的IO性能

NAND Flash芯片是构成SSD的基本存储单元,NAND Flash芯片工艺的发展.结构的变化将会推动整个闪存存储产业的高速发展.在设计闪存存储系统的时候,特别是在设计NAND Flash控制器.SSD盘或者卡的时候,都需要深入的了解NAND Flash的操作方法.接口命令及其时序.一个NAND Flash芯片虽然非常小,采用LGA或者TSOP的封装形式,但是,其内部结构还是非常复杂的.特别是随着存储密度的不断提高,NAND Flash内部抽象的概念也越来越多,例如Flash颗粒.Devic