一种嵌入式设备中NAND Flash 存储系统解决方案
扫描二维码
随时随地手机看文章
0 引言
嵌入式系统主要由微处理器、存储设备、总线标准、I/O外设等几大部分构成。随着制造工艺的成熟和体系结构的不断优化,如今无论面向低端应用还是高端应用,从8 位到64 位,都有很大的选择范围,能够很好的完成复杂的数据信息处理。现在需要的更多的是如何有效的存储和管理越来越多的数据,随着对大容量存储需求的日益迫切,NAND Flash因为其自身的特点成为了嵌入式设备,特别是消费类手持嵌入式设备的最主要存储解决方案。目前针对NAND Flash 的研究主要集中在硬件和软件两大块,硬件方面的研究主要希望尽一步加大存储容量,提高读写速度及数据可靠性,降低制造成本,统一各厂家的标准等;软件方面的研究主要集中在如何实现一个更优秀NAND Flash 的驱动程序。NAND Flash的驱动程序中牵涉到很多问题,比如如何更好的进行垃圾收集,负载均衡,坏块管理等等。本文主要介绍我们的NANDFlash 存储系统的驱动程序设计,主要是基于Linux 操作系统。1 NAND Flash 存储系统的总体设计
NAND Flash 存储系统的分层结构如图1 所示。它由用户层、内核层与硬件层组成:用户层就是直接与用户联系,实际对存储器提出读写请求的应用程序,比如cp、rm 等命令,比如对存储器有读写请求的应用程序;内核层主要包括文件系统,比如EXT3、EXT2、FAT32 等文件系统,由于我们在接下来的块设备层中实现了闪存翻译层(FTL),所以文件系统可以采用任何通用的文件系统,而不需要采用特殊的针对NAND Flash 的文件系统,比如JFFS2 等,块设备驱动层,主要实现统一的Linux 块设备驱动,主要完成块设备注册、定义块设备操作、请求处理等工作,NAND Flash 设备驱动层,在这里NAND Flash设备驱动又分为FTL(flash translation layer)层与LLD(low leveldriver)层,由于NAND Flash 是一个特殊的存储设备,具有自身的特点,不同于一般的块设备,所以需要FTL层来进行一个转换和翻译的功能,使得上层可以像对一般块设备进行操作那样来对NAND Flash 进行操作,使得NAND Flash 的特殊性对于FTL 层以上是透明的不可见的,LLD 层主要用来直接驱动控制器来完成底层的具体操作,例如最基本的页读、页写、块擦除等操作;硬件层由NAND Flash 控制器和具体的NAND Flash 芯片构成。
嵌入式设备NANDFlash存储系统的设计与实现.pdf