文档详情

NAND Flash嵌入式存储系统结构分析.docx

发布:2022-06-13约3.45千字共4页下载文档
文本预览下载声明
第 第 PAGE 1 页 共 NUMPAGES 1 页 NAND Flash嵌入式存储系统结构分析 NAND Flash嵌入式存储系统结构分析 2011-04-25 13:50 来源:电源网 编辑:flash 目前市场上闪存芯片主要有两类,即NAND Flash(Not And Flash ROM)和NOR Flash(Not Or Flash ROM)。前者具有容量大、读写速度快、芯片面积小、单元密度高、擦除速度快、成本低等特点,更适合于大批量数据存储的嵌入式系统。如今Windows仍是桌面系统的主流,对FAT文件系统提供了自然?的支持。然而就技术而言,FAT文件系统并不适合Flash,由于Flash设备并不是块设备[1],为了不破坏兼容性,并在NAND型闪存中应用FAT文件系统,国际上提出了闪存转译层FTL(Flash Translation Layer)的解决计划。 1 NAND Flash嵌入式存储系统结构 基于NAND Flash的存储系统的设计首先要解决坏块问题。因为NAND Flash自身存在固有坏块并在擦除和编程中又随机产生坏块,因此为了提高设备的牢靠性应当将这两种操作簇拥在闪存不同的块中,以避开对某块的过度操作。 普通的基于NAND Flash嵌入式存储系统驱动结构分为三个层次:最底层是硬件操作接口,负责将主控芯片与Flash的控制管脚相连,这方面的固件主要实现对NAND Flash的物理操作;中间层是闪存转译层NFTL(NAND FTL),是封装在Flash驱动中的软件模块,其作用是将Flash模拟成与磁盘相类似的块设备,使对上层操作系统而言,NAND Flash就像一般磁盘一样被拜访。这一层主要是封装一些特别的复杂管理控制功能;最上面的层就是文件管理层,功能类似于一般磁盘上的通用文件系统,向上层提供标准的文件操作接口。基于NAND Flash的嵌入式系统存储结构原理图1所示。 按照以上两个方面,既要在驱动中实现坏块管理,又要举行块模拟,所以可用的办法有两种[2]:一是在上层文件系统中解决坏块问题,驱动层只实现本身的功能,文件系统为驱动层提供不变的接口,为上层应用程序提供牢靠透亮?????的服务。这种办法较容易,开发周期比较短,但只对特定应用的嵌入式系统有很强的适应性;其次种办法是在驱动层的NFTL中解决坏块问题,将不行靠的NAND Flash虚拟成牢靠的存储设备,为上层文件系统提供牢靠透亮?????服务,这种办法较第一种更复杂,但是此法具有较强的可移植性并能彻底断绝与文件系统的联系,其他文件系统也同样适用。 本文是以Samsung的NAND Flash K9F2808U0C作为存储芯片,设计了一种在NFTL上实现坏块管理并且实现延续数据读取的办法。 2 设计思想 2.1 闪存空间划分 K9F2808U0C是16 MB×8 bit的NAND Flash,共有1 024个Block,1 Block=16 KB,32 Page/Block,1 Page=528 B=(512 B+16 B),其中16 B为备用区,主要存放NAND Flash出厂坏块标志、ECC校验码以及用户自定义区。K9F2808U0C地址空间是24 bit,分三个周期依次送入NAND Flash的地址锁存器。本文用法的地址均为字节地址,数据类型为DWORD(4 B)。 将K9F2808U0C的存储空间划分为四个区:坏块映射表存放区、交换块区、坏块映射区和实际数据存放区。文件系统管理的空间就是实际的数据存放空间,2所示。 2.2 各分区宏定义 define FLASH_BLOCK_SIZE 0x40000 //16 KB/Block define FLASH_PAGE_SIZE 0x200 //512 B/Page define FLASH_SECTOR_SIZE 0x200 //1Page=1Sector(only K9F2808U0C) define FLASH_BLOCKS_TABLE 3//坏块映射表存放块数 define FLASH_SWAP_BLOCKS 5 //交换区的块数 define FLASH_BAD_BLOCKS_REMAP 50 //坏簇重映区的块数 define FLASH_MAX_ADDR 0xFFFFFF //Flash最大字节地址 各分区首地址计算公式: FLASH_BLOCK_TABLE_ADDR=FLASH_MAX_ADDR+ 1-3*FLASH_BLOCK_SIZE); FLASH_SWAP_BLOCK_ADDR=(FLASH_BLOCK_ TABLE_ADDR-5*FLASH_BLOCK_SIZE); FLASH_BAD_BLOCK_REMAP_ADDR=(FLASH_SWAP_
显示全部
相似文档