没找到合适的版块,因为相信这里有高手存在。不合适之处望版主留情。Nand Flash使用过程中会产生坏块,坏块的检测和坏块表的生成现在都没问题。
就是说标记坏快生成一张表记录了那些块好,那些块是坏的。但有个问题始终不知道怎么处理。就说这个坏块表到底要存在哪儿?
如果我把这个表放在某个地方,而这个块刚好也坏了怎么办?那不就全完了,连坏块表都找不到了
如果保存多个坏块表(比如4个)在不同位置,但怎么去定位这些位置呢?毕竟起初需要一个入口,至少要保证读到一个正确位置然后索引出其他各种表及数据。
但所有的块都有可能坏,该怎么办?

解决方案 »

  1.   

    首先我们要定义一个坏块管理表:unsigned char BadBlockTable[128],此数组可以存储1024个Block状态,即每一个字节存储8个Block状态。我们要存储一批数据到NAND Flash中去某个Block时,先执行Block擦除操作,然后分析该Block的1st Page和2st Page中的每个位是否全是FFH,如果全是FFH,则在BadBlockTable数组当前Block对应的字节位给置0,否则置1。如果是1表示当前的块是不能存储数据的,这时需要更换下一个Block来存储这些数据,这样我们重复上面的动作分析再进行分析是否可以存储数据,该块能存储就存储到该块中去。
      

  2.   

    Nand Flash 通常会保证block0(即第一个block)是好块。
    不过不一定要把坏块表放在block0中,可以放到其它好的block中,
    但是要在block0中建立映射表,指示坏块表及其备份保存在哪些block-page-sector中。
      

  3.   

    看了不懂,坏块表还真的是第1次听说.标记坏块不是在SPARE BUFFER里面吗?还要单独整个表出来?