Chinaunix首页 | 论坛 | 博客
  • 博客访问: 288142
  • 博文数量: 68
  • 博客积分: 3061
  • 博客等级: 中校
  • 技术积分: 652
  • 用 户 组: 普通用户
  • 注册时间: 2008-05-27 11:39
文章分类

全部博文(68)

文章存档

2018年(1)

2017年(2)

2016年(1)

2014年(2)

2012年(6)

2011年(14)

2010年(38)

2008年(4)

我的朋友

分类: LINUX

2010-07-27 18:48:12

一、组织形式
1.NAND Flash 的数据是以bit的方式保存在memory cell。
2.这些cell 以8 个或者16 个为单位,连成bit line,形成所谓的byte(x8)/word(x16),这就是NAND Device 的位宽。
3.Line 会再组成Page,这里有多种组织形式有页大小为2K和512B的组织形式。
4.每32page组织成一个block。
综上所述:1block = 32page = 16k;
              1page = 512byte + 16byte/256word +1word(spare,校验用);但block和                   page关系和具体芯片有关。
5.以页为读写单位,以块为擦除单位。
6.nand flash 会分为若干block组成,block内有若干page
二、I/O接口
1.地址和命令只能在I/O[7:0]上传递,数据宽度是8 位。
2.根据组织形式能知道一个nand address可以分解为三种地址:
block address:具体在哪一个block中
page address:具体在哪个block的哪个page中
column address:具体在哪个page里的那个byte/word.
3.以512Mbit x 8形式组成的nand为例:有效地址范围0x0000 0000 --0x03FF FFFF。
   linux地址表示范围:[31:0],而nand只有[7:0],所以,需要通过位移来操作。
   地址传递顺序为:column  page  block
   column:[7:0]最多能表示到256个字节,所以将一个page分为两个半页
                half page,而此时指的是哪个half page,我们并不需要关心,而是由 
                [8]来表示。
   page:每个block由32page 组成,只需5位,将[31:0]这个地址>>9, 得到[13:9]。
   block: [31:0]>>14得到block号。512Mbx8(64MB)需12位表示block[25:14]。

三、读命令
1.read1 读数据区,read2 读spare 数据。由于读写以页为单位所以给定起始地址后将会读到该页的最后一个字节(可以包括spare数据)。未完 待续~~

 坏块的识别:
芯片的擦除操作是把所有的位变成1。而坏块的状态标记位由page内的第261个Byte进行标记
阅读(941) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~