1、坏块的定义及坏块的出厂数量要求
我们以GD5F1GQ5REYIG为例:
1)在出厂时,就有一些blocks无效,官方会在手册中声明全部block数量和可用block的最小数量(NVB);
2)坏块(invalid block)是至少有一页含有多个bad bit,且能够被ECC 校验出来的。虽然额外的坏块会随着使用增加,但在整个Flash芯片周期内,可用的block数量仍然满足NVB的要求。
2、坏块的检测方法
1)出厂坏块标记
在出厂时,工厂在each block的first spare area,将bad block设置mark(0x00);
2)出厂坏块标记的使用
在进行烧写或者擦除操作时,应该首先检查each block的first page的first spare area location,看看是否是非0xFF的数据,如果是,代表这个block是坏块;
3)出厂坏块检测具体流程
对于flash的操作(读、擦除、写),流程中有3个关键地方,我们需要掌握,操作指令、操作地址和操作时序。
出厂坏块检测其实就是把每个block的第一页读到cache中,然后在cache中读出0x800位置的字节内容。
3-1 操作命令:
13H (PAGE READ to cache)
0FH (GET FEATURES command to read the status)
03H or 0BH (Read from cache)/3BH (Read from cache x2)/6BH (Read from cache x4)/BBH (Read from cache
dual IO)/EBH (Read from cache Quad IO)/EEH (Read from cache Quad IO DTR)
3-2 操作地址:
页地址:页地址和block地