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

发布者:cwk2003最新更新时间:2011-05-05 关键字:NAND  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_

  BLOCK_ADDR-50*FLASH_BLOCK_SIZE);

  FLASH_MAX_SECTOR_ADDR=(FLASH_MAX_ADDR-

  3*FLASH_BLOCK_TABLE_ADDR-5*FLASH_SWAP_

  BLOCK_ADDR-50*FLASH_BAD_BLOCK_REMAP_ADDR);

  文件系统管理的最大字节地址。

[page]

  任意地址Addr:

  所在块地址:Addr&(~(FLASH_BLOCK_SIZE-1));

  块内偏移地址:Addr&(FLASH_BLOCK_SIZE-1);

  块中的页:(Addr&(FLASH_BLOCK_SIZE-1))/FLASH_

  PAGE_SIZE;

  2.3 分区功能设计

  坏块映射区存放复制3份的坏块信息BBI(Bad Block Information)表。复制3份是预防系统突然断电,造成BBI表数据丢失。选择最后3个块,主要是出于固件设计。当Flash首次上电,固件程序通过读取Flash ID,获得设备的容量等信息,然后从Flash的最后一块中寻找BBI表,如果最后一块没有发现BBI表,则认为此块为坏块,继续前移寻找,依此类推,直到在预留的3个块中找到,并将其数据读入到在主控芯片为其开设的RAM中。如果还找不到,则固件认为该片Flash没有BBI表。

  交换块区是对NAND Flash进行擦除或写操作时用来临时存放数据,共分配5个块。选取5块是出于可靠性设计。用一个数组FlashSwapBlockStatus[FLASH_SWAP_BLOCKS]记录交换块状态:有效还是已经损坏。初始化时,固件认为所有的交换块都是有效块,在随后对其进行擦除或写操作时,通过读Flash状态寄存器判断该交换块的真实状态,并记录在数组中。交换块的管理围绕固件请求返回当前可用交换块地址或当前正在使用的交换块地址,并判断标记当前使用的交换块状态为坏。

  坏块映射区是当主机向数据区写数据时,检测到当前块(数据区)为坏块时,将数据写到坏块映射区中的相应好块中,并且将这两个块的块地址记录到BBI表中,以后主机若要对当前块(数据区)访问时,只需读BBI表就可以找到相应映射块,从而代替坏块的访问。这样就使文件系统所见逻辑块地址LBA(Logical Block Address)变成连续的,但实际上物理块地址PBA(Physical Block Address)可能并不连续。上述方法就是坏块管理的精髓。出于保守设计本文共选50块作为重映块。用数组FlashRemapBlockStatus[FLASH_BAD_BLOCKS_REMAP]标识坏块映射区的状态:未使用、已使用还是已经损坏。初始化时认为坏块映射区中所有块都是好块。

 

  目前市场上闪存芯片主要有两类,即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所示。

  

  根据以上两个方面,既要在驱动中实现坏块管理,又要进行块模拟,所以可用的方法有两种:一是在上层文件系统中解决坏块问题,驱动层只实现本身的功能,文件系统为驱动层提供不变的接口,为上层应用程序提供可靠透明的服务。这种方法较简单,开发周期比较短,但只对特定应用的嵌入式系统有很强的适应性;第二种方法是在驱动层的NFTL中解决坏块问题,将不可靠的NAND Flash虚拟成可靠的存储设备,为上层文件系统提供可靠透明服务,这种方法较第一种更复杂,但是此法具有较强的可移植性并能彻底断绝与文件系统的联系,其他文件系统也同样适用。

  本文是以Samsung的NAND Flash K9F2808U0C作为存储芯片,设计了一种在NFTL上实现坏块管理并且实现连续数据读取的方法。

 

关键字:NAND  Flash  嵌入式存储系统 引用地址:NAND Flash嵌入式存储系统结构分析

上一篇:处理器外接SDRAM的控制技术介绍
下一篇:LSI 6Gb/s SATA+SAS 存储适配器出货量达75万套

推荐阅读最新更新时间:2024-05-02 21:22

SK海力士收购英特尔NAND闪存及SSD业务获得反垄断机构批准
SK海力士今日宣布,针对公司的英特尔NAND闪存及SSD业务收购案获得了中国反垄断机构-国家市场监督管理总局(SAMR)的批准。 随着SAMR的批准,SK海力士获得了所有8个不同司法辖区的反垄断机构批准。 SK海力士将继续为交割做准备, 达成所有交割条件。第一阶段交割的对价为70亿美元,交割时SK海力士将从英特尔接管包括SSD相关的IP及员工在内的SSD业务和大连资产。 SK海力士表示,“真诚欢迎和感谢中国反垄断机构的批准。SK海力士将继续推进并购后的整合流程以提高NAND闪存及SSD业务的竞争力。” SK海力士官方说明:此前外界猜测,鉴于中美两国在半导体领域的紧张关系以及该交易涉及各国利益的复杂局面,SK海力士将难以获得中国对该
[手机便携]
三星和海力士公司提高NAND闪存价格
据彭博资讯社(Bloomberg)报道,三星公司(Samsung)和海力士公司(Hynix)今年第一次分别提高了NAND闪存的价格。   三星公司是全球最大的NAND闪存供应商。报道引用了三星公司投资部主管Chu Woo Sik的话说,该公司在四月底将NAND闪存的价格提高了“小于百分之十”。   该报道还称,另一家韩国公司海力士也在上月底提高了NAND闪存的价格。这个报道对NAND闪存的制造商来说是一个好消息。   据DRAMeXchange的报道,今年年初以来,由于MP3市场的需求突然下降以及其它的一些原因,NAND闪存的现货价格己狂跌了50%以上。
[焦点新闻]
SK 海力士公布新NAND Flash 发展规划,800+层,200TB 容量
目前,两大韩系NAND Flash 厂商──三星及SK 海力士在之前就已经公布了新NAND Flash 产品的发展规划。其中,三星宣布推出136 层堆叠的第6 代V-NAND Flash 之外,SK 海力士则是宣布成功开发出128 层堆叠的4D NAND Flash,并已经进入量产阶段。不过,虽然两家厂商竞相推出NAND Flash 的新产品,但是堆叠技术的发展至今仍未到达极限。所以,SK 海力士日前在一场会议上就公布了公司的规划,预计在2030 年推出800+ 层的NAND Flash,届时将可轻松打造出100 到200TB 容量的SSD。 在日前举行的「 Flash Memory Summit 」 大会上,SK 海
[嵌入式]
SK 海力士公布新<font color='red'>NAND</font> <font color='red'>Flash</font> 发展规划,800+层,200TB 容量
用单片机实现通用存贮器IC卡的读写
1 概述 通用存贮器IC卡是由通用存贮器芯片封装而成的,由于它的结构和功能简单,生产成本低,使用方便,因此在各领域都得到了广泛的应用。目前用于IC卡的通用存贮器芯片多为E2PROM,其常用的协议主要有两线串行连接协议(I2C)和三线串行链接协议,其中比较常用的是ATMEL公司生产的AT24系列芯片。以该系列中的AT24C01为例,它具有1k的存贮容量,适用于2V~5V的低电压/标准电压的操作,具有低功耗和高可靠性等优点。而AT89C2051 虽是ATMEL公司89系列单片机的低档型,但它具有2k的FLASH ROM(可重编闪速存贮器)、128×8位内部RAM及全静态操作方式,同样也具有低功耗和较强的功能。下面以AT24C205
[单片机]
用单片机实现通用存贮器IC卡的读写
高性能FLASH存储器在DSP电机智能保护中的应用
摘要:DSP芯片以其高速、实时性等优点逐步被用到电机保护中,利用高性能外围器件尤其是外围存储器与DSP的硬件匹配是充分发挥其优点的必要条件。文中以基于TMS320C32高速CPU为核心芯片的智能型电机保护装置为模型,介绍了高性能FLASH芯片Am29F010B与DSP芯片的硬件接口电路、软件编程技术以及应注意的问题和设计技巧。 关键词:Flash存储器 DSP 嵌入式算法 Am29F010B 国内的电动机保护装置种类繁多,但随着现代大中型电动机对保护要求的不断提高和VLSI技术的不断进步,传统的基于热敏电阻、机械式继电器和电子式等保护模式均因可靠性不高,容易出现误操作等缺点已不能满足需要;而以单片机为核心的数字或保护装置的运
[应用]
三星电子2018年获利大看好?为什么呢
在OLED面板竞争者量产进度不断递延,加上Flash、DRAM报价因市场寡占结构确立,后续易涨难跌格局难变,三星电子(Samsung Electronics)2017年第2季获利以逾136亿美元首度超前苹果(Apple)的财报内容,未来一段时间内恐成常态,台湾半导体业者指出,以2018年全球OLED面板市场仍然供不应求盛况,三星电子独享逾90%市占率的独霸结构不变,加上全球DRAM市场供给增加明显有限,2018年报价走势仍然持续看涨不看跌,哪怕Flash报价有比较多杂音,但三星电子还是可以持盈保泰的竞争力,将让三星电子2018年获利表现往上膨胀到一个最新的恐怖境界,在全球科技产业竞争向来有人是英雄、钱是胆的惯例下,哪怕三星电子短期
[手机便携]
奥地利微电子为代工用户扩展CMOS、高压、高压FLASH和RF多项目晶圆服务
针对高压CMOS、高压 CMOS 嵌入式 FLASH、SiGe-BiCMOS 和 CMOS 专业工艺的原型时间表将更加全面 中国 —— 奥地利微电子的全方位服务晶圆代工厂业务部推出一份更加全面的 2008 年度时间表,扩展了其具有成本效益的、快速的专用集成电路(ASIC)原型服务,即所谓以多项目晶圆 (MPW) 或往复运行(shuttle run)。该服务将来自不同用户的若干设计结合在一个晶圆上,有助于众多不同的参与者分摊晶圆和掩膜成本。 奥地利微电子的 MPW 服务包括基于 TSMC(台积电)0.35μm CMOS 工艺的全程0.35μm尺寸工艺。兼容 SiGe BiCMOS 技术的 CMOS 有助于在一个 ASIC 中以
[新品]
Flash和SRAM中触发中断的过程示例(一)
使用LPC2106的Timer 1 进行的简单的中断处理。示例代码中Timer1分为FIQ和IRQ,用户可以从Flash或者SRAM中运行这些代码。   示例展示了ARM构架中中断是如何操作的。提供的代码表示了向量IRQ(中断请求)和FIQ(快速中断)两种情况。中断向量位于FLASH地址中的 0x00-0x1C。如果需要从SRAM中运行,则中断向量需要被remapped to 0x40000000-0x4000000C。这可以通过Memory Map register来做到。这些代码用ADS1.2开发,从FLASH中运行。提供了从SRAM中运行代码的不同之处。中断服务程序(ISR)使用C语言编写IRQ,用汇编来编写FIQ。  
[模拟电子]
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved