控制器特性:
- support read/erase/program NAND flash.
- hardware ECC (Error Correction Code) (硬件生成校验码,软件负责校验)
- 不能通过DMA访问
引脚配置:
D[7:0]: data/command/address I/O
CLE : command latch enable
ALE : address latch enable
nFCE : flash chip enable
nFRE : flash read enable
nFWE : flash write enable
R/nB : NAND Flash busy/ready (input)
Block and Page:
1 block = 32 pages
1 page = 512B(datafiled) + 16B(oob)
三类地址:
Column Address: 列地址,地址的低8位
Page Address: 页地址
Block Address: 块地址
Operation Feature:
- 擦出操作的最小单元是块
- NAND flash 存储单元只能从1->0, 所以对其进行写入操作前必须擦除。
- OOB的第6字节标示是否坏块, 如果不是坏块为0xff, 否则是坏块。
- OOB前3个字节存放NAND falsh硬件ECC码。
寻址方式:
-A[7:0] column address, which byte
-A[8] 0: 1st half page, 1: 2nd half page
-A[13:9] page address
columnAddr = srcAddr%512; //column address
pageAddr = srcAddr >> 9; // page address
64MB 及以上NAND flash 寻址:
1 NAND_ADDR[7:0] //[8] 是由硬件决定的
2 NAND_ADDR[16:9]
3 NAND_ADDR[24:17]
4 NAND_ADDR[25]
Note: NAND设备存在坏块,为和上层文件系统接口,NAND设备的驱动程序必须给文件系统提供一个可靠的存储空间,这就要求ECC校验、坏块标注、地址映射等一系列手段达到可靠存储的目的。
SSFDC软件规范中,详细定义了如何利用NAND设备每个页中的冗余信息来实现上述功能。这个软件规范中,很重要的一个概念就是块的逻辑地址,它将在物理上可能不连续、不可靠的空间分配编号,为他们在逻辑空间上给系统文件提供一个连续可靠的存储空间