NAND FLASH基础知识总结

NAND FLASH基础知识总结NANDFlash 简介 Flash 全称为 FlashMemory 属于非易失性存储设备 Non volatileMemo Flash 主要分两种 NANDFlash 和 NORFlash NOR 的成本相对高 容量相对小 优点是读写数据时候 不容易出错 NANDFlash 成本相对低 缺点是使用中数据读写容易出错 所以一般都需要有对应的软件或者硬件的

  1. Flash全称为Flash Memory,属于非易失性存储设备(Non-volatile Memory Device)Flash主要分两种,NAND FlashNOR Flash
    NAND Flash简介

    NOR的成本相对高,容量相对小,优点是读写数据时候,不容易出错。NAND Flash成本相对低,缺点是使用中数据读写容易出错,所以一般都需要有对应的软件或者硬件的数据校验算法,统称为ECC。但优点是,相对来说容量比较大。

  2. 2.1 NAND 布局
    基础原理

    NAND Flash内部由几个芯片(chip)组成,每个chip包含了几片(Plane),每一片中包含很多块(Block),每一块又包含很多页(Page),如图 21所示。常见的NAND Flash,内部只有一个chip,每个chip只有一个plane

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

     

    NAND FLASH基础知识总结

    2-1 NAND Flash结构

    老的NAND Flash,页大小是256B512B,这类的NAND Flash被称作small block,地址周期只有4个。对于现在常见的NAND Flash多数是2KB,被称作big block,对应的发读写命令地址,一共5个周期(cycle),更新的NAND Flash4KB。NAND Flash擦除操作的基本/最小单位为块,写入操作的基本/最小单位为页。 

    对于NAND Flash读取和编程操作来说,一般最小单位是页,所以,NAND Flash在硬件设计时候,就考虑到这一特性,对于每一片(Plane),都有一个对应的PAGE Buffer,专门用于存放,将要写入到物理存储单元中去的或者刚从存储单元中读取出来的一页数据。只有写到了这个页缓存中,你发了对应的编程第二阶段的确认命令0x10之后,实际的编程动作才开始,才开始把页缓存中的数据,一点点写到物理存储单元中去。通过PAGE Buffer还可以实现对NAND Flash的多片同时编程。

     

    2.2 NAND Flash ID

    Read IDNAND Flash基础命令之一,用于读取存储在NAND中的ID。读取的ID中包含多个字节,一般最少是4个,新的芯片,支持5个甚至更多,如图 2-2所示。从这些字节中,可以解析出很多相关的信息,比如此NAND Flash内部是几个芯片(chip)所组成的, SLC还是MLC,如图 2-3所示;如页大小,块大小,OOB大小等,如图 2-4所示;以及每个chip包含了几片(Plane),每片的大小,如图 2-5所示。

    NAND FLASH基础知识总结

    2-2 Read ID Byte

    NAND FLASH基础知识总结

    2-3 Read ID Byte 3 Description

    NAND FLASH基础知识总结

    2-4 Read ID Byte 4 Description

    NAND FLASH基础知识总结

    2-5 Read ID Byte 5 Description

    2.3 NAND Flash引脚功能

    NAND Flash的引脚功能如表 2-1所示:

    2-1 NAND Flash引脚说明

    引脚

    描述

    I/O0 ~ I/O7

    用于输入地址/数据/命令,输出数据,有8位和16位的

    CLE

    命令锁存使能,在输入命令之前,要先在模式寄存器中,设置CLE使能

    ALE

    地址锁存使能,在输入地址之前,要先在模式寄存器中,设置ALE使能

    CE#

    芯片使能,在操作Nand Flash之前,要先选中此芯片,才能操作

    RE#

    Read Enable,读使能,在读取数据之前,要先使CE#有效

    WE#

    读使能,在读取数据之前,要先使CE#有效

    WP#

    写保护

    R/B#

    就绪/,主要用于在发送完编程/擦除命令后,检测这些操作是否完成,,表示编程/擦除操作仍在进行中,就绪表示操作完成

    Vcc

    电源

    Vss

    接地

    N.C

    未定义,未连接

    2.4 NAND Flash的典型特性

    1.页擦除时间是200us,有些慢的有800us

    2.块擦除时间是1.5ms

    3.页数据读取到数据寄存器的时间一般是20us

    4.串行访问(Serial access)读取一个数据的时间是25ns,而一些旧的nand flash30ns,甚至是50ns

    5.输入输出端口是地址和数据以及命令一起multiplex复用的

    2.5 NAND Flash中的坏块(Bad Block

    NAND Flash中,一个块中含有1个或多个位是坏的,就成为其为坏块。坏块的稳定性是无法保证的,也就是说,不能保证你写入的数据是对的,或者写入对了,读出来也不一定对的。而正常的块,肯定是写入读出都是正常的。

    约定俗成的,small blockNAND,坏块标记在byte 5large blockNAND,坏块标记在byte0。坏块标记如果不是0xFF,就说明是坏块。

    关于坏块标记,实际情况更复杂些:对于2K页的NAND Flash,标记位置都是页内OOB开始处,都是非0xFF表示坏块。但是,对于是第几页,不同NAND Flash就有不同的规定了:有些NAND Flash,是标记在坏块的第一个页或者是第二个页。另一些,是在一个块内的最后一页或倒数第二页做此标记。所以,真正比较完整的检查坏块的做法,至少要检测块内第一,第二,倒数第一,倒数第二页,是否是0xFF,才能比较全面的判断是否是坏块的。

    2.6 NAND Flash坏块管理

    对于坏块的管理,在SylixOS系统中,叫做坏块管理(BBMBad Block Management),对应的会有一个表去记录好块,坏块的信息,以及坏块是出厂就有的,还是后来使用产生的,这个表叫做坏块表(BBTBad Block Table)。SylixOS内核MTD架构下的NAND Flash驱动,和UbootNAND Flash驱动中,在加载完驱动之后,如果你没有加入参数主动要求跳过坏块扫描的话,那么都会去主动扫描坏块,建立必要的BBT的,以备后面坏块管理所使用。

    2.7 常见NAND Flash操作

    NAND Flash的常见操作如图 2-6所示:

    NAND FLASH基础知识总结

    2-6 NAND Flash常见命令

    很多操作命令有2Cycle。开始设置,最后确认的命令方式,是为了避免由于外部由于无意的/未预料而产生的噪音而误操作,这样使得数据更安全。

    2.8 NAND Flash的地址周期

    在需要输入地址时,small block,地址周期只有4个,如图 2-7所示。而big block,对应的发读写命令地址,一共5个周期(cycle),如图 2-8所示。

    NAND FLASH基础知识总结

    2-7 4周期地址输入

    NAND FLASH基础知识总结

    2-8 5周期地址输入

    NAND Flash地址周期共有5个,2个列(Column)周期,3个行(Row)周期。列地址A0~A10,就是页内地址,地址范围是从02047,而对出的A11,理论上可以表示20484095,但是实际上,我们最多也只用到了20482112,用于表示页内的OOB区域,其大小是64字节。A12A30,称作页号,页的号码,可以定位到具体是哪一个页。而其中,A18A30,表示对应的块号,即属于哪个块。

    2.8 NAND Flash的页编程(写操作)

    NADN FLASH的写操作叫做编程Program,一般情况下,是以页为单位的。时序图如图 2-9所示:

     

    NAND FLASH基础知识总结

    2-9 NAND Flash写操作时序

    2.9 NAND FALSH的读操作

    NAND Flash的读操作以页为单位,时序图如图 2-10所示:

    NAND FLASH基础知识总结

    2-10 NAND Flash读操作时序

    2.10 NAND Flash的擦除

    NAND Flash的擦除以块为单位,在写操作之前,必须先进行擦除,时序图如图 2-11所示:

    NAND FLASH基础知识总结

    2-11 NAND Flash擦除操作时序

  3. Spansion® SLC NAND Flash Memory for Embedded
    参考资料
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/178086.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月26日 下午6:03
下一篇 2026年3月26日 下午6:03


相关推荐

  • AndroidStudio/Eclipse/keytool 如何获取 SHA1 值?

    AndroidStudio/Eclipse/keytool 如何获取 SHA1 值?

    2021年10月2日
    47
  • 如何关闭或启动mysql服务器_MySQL运行

    如何关闭或启动mysql服务器_MySQL运行方法一:通过命令行开启\关闭服务第一步点击开始菜单,找到cmd,以管理员身份运行。第二步在命令行里面输入“netstopmysql”,按回车键,就停止了mysql服务,如下图所示:第三步在命令行输入“netstartmysql”,接着按回车键,开启mysql服务,如下图所示:END方法二:通过电脑服务开启/关闭第一步最开始右键计算机,选择“管理”,如下图所示:第二步进去管理之后,选择服务和…

    2025年7月25日
    9
  • 「Python」pycharm多项目虚拟环境切换

    「Python」pycharm多项目虚拟环境切换背景 pycharm 打开了多个项目 如图 每个项目带不同的虚拟环境 如果直接从 pycharm 底部的 Terminal 打开终端 终端始终进入的是打开的第一个项目的虚拟环境 没办法切换到其他项目的虚拟环境 其实 如果要进入其他项目的虚拟环境 很简单 只需要鼠标选中目标项目右键看到 OpeninTermin 点击就可以了 是不是很简单

    2026年3月27日
    2
  • 企业web建站平台—格子平台采用云计算

    企业web建站平台—格子平台采用云计算运用最先进的IT技术——“云计算”,将互联网上各种实用的、有趣的、新奇的元素都浓缩到一个格子里,并且将所有格子都联接在一起,为用户提供出色的价值体验,这就是格子“云”平台。√您只需要注册一个账

    2022年7月3日
    27
  • 利用 JS 脚本实现网页全自动秒杀抢购

    利用 JS 脚本实现网页全自动秒杀抢购利用JS脚本实现网页全自动秒杀抢购倒计时页面:倒计时未结束时,购买按钮还不能点击。结束时,可以点击购买,点击后出现提示“付款成功”展示效果1.制作测试网页首先我们来做一个简易的抢购页面<!DOCTYPEhtml><htmllang=”zh_CN”><head><metacharset=”UTF-8″><title>Apple</title><styletype=”te

    2022年6月10日
    66
  • C# 定时执行方法

    C# 定时执行方法定时执行某个方法privatevoidbutton1_Click(objectsender,EventArgse){System.Timers.Timertimer=newSystem.Timers.Timer();timer.Enabled=true;timer.Inter…

    2022年7月17日
    20

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号