最近遇到一些BBT管理的问题,在查找问题原因的过程中将一些问题记录如下。其中较为繁杂,且得写几天。
NAND Flash是一种高密度低成本的存储体,在各种设备中被广泛使用。U盘等USB存储设备、SD卡、手机、固态硬盘等各种设备中使用的都是NAND芯片。其内部结构是按照块/页进行组织的,一个NAND芯片包含若干个块,块内有页组成。每个页也包含data区和spare区。由于制作工艺和成本的原因,在出厂的时候,NAND的spare区会存在坏块。那么如何对坏块进行管理呢?
总体上来讲NAND坏块管理方法分类,可分为如下几类:
l基于 FTL芯片的坏块管理
它使用一个额外的 FTL (FlashTranslation Layer)芯片对 NAND 进行管理,对外部屏蔽了坏块信息,U 盘、SD 卡、MMC 卡以及固态硬盘都使用这种管理方法。这种方式简化了 NAND 操作,但也使坏块信息对外部而言不可见,如果系统中出现了可能和坏块相关的问题,定位和调试变得困难,另外,FTL 芯片也需要额外的硬件成本。
l基于NAND文件系统的坏块管理
JFFS2、 YAFFS2、 FlashFx 这些专门针对 NAND 的文件系统可以对坏块进行管理。
lNAND管理中间件
有一些中间件(Middleware)专门用于 NAND 管理,比如 UBI。
l轻量级 NAND坏块管理
对 NAND进行管理的硬件或软件模块,不仅提供坏块管理,同时也支持对 NAND 的擦写操作进行负载平均。而轻量级的坏块管理只专注于坏块,并不提供擦写负载平均的支持,而且,它也不依赖于任何第三方的库。因此,轻量级的坏块管理方式降低了系统的复杂度&#x