一种基于FTL的闪存擦写掉电保护方法技术

技术编号:5008940 阅读:277 留言:0更新日期:2012-04-11 18:40
本发明专利技术提供一种基于FTL的闪存擦写掉电保护方法,涉及嵌入式系统中NORFlash。该方法包括擦除操作掉电保护部分和写操作掉电保护部分。擦除操作掉电保护部分为每个数据块增加一个擦除标记,未擦除成功的数据块挂入脏链表;开机检测,将脏链表中的数据块进行擦除操作。写操作掉电保护部分,扇区标记调整为所支持闪存的物理写单位,开机扫描每个扇区状态,将扇区标记为有效、但扇区号为无效的扇区的扇区状态修改为脏状态,将扇区标记为无效的扇区记录为脏状态,将标记为有效且扇区号不大于最大逻辑扇区号的扇区状态建立信息。本发明专利技术另提供一种运用上述方法的保护装置。本发明专利技术擦除标记不占用多余空间,保证写掉电发生后,只影响到掉电前最后操作的目标数据。

【技术实现步骤摘要】

本专利技术涉及一种嵌入式系统中NOR Flash擦写过程中掉电的保护方法,尤其涉及 一种基于FTL的闪存擦写掉电保护方法。
技术介绍
闪存(Flash)由于快速的读写速度、低能耗、不易损失等特点,在很多场合有应 用,特别是便携式消费性产品中应用极广。NOR和NAND是现在市场上两种主要的非易失闪 存技术。Intel于1988年首先开发出NOR flash技术,彻底改变了原先由EPROM(Erasable Programmable ROM,可擦除可编程 ROM)和 EEPROM(Electrically Erasable Programmable Read-Only Memory,电可擦可编程只读存储器一)统天下的局面。NORFlash的特点是芯片 内执行,这样应用程序可以直接在闪存内运行,不必再把代码读到系统RAM中。NOR的传输 效率很高,在1 4MB的小容量时具有很高的成本效益。NOR Flash中,将空间划分为多个 Block(块),擦除是以一个Block为单位进行的,即擦除至少需要擦除一个Block。FTL (Flash Translation Layer,闪存转化层),是一种闪存与操作系统间对话的 介质,由于FTL,操作系统可将闪存作为一个磁盘驱动器(Disk Driver),在闪存上建立多个 虚拟的数据块或者扇区用以存储及管理数据。嵌入式终端在开发、测试以及最终用户使用过程当中,不可避免的会出现终端设 备的随机掉电(如电池电力消失,电池突然移除等),该异常掉电可能导致数据破坏甚至造 成闪存的状态异常,从而破坏对闪存操作非常频繁的文件系统,最终导致设备开机失败。因 此,介于操作系统和闪存之间的FTL模块,除了需要考虑软件流程的掉电保护外,对闪存擦 和写过程中掉电所导致的数据损坏和闪存状态异常,也需要增加相应的保护措施。现有的FTL认为,Nor Flash在执行物理擦或者写操作过程中掉电时,要么保持操 作前状态,要么保持操作后状态,所以只提供了保持软件流程一致性的掉电保护措施。但实 际试验数据表明,写操作过程中掉电发生后,原数据可能会变为一个未知状态,擦除过程掉 电后擦除未成功的数据块可能会处于异常状态。对于这种极端最坏情况下,目前的FTL算 法并没有做错误检测和相应处理。另外,在对NOR Flash进行写操作时发生掉电,此时如果写操作的单位是Single Word(—般用作写标记),发生掉电后该Word内部2个字节的数据都不可靠;如果此时写操 作的单位是1KB (—般用作写数据),发生掉电后该1KB数据不可靠。现有方法认为写状态信 息的过程中发生掉电,状态信息或者保持原有状态或者保持目标状态,但是实验结果证明, 对于某些NOR Flash,掉电后写操作的结果并不确定,因此需要对写过程掉电所产生的非预 知数据进行处理,而现有的方法则无法做到这一点。本专利技术则是提供一种新的方法用来解决上述问题。
技术实现思路
本专利技术要解决的技术问题在于提供一种可实现检测和恢复机制的掉电保护方法。本专利技术通过这样的技术方案解决上述的技术问题一种基于FTL的闪存擦写掉电保护方法,该闪存具有若干数据块,数据块包括若 干扇区,该方法包括擦除操作掉电保护部分以及写操作掉电保护部分,其中,擦除操作掉电 保护部分,包括以下步骤为每个数据块增加一个擦除标记,包含有效状态A和无效状态 B ;进行擦除操作之前将擦除标记写为A,擦除成功后写擦除标记为B,未擦除成功的数据块 挂入脏链表;开机检测,将擦除标记仍然为A的数据块进行擦除操作,操作完成后将擦除标 记写为B ;写操作掉电保护部分,包括以下步骤将扇区标记调整为所支持闪存的物理写单 位,开机扫描每个扇区状态,将扇区标记为有效、但扇区号为无效的扇区的扇区状态修改为 脏状态,将扇区标记为无效的扇区记录为脏状态,将标记为有效且扇区号不大于最大逻辑 扇区号的扇区状态建立信息。作为一种改进,擦除标记为4个字节。作为一种改进,FTL内建有垃圾回收线程,用以查看脏链表中的数据块信息。作为一种改进,扇区标记单字节或Single Word。本专利技术另提供一种基于FTL的闪存擦写掉电保护装置,该闪存具有若干数据块, 数据块包括若干扇区,该装置包括擦除操作掉电保护单元以及写操作掉电保护单元,其中, 擦除操作掉电保护单元,包括为每个数据块增加一个擦除标记的擦除标记修改模块,该擦 除标记包含有效状态A和无效状态B,该模块在进行擦除操作之前将擦除标记写为A,擦除 成功后写擦除标记为B,未擦除成功的数据块挂入脏链表;开机检测模块,该开机检测模块 用以检测数据块的擦除标记;写操作掉电保护单元,包括将扇区标记调整为所支持闪存 的物理写单位的编译模块;开机扫描每个扇区状态的扫描模块;以及扇区标记修改模块, 该扇区状态修改模块将扇区标记为有效、但扇区号为无效的扇区的扇区状态修改为脏状 态,将扇区标记为无效的扇区记录为脏状态,将标记为有效且扇区号不大于最大逻辑扇区 号的扇区状态建立信息。作为一种改进,擦除标记为4个字节。作为一种改进,FTL内建有垃圾回收线程,用以查看脏链表中的数据块信息。作为一种改进,扇区标记单字节或Single Word。与现有技术相比较,本专利技术具有以下优点通过擦除掉电保护部分,擦除标记在本数据块内,无需占用多余空间,也不需要提 供专门的标记回收机制,4字节的擦除标记可以把擦除掉电检测的失败率降低到1/232。另 外,开机检测在RAM(Read-Only Memory,随机存取储存器)中建立数据块异常信息,不影响 开机速度。本专利技术提供的写操作掉电保护错误检测和处理机制,保证写掉电发生后,只影响 到掉电前最后操作的目标数据。附图说明图Ia是本专利技术NOR Falsh擦写掉电保护方法中的擦除掉电保护部分的检测流程 图。图Ib是本专利技术NOR Falsh擦写掉电保护方法中的擦除掉电保护部分的修复流程 图。图2是本专利技术NOR Falsh擦写掉电保护方法中的写掉电保护部分的流程图。具体实施例方式下面结合附图详细说明本专利技术的具体实施方式。本专利技术提供一种基于FTL的闪存擦写掉电保护方法,该方法主要包括擦除操作掉 电保护部分以及写操作掉电保护部分。1、擦除操作掉电保护部分擦除操作掉电保护部分重点在于为每个数据块(Block)增加一个擦除标记,擦除 标记包括两种状态A和B,其中A为无效状态,B为有效状态,B无需擦除可直接修改为A。 在本实施方式中,所述擦除标记为4个字节。FTL(Flash Translation Layer,闪存转化层)内部进行所有擦除操作之前将擦除 标记写为A,擦除成功后擦除标记写为B。系统开机后第一次对数据块进行读操作的时候, 读取擦除标记,通过擦除标记判断数据块是否发生过擦除掉电,如果是,则将其加入脏链表 (Dirty List)。具体而言,如果擦除成功,应该是每个数据块的擦除标记都是B,S卩,擦除完 成,如果某个数据块的擦除标记为A,则表明该数据块的擦除并未完成,即发生了掉电,简述 如下准备擦除(此时擦除标记全部写成A)—擦除过程中(此时因为擦除尚未完成,擦除 标记仍为A)—擦除完成(此时擦除标记为B),具体流程可参图Ia详细说明。首先,开机进行FTL扫描,该扫描过程即为检测数据块的擦除标记是否本文档来自技高网
...

【技术保护点】
一种基于FTL的闪存擦写掉电保护方法,该闪存具有若干数据块,数据块包括若干扇区,其特征在于,该方法包括擦除操作掉电保护部分以及写操作掉电保护部分,其中,擦除操作掉电保护部分,包括以下步骤:为每个数据块增加一个擦除标记,包含有效状态A和无效状态B;进行擦除操作之前将擦除标记写为A,擦除成功后写擦除标记为B,未擦除成功的数据块挂入脏链表;开机检测,将擦除标记仍然为A的数据块进行擦除操作,操作完成后将擦除标记写为B;写操作掉电保护部分,包括以下步骤:将扇区标记调整为所支持闪存的物理写单位,开机扫描每个扇区状态,将扇区标记为有效、但扇区号为无效的扇区的扇区状态修改为脏状态,将扇区标记为无效的扇区记录为脏状态,将标记为有效且扇区号不大于最大逻辑扇区号的扇区状态建立信息。

【技术特征摘要】

【专利技术属性】
技术研发人员:雷杰
申请(专利权)人:联芯科技有限公司
类型:发明
国别省市:31[中国|上海]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1