NAND FLASH特性说明
1) NAND FLASH 的特殊性。 1)存在坏块。由于NAND生产工艺的原因,出厂芯片中会随机出现坏块。坏块在出厂时已经被初始化,并在特殊区域中标记为不可用,在使用过程中如果出现坏块,也需要进行标记。
2) 易出现位反转。NAND FLASH更易出现位反转的现象,如果位反转出现在关键文件上,会导致系统挂机。所以在使用NAND FLASH的同时,建议使用ECC/EDC算法确保可靠性。
3) 存在Spare Area。正因为NAND FLASH有着上面的两项特殊的地方,Spare Area就扮演作存放坏块标志,ECC值以及芯片信息和文件信息的作用。
4) 多维的空间结构。NAND FLASH一般由block、page、Main Area、Spare Area等结构组成。所以在有的文件系统中就衍生出各种分区信息和扇区信息等。
2.NAND FLASH 烧录的复杂性。
1)处理坏块。由于NAND存在坏块,导致地址空间不是连续的。所以正确的处理坏块是保证NAND FLASH烧录后能够正常运行的关键。从大的方面来说,处理坏块常用的最有效的主要为两种方法:a.跳过;b.保留替代。也有部分客户为了使用方便,并没有把坏块处理的概念引入,直接在坏块上写过,这种方法虽然简单,但容易产生很多不稳定的因素。
2)计算ECC。ECC/EDC算法具有查错,纠错的功能,并且在NAND FLASH使用的大多数环境,需要带有ECC算法的。目前广泛使用的为Samsung的汉明码(Hamming code),分为512Byte和256W两种。还有功能更为强大的4-bit ECC 和Computer ECC。由于ECC算法比较多,每个算法个体又具有比较强的可变性(位组织,分段计算等),而且在Spare Area存放的位置也不能统一,所以无法做成统一的算法。
3)启动代码区检查(Boot Check)。在启动区的代码要求存放在NAND FLASH对应块中是没有坏块的,一旦坏块出现,程序在NAND 中启动就会失败。用户可以定制启动代码检查并报错功能。
4)定位烧录。NAND FLASH在配合CPU一起运行的过程中,一些代码或者文件是需要从一个确定的地址读入运行的。所以在烧录过程中,烧录文件为多个,或者由多个文件合成的烧录档案,需要进行分区并且定位烧录,这种方式我们称之为分区模式(Partition),用户可以结合其ECC, Boot Check 等功能,向我们公司定制。
5)非标准坏块标志。一些客户为其系统的保密性,公司内部技术的兼容性,将坏块标志放在非标准的位置,或者使用非0xFF作为好块标志并带有其他意义(如只读)。如有这样的情况,请给予说明并定制算法。
6)其他烧录确认标志和文件的分区信息。