Nand+Flash存储管理在DSP系统中的实现

发布者:limm20032003最新更新时间:2010-04-10 来源: 微计算机信息关键字:Nand+Flash  存储管理  DSP 手机看文章 扫描二维码
随时随地手机看文章

  Nand Flash作为一种安全、快速的存储体,因其具有体积小、容量大、成本低、掉电数 据不丢失等一系列优点,已逐步取代其它半导体存储元件,成为嵌入式系统中数据存储的主 要载体。尽管Nand Flash的每个单元块相互独立,且每块一般可擦除次数高达10~100万次, 但是随着擦写次数增加,会有一些单元块逐渐变得不稳定或失效从而形成永久性坏块。因此, 要避免频繁地对同一块进行操作,尽量达到擦写次数均衡;同时,由于擦除操作耗时较多, 会对系统的实时性造成影响。为此,本文介绍了一种基于磨损均衡思想的Nand Flash存储管 理方式,并深入讨论了该方式在Ti公司的DSP TMS320F28x中的程序实现。

  1 器件介绍

  本文中采用的Nand Flash芯片K9F6408U0C是一块拥有8M(8,388,608)×8bit存储空间及 256K(262,144)×8bit辅用存储空间的存储芯片,电源电压为1.8V-3.3V。芯片内部按块和 页的方式来组织的,如图1所示,共分成1024个块,每块包含16个页,每页内有528个字节。 F28x系列DSP是美国TI公司最新推出的C2000平台上的定点DSP芯片。

K9F6408UOC内部结构示意图

图1 K9F6408UOC内部结构示意图

  F28x系列芯片具有 低成本、低功耗和高效能等特点,特别适用于有大量数据处理的测控场合。

  2 Flash的特点及存储管理的作用

  由K9F6408U0C的基本结构可以知道,它的基本单位有块、页、字节等。 Nand Flash 芯片具有如下特点:

  Flash写:通过写命令将每个字节存储单元中的1变为0;写操作不能把0变为1。

  Flash擦除:擦除命令是Flash中存储单元0变为1的唯一途径,一旦对某一块中的某一位 写0,要再改变成1,则必须执行擦除命令。

  通常,对于容量较小的Flash块的操作过程是:先把整个块的数据读到RAM中,在RAM中 修改数据内容,再擦除整个块,最后写入修改后的数据。显然,这样频繁复杂的读-擦除- 写操作,对于Flash的使用寿命以及系统性能是很不利的,而且微处理器中通常RAM大小有限。 因此在硬件条件苛刻的嵌入式系统中就迫切需要一种合理的存储管理方式以便有效地均衡 Flash各个存储块的擦写次数,提高Flash的使用寿命,从而提高数据存储的安全性。

  3 存储管理系统的设计

  3.1建立坏块管理表

  Nand Flash由于生产工艺的问题,不可避免的会存在一些坏块,这些坏块在芯片出厂前 都已被标识好。根据Nand Flash数据手册中的介绍,在每一块的第一页与第二页的Spare area 的第六个字节(也就是该页的第517字节)即是出厂时的坏块标识位,如果某块的该两页的 第517字节内容不同时为0xFF,则代表该块为厂家标识坏块。这种坏块的检测必须在对芯 片进行擦除前进行,因为厂家坏块有可能也能够被进行擦除操作,如使用这种块将对数据安 全留下一定的隐患。

  Nand Flash在出厂前会保证每块芯片的第一块与第二块是完好的,所以在本文的设计中,采用的方式是将坏块管理表存放在第一块的第一页的前128个字节中,每个字节的一位代表芯片的一块,如该位为1刚表明该块是好的,为0则表示对应块为坏块。坏块管理表的建立是必需的,而且最好是在芯片进行其它擦写操作前进行。

坏块管理表

  3.2 Flash存储空间管理

  在本文设计的Flash空间管理中,Flash的存储块被分为空闲块(Free,即空白没写数据 的好块),有效块(Valid,即存有有效数据的块,不能被擦除),无效块(Invalid,即数 据已无效或是写入错误块,可被擦除),保留块(Reserve,用于替换新产生的坏块),其它的则为坏块,所有存储块的管理均采用单向链表方式进行管理。

  在大部分的Flash存储空间管理系统中可能并不存在保留块,在本系统中增加保留块的 作用主要是,当部分存储块因为反复擦写成为新的坏块时,可以用保留块取而代之成为新的空闲块,从而使得留给用户的可用存储块总数在一定时期内是一定的,这样做的优点是可以增强数据的安全性,延长整个Flash的使用周期,缺点是用户可用的存储空间相对减少,不过在Flash芯片技术迅速发展的今天,大容量的Flash芯片价格已经十分低廉,数据安全才是嵌入式系统设计最值得重视的。

  在本文的设计中,统一规定Flash每一块的第一页的Spare Area为数据块状态信息标记区,具体规定如表2所示:

数据块状态信息表

  根据上表的设计,块擦除次数最大为224 ? 1 = 16777215 ,远大于Flash的最大擦除次数10到100万次;块状态标记字节,0xFF代表其为空闲块,0xFD代表其为保留块,0xFC代表其为有效块,0xF0代表其为无效块,0x00则表明当前块为坏块,在坏块管理表中其对应位为0。

  3.3磨损均衡与无效块回收

  如图2所示,当系统上电后,如不存在坏块管理表则应首先应建立相应的坏块管理表, 参照坏块表根据每一块的第517字节建立各个链表Free_List,Valid_List,Invalid_List, Reserved_List,初始化并按擦除次数非递减序排列各链表。当无效块因擦除成为新的空闲块时,根据块擦除次数插入到空闲链表中相应位置,当需要写入数据到新的空闲块时则取用空 闲链表的链首所指空闲块,写入数据有效后则标识该块为有效块,否则标识为无效块,通过 这样的管理方式保证每次都是使用空闲链表中擦除次数最小的块,从而使磨损达到均衡。

Flash存储管理流程示意图

图2 Flash存储管理流程示意图

  对于静态数据块(指的是Flash中存储的不经常被修改的数据)[3],在本文中采用的处 理方法是当空闲块中的最大擦除次数与有效块中的最小擦除次数之差大于某一设定阀值(该 阀值不能过小,否则数据搬迁将过于频繁),则迁移该有效块中数据至空闲链表中擦除次数 最大的块中,从而避免因某些数据块被静态数据长时间占用而使得其它数据块的磨损加剧, 进而可使得整个Flash的磨损趋于平衡。

  对于无效块的擦除回收本文的设计是在有足够空闲块的情况下一般是在系统空闲或上 电时进行,这样能节约更多宝贵的系统资源以进行更重要的工作,当在系统运行过程中,如果空闲块块数与无效块块数的比值超出一个阀值(本系统取50),则启动程序回收所有无效 块。这个阀值应取得适中,如太大则使得回收过于频繁,太少的话一方面使空闲空间过少, 另一方面一旦启动回收程序,因要回收块数过多,从而使采集数据的实时输入受到影响,本 系统中取空闲块与无效块的比值作为阀值,好处是只要空闲块块数足够,无效块回收基本在系统初始化是进行,即使在采集过程中回收占用的时间也是十分微小,这样的设计对实时性要求极高的嵌入式系统是很有好处的。

  3.4 Flash存储管理的程序实现

  对于Nand Flash在DSP嵌入式系统中的使用,其接口方式与读写方法与在其他单片机中的方法都是一样的,参考[1]中提供的流程图就可以完成,其难点在于如何管理,在其管理中,对链表数据结构的操作是最重要的,下面将给出本文系统中用DSP TMS320F28x如何实现Nand Flash存储管理的链表操作的关键程序代码,结合具体的要求只需要进行简单的修改即可满足在新系统中的应用。

  在DSP系统工程中的CMD文件中,对于段的定义一定要为.systemmem分配一定的可用RAM空间[ 4 ],这个大小跟系统后面malloc函数要分配的动态内存空间有关,以便在产生一个新的结点时申请一个结点类型大小的空间,在结点销毁时可对空间进行释放,定义系统中链表结点的类型为:

程序

  通过这样的定义就可以得到四个带头结点的链表,头结点的数库域中是没有信息的,每 一个链表的头结点都指向该链表的首元素,如不存在则指向NULL,程序中必须初始化指针, 否则会造成致命的系统错误。下面给出链表的初始化程序,结点生成及销毁程序,其他的函 数就不一一列举,只给出其相应函数名及功能介绍。

程序

  4 结论

  本文创新点在于:从Nand Flash的特性出发,深入讨论了基于磨损均衡算法的Flash存储 管理在DSP系统中采用链表结构的程序实现,改进了无效块的回收方式及动静态数据块的磨 损平衡。经实践证明,有效延长了Flash的使用寿命,进一步提高了其存储效率和数据安全性, 从而更有利于在嵌入式系统中的应用。

关键字:Nand+Flash  存储管理  DSP 引用地址:Nand+Flash存储管理在DSP系统中的实现

上一篇:高速DSP串行外设接口设计
下一篇:DSP内嵌PLL中的CMOS压控环形振荡器设计

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

嵌入式实时操作系统μC/OS-Ⅱ在DSP上的移植
  0. 引言   μC/OS-Ⅱ内核是一个强占式优先级调度的系统,能管理63个任务,支持旗语、信号量、互斥信号量、队列和消息邮箱,是一个是典型的嵌入式实时操作系统。它最早由Jean J. Labrosse创作,源码完全公开,已有众多应用范例,可靠性能得到保证,内核小,移植性好。TI的C2000系列DSP处理器 TMS320LF2407A片内集成16路10位AD,4个通用定时器,8个16位PWM通道,4个CAP捕获单元,41路I/O通道,以及SPI、 RS232、CAN等通信接口,丰富的片内资源,使得控制器不需任何扩展就能满足所有的功能要求,且冗余很少。   DSP处理器在数学运算方面的优势也为智能化过程所需的数据处理提供了支
[嵌入式]
数字信号处理器TMS320F241在变频空调中的应用
    摘要: 提出了一种基于TMS320F241数字信号处理器(DSP)的控制系统,可使变频空调实现全数字化调速。该系统充分利用DSP芯片具有高性能处理能力以及先进的控制技术,并用智能功率模块驱动空调压缩机,从而使其结构简单、运行性能好、噪声低、可靠性强。实验结果表明了该方案的可行性以及DSP应用于变频空调控制系统的优越性。     关键词: 数字信号处理器 变频空调 智能功率模块 目前,传统空调器仍然占空调器市场的主要地位。它由室温决定启、停控制方式,利用笼型机电控制压缩机调节冷气和暧气。但因压缩机转速恒定和采用简单的控制方式,因而使传统空调器有温度调节能力差、运行效率不高等缺点。因此我们采用DSP技术、交
[传感技术]
基于FPGA+ DSP的实时图像处理系统设计与实现
摘 要: 针对图像处理系统计算量大、实时性高和体积小的要求, 研制了一种以DSP为主处理器FPGA 为辅处理器的高性能实时图像处理系统。利用这两种芯片的各自特点, 将算法分成两部分分别交由FPGA 和DSP处理, 大大提高了算法的效率。系统具有结构简单易于实现和运用方便灵活的特点, 加载上相应的程序之后能实现对所获取的图像跟踪、识别和匹配等处理方法。详细说明了系统的设计思路和硬件结构, 并在硬件系统上进行了算法仿真及实验验证。实验结果表明: 该系统实时性高, 适应性好, 能够满足设计要求。 1 引 言 图像处理系统的处理算法复杂, 计算量大, 处理实时性要求高, 同时系统的体积也有严格的限制。 因此在设计系统时必须综合
[嵌入式]
基于FPGA+ <font color='red'>DSP</font>的实时图像处理系统设计与实现
基于DSP的纸币号码识别系统
   1 引言   近年来,钱币、特别是纸币被抢劫事件不断发生,严重影响了社会治安,也使银行在经济上受到了严重的损失。如果被抢劫的钱币不能在市场上流通,将从一个方面抑制银行抢劫事件的发生。其中一种解决方案是记录每一捆纸币的号码,将被抢劫的纸币号码建立一个数据库。在货币流通市场提供一种纸币号码自动识别装置,比如说与点钞机结合,将货币号码识别数据与被抢劫号码数据库比较,一旦有相同号码出现,便可确认目前流通的钱币为被抢劫的钱币,从而限制其流通,同时也有利于抢劫案件的侦破。另外,由于纸币号码的唯一性,通过识别纸币上的号码,可以帮助识别假币。国外有一种验钞打号机,可以对典型的纸币,比如美元、英镑等进行自动识别和号码打印,这种装置的典型识
[嵌入式]
【2440裸机】Nand Flash 简单操作
head.s文件 @****************************************************************************** @ File:head.s @ 功能:设置SDRAM,将程序复制到SDRAM,然后跳到SDRAM继续执行 @****************************************************************************** .text .global _start _start: @函数disable_watch_dog, memsetup, init_n
[单片机]
Swissbit推出存储设备管理工具
Swissbit Device Manager 提供全面的监控功能,并支持固件更新 瑞士布龙施霍芬, 2023年 年 05 月 25 日- Swissbit Device Manager (SBDM) 是总部位于瑞士的存储和安全专家 Swissbit 用于管理存储设备的软件工具。最新版本的 SBDM 使客户能够进行固件更新,同时还提供 Swissbit 存储解决方案生命周期状态的全面数据和分析。因此,该软件能够为目前处于设计阶段的 Swissbit 客户提供广泛的测试选项和极高的定制灵活性。该软件用户界面友好,能显示所有捕获的数据,是所有 Swissbit 存储产品的主要用户界面。可以从 Swissbit 网站免费下载该工具,
[嵌入式]
Swissbit推出<font color='red'>存储</font>设备<font color='red'>管理</font>工具
基于DSP和CMOS图像传感器的实时图像采集系统的实现方案
DSP是基于可编程超大规模集成电路和计算机技术发展起来的一门重要技术,DSP芯片的快速数据采集与处理功能以及片上集成的各种功能模块为DSP应用于各种场合提供了极大的方便。而CMOS图像传感器与CCD相比,由于CMOS图像传感器能将时序处理电路和图像信号的前端放大与数字化部分集成于一个芯片内,因而其发展一直受到业界的高度重视。现在,随着技术与工艺的发展,CMOS图像传感器不仅在噪声上得到了有效改善,而且分辨率也得到了明显提高。CMOS图像传感器将以其低廉的价格、实用的图像质量、高集成度和相对较少的功耗在视频采集领域得到广泛的应用。为此,本文提出了一种基于DSP和CMOS图像传感器,同时由复杂可编程逻辑控制芯片CPLD控制的实时图像采
[嵌入式]
S3C2440裸机实验(6) ----NAND FLASH
1.Nand flash以page为单位进行读写,以block为单位进行擦除,没页分为main区和spare区,main区用于存放正常的数据,spare区用于存放一些附加信息 2.S3c2440 支持从Nand 启动是因为内部有一个叫做Steppingstone的SRAM buffer,当启动的时候,nand 的前4k的将会代码将被拷贝到steppingstone中执行,注意前4k代码是不会经过ECC校验的,所以必须确保这些代码的准确 3.对nand的操作都是通过使用命令来实现,有的操作只要一个命令就可以完成,而有的需要两个命令才能完成,下面是K9F1G08U0B的命令表: 4.关于TACLS,TWRPH0,
[单片机]
S3C2440裸机实验(6) ----<font color='red'>NAND</font> <font color='red'>FLASH</font>
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

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

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