文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>Nand结构及MTD操作

Nand结构及MTD操作

时间:2010-08-16  来源:BinChengfei

转载时请注明原文出处(http://blog.sina.com.cn/wyw1976)及作者邮箱([email protected])    

      NAND从物理角度看,就是一个连续存储空间,它由一系列的块(block)组成,而每个块是由一系列的页(Page)组成。

不同的NAND其页的大小可能是不一样的,例如对于SLC NAND,每页的大小为1024字节;而对于MLC NAND,每页的大小为2048字节。(SLC : Single Level Cell 每个单元存储一位;MLC : Multi Level Cell, 每个单元存储多位,因此其容量一般很大)。

      每页的后面还有一段OOB(Out of Bound),OOB不存放实际的数据,也就是说,用户层看到的那些文件绝对不会存放在OOB中,只会存在OOB之前的空间中;OOB的作用有两个:

(1)       存放ECC。 读取NAND时,可能会发生位反转(bit flip),即1变为0或0变为1,尤其是MLC NAND,这种情况更明显。NAND在存放数据的同时会生成ECC代码,一方面可以检测到位反转的发生;另一方面,如果位反转的位数在一定范围内,可以纠正这种错误。

(2)       存放文件系统相关的标志。例如JFFS2系统在格式化时,需要写入将一些CLEAN-Maker 标志写入OOB。

   

 

    一般对于NAND的读写操作都是基于MTD接口,基本操作有三种:

(1)       读, 对应的MTD的接口是mtd->read

(2)       写, 对应的MTD的接口是mtd->write

(3)       擦除,对应的MTD的接口是mtd->erase。擦除是NAND特有的操作,对于写操作,NAND只能将1变为0,而不能将0变为1,具体参考一片网上的文章:http://blog.163.com/qiu_zhi2008/blog/static/60140977200911374933539/

 

    在Linux kernel 中有一套基于MTD的测试程序,下载地址是www.kernel.org, 存放的目录是drivers/mtd/tests/*, 从中可以看出基于mtd接口的使用方法。

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载