skyilyskyily.blog.chinaunix.net
skyily
全部博文(144)
2010年(16)
2009年(128)
Zane_Yu
tasteswe
zwrvvv
xiao888l
zimuqing
leilelei
Phyllis6
jonathan
denghai1
wbdwbd04
itTangze
lifj1234
18141908
AAABug
分类: LINUX
2009-06-23 11:25:27
NAND Flash的寻址方式和NAND Flash的memory组织方式紧密相关。NAND Flash的数据以bit的方式保存在memory cell,一个cell中只能存储一个bit。这些cell以8个或者16个为单位,连成bit line,形成byte(x8)/word(x16),这就是NAND的数据宽度。 这些Line会再组成Page,典型情况下:通常是528Byte/page或者264Word/page。然后,每32个page形成一个Block,Sizeof(block)=16.5kByte。其中528Byte = 512Byte+16Byte,前512Byte为数据区,后16Byte存放数据校验码等,因此习惯上人们称1page有512个字节,每个Block有16Kbytes; 现在在一些大容量的FLASH存贮设备中也采用以下配置:2112 Byte /page 或 1056 Word/page;64page/Block;Sizeof(block) = 132kByte;同上:2112 = 2048 +64,人们习惯称一页含2k个字节,一个Block含有64个页,容量为128KB; Block是NAND Flash中最大的操作单元,擦除可以按照block或page为单位完成,而编程/读取是按照page为单位完成的。 所以,按照这样的组织方式可以形成所谓的三类地址: -Block Address 块地址 -Page Address 页地址 -Column Address 列地址 首先,必须清楚一点,对于NAND Flash来讲,地址和命令只能在I/O[7:0]上传递,数据宽度可以是8位或者16位,但是,对于x16的NAND Device,I/O[15:8]只用于传递数据。 清楚了这一点,我们就可以开始分析NAND Flash的寻址方式了。以528Byte/page 总容量64M Byte+512kbyte的NAND器件为例:因为1page=528byte=512byte(Main Area)+16byte(Spare Area)1block=32page = 16kbyte64Mbyte = 4096 Block 用户数据保存在main area中。512byte需要9bit来表示,对于528byte系列的NAND,这512byte被分成1st half和2nd half,各自的访问由所谓的pointer operation命令来选择,也就是选择了bit8的高低。因此A8就是halfpage pointer,A[7:0]就是所谓的column address。32个page需要5bit来表示,占用A[13:9],即该page在块内的相对地址。Block的地址是由A14以上的bit来表示,例如64MB的NAND,共4096block,因此,需要12个bit来表示,即A[25:14],如果是1Gbit的528byte/page的NAND Flash,共8192个block,则block address用A[30:14]表示。NAND Flash的地址表示为:Block Address | Page Address in block | half page pointer | Column Address地址传送顺序是Column Address , Page Address , Block Address。例如一个地址:0x00aa55aa 0000 0000 1010 1010 0101 0101 1010 1010 由于地址只能在I/O[7:0]上传递,因此,必须采用移位的方式进行。例如,对于64MBx8的NAND flash,地址范围是0~0x3FF_FFFF,只要是这个范围内的数值表示的地址都是有效的。 以NAND_ADDR为例: 第1步是传递column address,就是NAND_ADDR[7:0],不需移位即可传递到I/O[7:0]上, 而halfpage pointer即bit8是由操作指令决定的,即指令决定在哪个halfpage上进行读写,而真正的bit8的值是don
上一篇:bash中的alias命令实现(自己实现)
下一篇:vivi中bon和part的区别
登录 注册