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
- nand flash_笔记
- Flash_色彩
- NAND FLASH操作学习笔记
- qt210 nand驱动学习笔记
- nand flash学习笔记一
- NAND FLASH均衡算法笔记
- nand flash 驱动编写笔记
- NAND FLASH操作学习笔记
- NAND FLASH学习笔记之nand flash基础(一)
- NAND FLASH学习笔记之nand flash基础(二)
- NAND FLASH学习笔记之nand flash基础(三)
- NAND FLASH学习笔记之nand flash基础(一)
- NAND FLASH学习笔记之nand flash基础(二)
- NAND FLASH学习笔记之nand flash基础(三)
- nand
- nand
- nand
- nand
- Java并发编程中状态依赖性的管理
- linux系统编程之线程(二)
- 穷人做事、富人做市、商人做势[趋势]
- apple IOS的base64编解码
- 【幻化万千戏红尘】qianfengDay22-java基础学习:线程安全、synchronized、死锁
- nand flash_笔记
- 100V 降压恒流led驱动 FP7175
- light oj 1369 - Answering Queries
- HTML5 Web存储 sessionStorage localStorage
- JProfiler性能调优工具
- Andorid 常规二级分类列表选择
- Android屏幕适配基础
- 一套Windows上C/C++的编码转换函数
- 设计模式之 状态模式(银行账户状态实例)