none
NandFlash驱动 RRS feed

  • 问题

  •  

    如果NandFlash的初始坏块信息被檫除了。有什么办法最大限度的识别出坏块。

    最基本的就是通过檫除或编程,如果状态字显示出错,则基本判定此块为坏块。

    但是,网上有人说,出厂标记的坏块并不表示当下就不能用,由于出厂前的测试环境比较严格,而现实使用环境比较宽松,可能使这些出厂坏块在一段短小的时间内可用,但若没有保存出厂坏块信息,可能会成为很大的隐患。

    有什么办法吗?因为我的NandFlash里存的是OS Image。如果用几次就有问题,很头痛。这是一开始没保存出厂坏块信息衍生的问题。

    2008年8月11日 8:04

答案

  •  

    刚才问了三星的技术支持,结果是两字:废掉!

     

    教训:datasheet上的每个字都要仔细揣摩啊。不可轻视,然后果严重。

     

     Any intentional erasure of the original initial invalid block information is prohibited.

    2008年8月12日 1:56

全部回复

  •  

    我修改了程序。在烧录前,先读每块的第一,二页的2048字节相与,如果为0xFF,就檫除块,成功则标记为0xff,失败则标记为0x7f;如果不为0xff,就直接标记为0x7f。最后将8196块信息写到第一块的前四页。

    我拿先前直接檫除后标记的NandFlash来烧录,发现如果是坏块读出相与不等0xff,檫除时没有发现坏块。按datasheet上说,一旦檫除,坏块信息会被檫除,可是这里又似乎不是这样。为什么呢?

    2008年8月12日 1:05
  •  

    刚才问了三星的技术支持,结果是两字:废掉!

     

    教训:datasheet上的每个字都要仔细揣摩啊。不可轻视,然后果严重。

     

     Any intentional erasure of the original initial invalid block information is prohibited.

    2008年8月12日 1:56
  • 一般NandFlash在出厂的时候,里面都会带有坏块标记。Nandflash分为大page和小page两种,坏块标记的位置好像也不一样,具体要看datasheet。坏块一般会被标记在一个block的第一个page或者第二个page的带外数据中。

     

    三星的datasheet是这样说的:在出厂时,三星已经对Nandflash中的坏块作了标记。如果对这些坏块进行了擦除,三星不保证坏块标记还存在,也就是说擦除操作可能擦除坏块标记,也可能没有擦除。我使用过的NandFlash中如果对坏块进行了擦除,很多时候坏块标记还在,这也是正常的。当然也可能出现标记被擦除的情况,如果是这样,只能把整个块写一遍,再读出来对比一下,看看有没有错误,如果有错误,表示为坏块。

     

    所以,楼主对Nandflash的坏块进行了擦除,并不一定导致NandFlash废掉。

     

    2008年8月12日 7:34
  • 注意:

    如果你擦除了出厂坏块信息,并且没有记录下来,如果作为产品的话,一定要废掉这颗NandFlash。否则,后果严重。

     

    因为出厂坏块可以简单的分为两种,一是当下擦除或编程状态字会报错,实际也是错的;二是当下的擦除编程读出这些都没错,但是用没多久(也许几天,也许几个月,总之比正常的使用坏块出现时间早很多)就有问题了。想想早期的优盘,为什么那么快出问题,我觉得就是这个问题没重视。我在网上很多的博客或论坛上发现很多人对这个问题不重视。如果是大公司,会死得很惨。也许有危言耸听了!

     

    当然如果只是做实验用的话,还是可以的。

     

     

    2008年8月19日 3:51