nand flash_笔记

来源:互联网 发布:棒球帽推荐 知乎 编辑:程序博客网 时间:2024/06/11 17:28

名次解释:

BBM  :  Bad Block Management 坏块管理

BBT  : Bad Block Table 坏块表

ECC : Error Correction Code 错误校验码

MTD : Memory Technology Device 内存技术设备


nand flash结构图


对于flash,读取/写入的最小单元 是 Page/页,一般大小是2KB 4KB 8KB

擦除的最小单元是 Block/块,一般大小是128KB  256KB  512KB


管脚说明:

IO0 - IO7 :数据/地址复用

CLE :命令锁存

ALE :地址锁存

CE :芯片使能

RE :读使能

WE :写使能

WP :写保护

R/B :就绪/忙


典型特性:

1、页擦除时间是200us,慢的800us

2、块擦除时间是1.5ms

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

4、串行访问一个数据的时间是25ns

5、页寄存器(Page Register),对于每一片plane,都有用于缓存将要读写的一页数据,又叫页缓存

nand flash的读写数据流向:


举例:nand flash 数据读取时序图



物理地址 = 块大小 * 块号  +  页大小 * 页号  +  页内地址


案例:

型号K9K8G08U0A,8192个块,每个块64页,每个页2K

访问第7000个块中的第64页的1208字节的地址,物理地址 = 128K *7000 + 2K *64 +1208 = 0x36B204B8

nand flash的地址周期组成:


nand flash的地址周期有5个,2个列周期column address,3个行周期row address

A0 - A10是业内地址,范围0 - 2047

A11用于表示业内的oob区域,其大小是64字节

A12 - A30 是页号

A18 - A30 是块号

所以:0x36B204B8 = 11  0110  1011  0010  0000  0100  1011  1000

周期1  : A0 - A7        1011 1000       0xB8

周期2  : A10 - A8                  100       0x04

周期3  : A19 - A11    010 0000 0      0x40

周期4  : A27 - A20    110 1011 0       0xD6

周期5  : A30 - A28                 11 0       0x06

注意:A11用于oob位置,只有当页内地址属于2048-2111的时候,A11才会有效果

在Linux源码/drivers/mtd/nand/nand_base.c中,是这样处理的:

static void nand_command_lp(struct mtd_info *mtd, unsigned int command,                int column, int page_addr){......        /* Serially input address */        if (column != -1) {......            chip->cmd_ctrl(mtd, column1, ctrl); /* 发送Col Addr 1 */            ctrl &= ~NAND_CTRL_CHANGE;            chip->cmd_ctrl(mtd, column >> 8, ctrl); /* 发送Col Addr 2 */        }        if (page_addr != -1) {            chip->cmd_ctrl(mtd, page_addr2, ctrl); /* 发送Row Addr 1 */            chip->cmd_ctrl(mtd, page_addr >> 8, /* 发送Row Addr 2 */                       NAND_NCE | NAND_ALE);             /* One more address cycle for devices > 128MiB */            if (chip->chipsize > (128 << 20))                chip->cmd_ctrl(mtd, page_addr >> 16, /* 发送Row Addr 3 */                           NAND_NCE | NAND_ALE);         }}

虽然操作是读取页内部分数据,但硬件仍会将整个页读取到页缓存中。


nand flash相关规范

ONFI 规范   Open Nand Flash Interface specification

有Intel主导,统一了nand flash的操作接口包括操作命令。

http://onfi.org/specifications/


LBA规范

LBA Nand Flash : Logical Block Address,逻辑块寻址的Nand Flash,Toshiba主导

普通nand flash是按物理块寻址,缺点是坏块情况下的软件工作量繁重。

LBA把ECC校验、坏块管理、负载平衡的工作放在硬件上实现。

http://www.toshiba-components.com/prpdf/5678E.pdf













0 0