1.nandflash的原理图如下:
引脚属性见下表:
引脚名称 | 引脚功能 |
---|---|
IO0~IO7 | 数据输入输出(命令、地址、数据共用数据总线) |
CLE | 命令使能 |
ALE | 地址使能 |
/CE | 芯片使能(片选) |
/RE | 读使能 |
/WE | 写使能 |
R/B | 就绪/忙输出信号(低电平表示操作还在进行中,高电平表示操作完成) |
2.nandflash内部存储结构
nandflash内部存储结构如下:
我们常见的Nand Flash,内部只有一个chip,每个chip只有一个plane。但也有些复杂的,容量更大的Nand Flash,内部有多个chip,每个chip有多个plane,这类的Nand Flash,其实就是多了一个主控将多块flash叠加在一起,如下图:
2.1 Block块
一个Nand Flash由很多个块(Block)组成,块的大小一般有64K,128KB,256KB,512KB,Block是Nand Flash的擦除操作的基本/最小单位。Nand Flash中,一个块中含有1个或多个位是坏的,就称为其为坏块Bad Block。
2.2 Page页
每个块里面又包含了很多页(page)。每个页的大小,对于现在常见的Nand Flash多数是2KB,当然也有的nand flash的页大小为4KB、8KB等。页Page,是读写操作的基本单位。
2.3. oob ( Spare Area)
每一个page页,对应还附加了一块区域,一般为64byte,叫做空闲区域(spare area)/oob区域(Out Of Band),由于nandflash在操作过程中容易产生位反转,这是nandflash的物理特性决定的,所以必须要有对应的检测和纠错机制,这种机制被叫做Error Checking and Correcting,所以设计了多余的oob区域,用于放置数据的校验值。oob的读写操作,一般是随着页的操作一起完成的,即读写页的时候,对应地就读写了oob。
关于oob具体用途,总结起来有:
标记是否是坏快 存储ECC数据 存储一些和文件系统相关的数据。如jffs2就会用到这些空间存储一些特定信息,
总结:一般情况下:1block = 64page = 64 * (2K+64B) = 128K + 4K
3.特性(以K9F2G08U0C为例)
可以看出此款nandflash容量为256M,外加8M的冗余oob存储区。
page大小为2K,block大小为128K
读一个page时顺序读取至少25*2048ns(数据可以每字节25ns的循环时间读出),随机读取不超过40us
写一个page一般为250us
擦除一个block一般为2ms
封装上分为TSOP分装和FBGA封装(TSOP是指引脚在侧面,FBGA是引脚封在芯片底部,更能保障数据安全,有些客户为了保障数据安全性,防止被飞线进行数据破解,会要求用FBGA封装的flash)
4.常见的flash厂商
常见的flash厂商有:Micron(镁光)、Toshiba(东芝)、Samsung(三星)、MXIC(旺宏)、dosilicon(东芯),(Winbond)华邦、ESMT等。