flash名称由来

Flash的擦除操作是以block块为单位的,与此相对应的是其他很多存储设备,是以bit位为最小读取/写入的单位,Flash是一次性地擦除整个块:在发送一个擦除命令后,一次性地将一个block,常见的块的大小是128KB/256KB。。,全部擦除为1,也就是里面的内容全部都是0xFF了,由于是一下子就擦除了,相对来说,擦除用的时间很短,可以用一闪而过来形容,所以,叫做Flash Memory。中文有的翻译为 (快速)闪存。

下面是一款flash的规格说明:

一个nand flash由很多个块(Block)组成,块的大小一般是128KB,256KB,512KB,此处是128KB。

每个块里面又包含了很多页(page)。每个页的大小,对于现在常见的nand flash多数是2KB,更新的nand flash是4KB,这类的,页大小大于2KB的nand flash,被称作big block,对应的发读写命令地址,一共5个周期(cycle),而老的nand flash,页大小是256B,512B,这类的nand flash被称作small block。

一片Nand flash为一个设备(device)

1 (Device) = xxxx (Blocks)

1 (Block) = xxxx (Pages)

1(Page) =528 (Bytes) = 数据块大小(512Bytes) + OOB 块大小

也就是说一个page由有效数据区+OOB(又称为spare区)组成。

关于OOB区,是每个Page都有的。Page大小是512字节的NAND每页分配16字节的OOB;如果NAND物理上是2K的Page,则每个Page分配64字节的OOB。

我们通常计算nand flash容量大小为:总共的block数 * 一个block中的page数 * 一个page中的有效数据区。oob区为特殊数据,用作硬件纠错和坏块管理的。

但是我们通常说的128M的flash,128M中是包含OOB数据区的,也就是说实际有效的数据存储区只有124M多。(128*2048/(2048+64) =124.12M)

OOB是用来干啥的?

坏块是指在nand flash中出现某些flash区域不能进行擦写操作,我们称这样的一个单位区域为一个坏块。而由于nand flash中的读和写操作是以page为单位,擦除是以block为单位,且写操作之前必须要先进行擦除操作,因此,一个最小的可操作单位即为一个block, 整个block中产生任何不可修复的位错误,我们就认为这个块是坏块。

坏块标志

spare area的第6个byte是否是0xff,如果是则表示是好块,否则为坏块。

NAND Flash出厂时在spare area中已经反映出了坏块信息,因此, 如果在擦除一个块之前,一定要先check一下第一页的spare area的第6个byte是否是0xff,如果是就证明这是一个好块,可以擦除;如果是非0xff,那么就不能擦除,以免将坏块标记擦掉。 当然,这样处理可能会犯一个错误―――“错杀伪坏块”,因为在芯片操作过程中可能由于 电压不稳定等偶然因素会造成NAND操作的错误。但是,为了数据的可靠性及软件设计的简单化,还是需要遵照这个标准。

为何Nand Flash不能从0变成1

对于nand Flash的数据的写入1,就是控制External Gate去充电,使得存储的电荷够多,超过阈值Vth,就表示1了。而对于写入0,就是将其放电,电荷减少到小于Vth,就表示0了。

我的理解是,物理上来说,是可以实现每一位的,从0变成1的,但是实际上,对于实际的物理实现,出于效率的考虑,如果对于,每一个存储单元都能单独控制,即,0变成1就是对每一个存储单元单独去充电,所需要的硬件实现就很复杂和昂贵,同时,所进行对块擦除的操作,也就无法实现之前的,一闪而过的速度了,也就失去了Flash的众多特性了。

flash的最小单位

块是Nand Flash的擦除操作的基本/最小单位。

页是Nand Flash的写入操作的基本/最小的单位。

每一个页,对应还有一块区域,叫做空闲区域(spare area)/冗余区域(redundant area),而Linux系统中,一般叫做OOB(Out Of Band),这个区域,是最初基于Nand Flash的硬件特性:数据在读写时候相对容易错误,所以为了保证数据的正确性,必须要有对应的检测和纠错机制,此机制被叫做EDC(Error Detection Code)/ECC(Error Code Correction, 或者 Error Checking and Correcting),所以设计了多余的区域,用于放置数据的校验值。

一般设备,比如硬盘/内存,读取和写入都是以bit位为单位,读取一个bit的值,将某个值写入对应的地址的位,都是可以按位操作的。

但是Flash由于物理特性,使得内部存储的数据,只能从1变成0,这点,可以从前面的内部实现机制了解到,只是方便统一充电,不方便单独的存储单元去放电,所以才说,只能从1变成0,也就是释放电荷。

所以,总结一下Flash的特殊性如下:

BBT

可以用BBT:bad block table (坏块表),即坏块表来进行管理。各家对nand的坏块管理方法都有差异。

比如专门用nand做存储的,会把bbt放到block0,因为第0块一定是好的块。

但是如果nand本身被用来boot,那么第0块就要存放程序,不能放bbt了。 有的把bbt放到最后一块,当然,这一块坚决不能为坏块。 bbt的大小跟nand大小有关,nand越大,需要的bbt也就越大。

OOB是每个页(512~2048字节不等)都有的数据,里面存的有ECC(当然不仅仅ECC,还有坏块标记);

针对每个BLOCK的坏块识别则是该块第一页spare area的第六个字节。

BBT(坏块表)是一个FLASH才有一个;

nand flash 介绍相关推荐

  1. NAND FLASH 内存详解与读写寻址方式

    目录: 第一章 绪论 1.1 课题来源 1.2 研究背景与意义     1.2.1 Flash介绍     1.2.2 NAND Flash介绍     1.2.3 NAND Flash与NOR Fl ...

  2. GD32学习笔记(3)NAND Flash管理

    目录 NAND Flash介绍 ECC算法 FTL 参考代码 ECC 写入数据后获取ECC并写入相应区域 读出数据.获取ECC并重新计算ECC,校验 ECC校正 FTL 标记某一个块为坏块 标记某一个 ...

  3. Nand Flash简介-2

    下面是Nand Flash介绍的第二节,主要是介绍下Nand Flash里面结构和一些特性. Nand Flash结构 图1 上图为Nand Flash的结构,图中这片Flash有8192个块(Blo ...

  4. 2019关于闪存芯片NAND FLASH的封装介绍

    随着目前产品小型化的需求越来越多,且可穿戴设备的逐渐普及,工程师们对于芯片小型化的需求也越来越强烈,这个就涉及到了芯片的封装工艺.这次,我们只针对NAND flash的封装进行介绍. 芯片常用封装有: ...

  5. NAND FLASH和NOR FLASH的介绍

    一.存储数据的原理 两种闪存都是用三端器件作为存储单元,分别为源极.漏极和栅极,与场效应管的工作原理相同,主要是利用电场的效应来控制源极与漏极之间的通断,栅极的 电流消耗极小,不同的是场效应管为单栅极 ...

  6. NAND FLash基础概念介绍

    @TOC一.引脚介绍 1. 命令.地址.数据都通过8个I/O口传输 2. 写命令.地址.数据时,都需要将WE.CE信号同时拉低 3. 数据在WE信号的上升沿被NAND Flash锁存 4. 命令锁存信 ...

  7. 镁光256Gb NAND Flash芯片介绍

    总体概述 该芯片是一款典型的大容量NAND Flash存储颗粒,支持Open NAND Flash Interface (ONFI) 2.1的接口标准,采用ONFI NANDFlash的操作协议.该芯 ...

  8. Nand Flash管理算法介绍之FTL简介

    和传统磁盘相比,Nand Flash存储设备存储延迟低.功耗低.更高的存储密度.抗震型号更好和噪声低.但是,由于Nand Flash的特性影响(读写擦的单位不一致,每个块有P/E次数限制),Nand ...

  9. Nand flash相关概念介绍

    1. SDR/DDR SDR(Single Data Rate): 读写数据使用上升沿或下降沿. DDR(Double Data Rate):写数据时通过MCU来控制DQS信号跳变沿来触发(即上升沿和 ...

最新文章

  1. 使用Python,OpenCV捕获关键事件,并进行视频剪辑
  2. 【组队学习】【23期】Datawhale零基础入门数据挖掘(心跳信号分类)
  3. redis未能启动服务器,redis服务启动不了的解决办法(服务器应非法关机了)
  4. 肠·道 | 朱元方:产检消毒恐误伤菌脉,6大举措则促菌脉相承
  5. Oracle 10g如何对用户姓名,按首字母排序、查询
  6. NOIP信息奥赛--1995“同创杯”初中复赛题题解(一)
  7. 百万数据报表导出:使用SXSSFWorkbook完成百万数据报表打印
  8. 机器学习——人工神经网络之发展历史(神经元数学模型、感知器算法)
  9. java框架概念_java概念(2)
  10. B2憨宝275版本暖岛正版子主题-wordpress主题
  11. 山西计算机公共机房建设,山西省机房建设标准.doc
  12. zigbee协议栈 任务、事件与轮询机制
  13. Win11画图工具没了怎么重新安装
  14. 都在说视频号,真有机会?
  15. nachos交叉编译器java_ubuntu - 编译Nachos源代码时出错“gnu / stubs-32.h:没有这样的文件或目录”...
  16. 物流行业如何利用智慧物流体系实现转型升级?
  17. ps如何把自己的图与样机结合_Ps如何套用样机图?
  18. flink设置checkpoint部署后一直重启,出现检查点无法写入的问题
  19. 普吉岛自由行——泰囧准备篇
  20. 混合牛奶(春季每日一题 9)

热门文章

  1. JQuery和Ajax在ASP.NET MVC中的基本应用
  2. spring cloud gateway [DataBufferLimitException: Exceeded limit on max bytes to buffer : 262144]
  3. 在线数学函数图形和在线数据结构演示
  4. matlab 等高线图限制范围,matlab等高线图的初级问题,matlab画等高线问题,请高人解答。详细请看补充。...
  5. 一文详解循环冗余校验校验算法(CRC校验)及C语言代码的实现 ---- 以CRC-16/MODBUS为例讲解
  6. EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x6d641e26, pid=4892, tid=1396
  7. php soapclient实例,需要paypal的简单php SoapClient示例
  8. 在线绝缘检测仪在发电厂高压电机中的应用
  9. P2P技术详解(三):P2P技术之STUN、TURN、ICE详解 (webrtc)
  10. Linux 时间钟和时间同步