K9F2G08U0B,来自于三星半导体的一款NandFlash,网址:
www.samsung.com。作为应用最广泛的移动存储设备Nand Flash为计算机系统的微型化,低功耗,以及存储速度的提升做出了显著的贡献,看一下这款来自于三星的Nand flash。
特性:
1.分类256M x8bit Nand flash
2.供电电压,2.7~3.36V,参考使用3.3V
3.存储单元组织结构:
(256M+8M)x8bit
提供的数据寄存器,2K+64 Byte
4.自动编程和擦除大小
页编程:2K+64 Byte
块擦除:128K+64 Byte
5.页读周期:
页大小:2K+64Byte
随机读速度:最大25us
顺序读:最小25ns
6.快速写周期:
页编程时间:典型值200us
块擦除时间:典型值1.5ms
7.支持命令,地址,数据多路复用器IO端口
8.硬件数据保护锁定
9.可靠的CMOS浮栅技术支持百万次的编程与擦写周期(1bit/512Byte ECC),于10年的数据保存周期
10.支持命令驱动操作
11.可以用来保护知识产权的唯一的ID
12.封装TSOP1- 48
23. (2K+64)x8 Byte 个数据寄存器提供host和内存存储进行数据传输(一页flash存储单元的数量Data+Ecc)
24. rows(pages)数量:共17行,(A12~A28,每一行代表一页)。columns数量:共12列(A0~A11包括data+ecc,共2K+64Byte)
25.支持2个plant,可以同时操作两个plant上的block。
信号定义,依旧是先上图:
信号定义:
从上图可以看出,这款8bit位宽的Flash设计十分简单,引脚数量很少,数据,指令,地址都是复用IO端口IO0~IO7来传递的,其他的读写,指令,地址,数组,片选,写保护,准备/忙信号,分别是由不同的引脚来控制,他们都是在相关的信号的边缘采样,获取相应控制信号,而这一切只需要在host端设置好合适的时序就可以完成。
同事我们的TQ的板子使用的是3.3V供电这个也是需要注意的。
1.Flash硬件模型:
从下图可以看出,所有的命令和数据,地址都是从IO0~IO7输出,通过集成在Flash内部的控制逻辑来解码生成对应用flash内部的存储阵列的寻址地址,然后内部控制逻辑会自动把需要读写的数据写入存储阵列或者是把需要写入的数据输出到输出缓冲区。
2.Flash内部的存储阵列软件模型:
从下面的图,很容易可以看出页(最小读写的单位),块,设备容量,这三者之间的关系,以及256M x8的用户可用容量,和ECC区域的分别,以及IO读写时地址的时序。
3.命令列表:
4.关于坏块:
厂家只能保证Block0在1000次的烧写和擦除1bit/512Byte ECC周期下无坏块,其他的block的坏块必须由软件来标记并且保留起来,不被使用。每一个Page的最后2个字节用来保存一个page的512Byte的存储单元的有效状态值,1bit代表一个字节。Flash出厂的时候都被擦除成了FF,或者出厂就标示出了那些是坏块我们通过读取第512~528字节来识别那些是坏块。在烧写或者擦除flash的时候一旦发现失败,我想需要通过如下的,步骤来把数据拷贝到另外的没有坏块的block保证数据的完整性,当然我们烧写失败也不一定是真正的有坏块出现,虽然说Nand flash随着使用越久坏块会慢慢的出现,我们也可以通过重新格式化flash来修复那些
看似是坏块的“伪坏块”。当然我们对flash进行擦除和烧写的时候需要严格按照IC的规范来进行,否则可能会影响到flash的寿命和导致异常的错误。
先记录到这来,下次再补充。