坏block标示在额外区域的 第六byte. 在坏block的第一或者第二page的第517byte(from512, 6th) 是non-FFh数据
然后建立一个 table 来记录所有坏block
扫描出坏block并标示以后就可以保证不对坏block进行读写.
方法: 从block address=0开始, 检查每个block的第一&第二page的 517address上是否是 FFH, 如果是, check next block.; 如果不是,create(or update ) invalid blocks table 然后check next block. 直到 the last block . end.
遇到坏block,会用芯片中另外一个地方的block来代替这个地址的block.但是为了提高内存空间的利用率, 读写操作出现ecc错误的时候不会产生block替换操作
方法:1 copy nth page 到另外一个block的 nth page中 2 copy1st-(n-1)th page 到另外一个block的 1st-(n-1)page中 3 在没有更新 invalid block table 前 不要删除坏block中意境写入的数据
指针操作(*8)
命令 00h 是A区域(0-255bytes), 01h是B区域(256-511bytes),50h是C区域(512-527bytes), 其中 00h 50h可以保持,直到下一个地址指针命令出现,01h却只能生存于一个操作中.
注意: 1 当01H用过一次, 地址指针会自动回到A区域.
2 00h 50h必须在80h之前writen
3 要programB区域,必须就在80h指令前一个写入01h.( program 和writen 什么区别?)
哈 后面就要看图理解了, 今天写到这里.
写的粗略了一点, 后面的过程要配合程序来看了, 所以nandflash读书笔记暂时停止. 等我再读读vivi, 遇到有新的部分再继续添加.