Nand Flash两种坏块管理方式
本文章介绍的两种坏块管理方式为:非顺序映射 和 顺序映射
一、非顺序映射
在Flash单独划分一个区域作冗余区,当有坏块产生时,将坏块的数据复制到冗余区,并建立一个映射表。此时数据的物理地址是不连续的。
优点:只需要一个冗余区,节省空间,坏块的分布对性能没有影响。
缺点:需要建立映射表,映射表所在块也可能是坏块,还需要建立映射表的备份
二、非顺序映射
每个分区建立一个冗余区,当有坏块产生时,在坏块所在分区里将该坏块的所有数据往后移动一个block。此时数据的物理地址是连续的。
优点:无须建立映射表,驱动的实现比较简单。
缺点:
1. 冗余空间划分过大导致空间浪费,冗余空间划分过小当Flash坏块集中在某个分区时将无法正常使用。
2. 当使用过程中产生坏块时,为了保持数据的连续性需要把数据整体后移,如果分区数据较多,移动时需要花费很长时间。
备注:两种管理方式都有优缺点;一般像UCOS等小系统,已经有FAT32等文件系统管理机制,建议使用顺序映射;像linux系统,已经有mtd机制,则可以使用非顺序映射,这样更能保证数据的完整性。