一种NOR-FLASH数据存储方法、计算机设备及存储介质技术

技术编号:21970993 阅读:37 留言:0更新日期:2019-08-28 01:23
本发明专利技术公开了一种NOR‑FLASH数据存储方法、计算机设备及存储介质,NOR‑FLASH被划分为控制区与用户区,方法包括:根据脏位图从用户区申请空闲的映射扇区写入扇区数据;更新脏位图、回收位图及动态映射表;将逻辑扇区号与映射扇区号的映射关系写入日志区;其中,若写入前日志区已满,则先将动态映射表备份至静态映射表,并擦除日志区。本发明专利技术所提出的NOR‑FLASH数据存储方法、计算机设备及存储介质通过设置脏位图、回收位图、动态映射表来规划管理NOR‑FLASH的扇区,使得NOR‑FLASH内的扇区实现有限磨损均匀,可提升NOR‑FLASH的使用寿命;通过设置日志记录对于数据的写入过程进行记录以及利用静态映射表对动态映射表的数据进行备份,使得写入数据时发生掉电时,数据不会丢失。

A NOR-FLASH Data Storage Method, Computer Equipment and Storage Media

【技术实现步骤摘要】
一种NOR-FLASH数据存储方法、计算机设备及存储介质
本专利技术涉及数据读写
,特别是涉及一种NOR-FLASH数据存储方法、计算机设备及存储介质。
技术介绍
通常我们需要将文件数据保存到存储介质中,嵌入式系统中经常将FLASH作为存储介质。FLASH根据其特性可分为两种,NAND-FLASH和NOR-FLASH。NOR-FLASH的数据访问具备如下特性:(1)NOR-FLASH的访问操作分为擦除/读/写;(2)读数据所能操作的最小数据单元为字节,可对NOR-FLASH上的任意地址进行访问;(3)NOR-FLASH被划分为若干个BLOCK(64KB或更大),每个BLOCK包含若干个SECTOR(4KB或8KB),每个SECTOR包含若干个PAGE(256字节);(4)擦除数据数据按照SECTOR或BLOCK甚至整个CHIP进行,擦除后存储单元内的所有BIT被置为1;。(5)NOR-FLASH的每个SECTOR/BLOCK的擦写寿命约为10万次,超过擦写次数后将不能再对该SECTOR/BLOCK执行擦除或者写操作;(6)写操作只能将存储单元内的数据由1改为0,不能由0改为1,所以写操作之必须先对存储单元所在的SECTOR或BLOCK执行擦除操作;(7)写所能操作的最小数据单元为字节,可对NOR-FLASH上的任意地址进行访问,但每次写操作连续写入的数据不能超过一个PAGE的范围,否则会出现地址回滚。若使用NOR-FLASH来保存文件,我们需要先在NOR-FLASH上构建一个文件系统,常见的文件系统有FAT/NTFS/EXT2/JFFS2/YAFFS等,其中FAT/NTFS/EXT2等未针对FLASH做专门优化,通常将它们归类于传统文件系统,JFFS2/YAFFS针对FLASH设计,通常将它们归类未闪存文件系统。YAFFS针对NAND-FLASH设计,不适合NOR-FLASH。JFFS虽然是针对NOR-FLASH设计的文件系统,但是JFFS基于LINUX开发运行于MTD之上,移植技术难度高,对资源需求大,特别是内存需求达数百KB,这在单片机或者CORTEX-M系列CPU等资源紧张的平台上是无法满足的,另外JFFS按照节点来构建文件系统,系统初始化时需要对所有节点进行扫描,速度慢效率低。FAT/NTFS/EXT2等文件系统均不适合直接应用于FLASH上,因为FLASH的访问特性将可能导致以下问题:(1)在写入关键数据时(比如FAT文件系统的FAT表),若擦除数据后立即发生掉电,则该SECTOR/BLOCK中原有的数据将丢失并且不可恢复,这将导致整个文件系统损坏,并且NOR-FLASH中原本保存的数据全部丢失。(2)某些关键数据的修改频率极高(例如FAT表会被频繁改写),由于FLASH的有限擦写寿命,将会导致关键数据的存储区域加速老化,大大优先于其他存储单元损坏,极大降低FLASH的使用寿命。FAT文件系统由于其结构简单,资源占用少,并且有开源的GenericFATFilesystemModule项目,提供移植技术难度较低的源代码,使其被广泛移植到各种低成本的嵌入式系统中。但由于NOR-FLASH的访问特性,经常导致数据丢失,产品寿命降低等问题,严重影响产品质量。
技术实现思路
有鉴于此,本专利技术提出一种NOR-FLASH数据存储方法、计算机设备及存储介质,旨在使NOR-FLASH存储数据过程断电时数据不易失,同时使NOR-FLASH内部的扇区磨损均匀,所有的老化程度较为一致,提升寿命。首先,为实现上述目的,本专利技术提出一种NOR-FLASH数据存储方法,NOR-FLASH被划分为控制区与用户区,所述方法包括:根据脏位图从所述用户区申请空闲的映射扇区写入扇区数据;更新脏位图、回收位图及动态映射表;将逻辑扇区号与映射扇区号的映射关系写入日志区;其中,若写入前日志区已满,则先将动态映射表备份至静态映射表,并擦除日志区。可选地,所述根据脏位图从所述用户区申请空闲的映射扇区写入扇区数据包括:判断所述脏位图是否已满;当所述脏位图未满,根据脏位图从用户区申请一个空闲的映射扇区;当所述脏位图已满,利用回收位图重构脏位图,再根据重构后的脏位图从用户区申请一个空闲的映射扇区;根据被申请的映射扇区的映射扇区号计算其物理扇区号,并根据其物理扇区号向NOR-FLASH中对应的扇区写入扇区数据。可选地,所述更新脏位图、回收位图及动态映射表包括:将被申请的映射扇区的映射扇区号在脏位图与回收位图中对应的BIT置1;根据逻辑扇区号查询动态映射表,判断对应映射表项的历史映射扇区号是否有效;当逻辑扇区号对应的历史映射扇区号有效,将该历史映射扇区号在回收位图中对应的BIT清零;当逻辑扇区号对应的历史映射扇区号无效,不对回收位图执行任何操作;将逻辑扇区号在动态映射表中所对应的映射表项更新为被申请的映射扇区号。可选地,所述控制区包括第一静态映射表与第二静态映射表,所述将动态映射表备份至静态映射表包括:对动态映射表中的序号执行加1操作,重新计算动态映射表的CRC;将动态映射表写入至第二静态映射表中;将动态映射表写入至第一静态映射表中。可选地,所述方法还包括:在设备上电后执行启动流程;其中,所述启动流程包括:校验静态映射表数据,并根据校验后的静态映射表数据更新所述脏位图、回收位图以及动态映射表的数据;判断日志有效性并利用有效日志记录重构动态映射表。可选地,所述校验静态映射表数据,并根据校验后的静态映射表数据更新所述脏位图、回收位图以及动态映射表的数据包括:加载标签,并校验标签的有效性;根据标签所提供的参数从NOR-FLASH中读取第一静态映射表与第二静态映射表的数据;校验两个静态映射表的数据,若有静态映射表出现过期或校验不通过等问题,则使用另一静态映射表将其覆盖;扫描静态映射表,根据静态映射表的所有表项判断各逻辑扇区是否为空闲扇区,是则将对应的映射扇区号在脏位图与回收位图中对应的BIT置1;使用静态映射表的数据初始化动态映射表。可选地,所述判断日志有效性并利用有效日志记录重构动态映射表包括:判断日志区的序号和静态映射表的序号是否一致;若不一致则判定日志过期,清空日志区,结束启动流程;若一致则继续执行下述步骤;逐条读取日志区的每条日志记录对应的逻辑扇区号与映射扇区号,丢弃损坏的日志记录;根据日志记录中的逻辑扇区号查询动态映射表,对应映射表项的历史映射扇区号是否有效,若有效则该历史映射扇区号在回收位图中对应的BIT清零,若无效则不对回收位图执行任何操作;将逻辑扇区号在在动态映射表中所对应的映射表项更新为日志记录中对应于该逻辑扇区号的映射扇区号;将映射扇区号在脏位图与回收位图中对应的BIT置1。可选地,所述根据脏位图从所述用户区申请空闲的映射扇区写入扇区数据之前还包括控制区构建流程;所述控制区构建流程包括:根据NOR-FLASH扇区数量及每个扇区的容量计算出第一静态映射表、第二静态映射表、保留区、日志区和用户区的起始扇区号和数据长度,然后将以上信息写入到NOR-FLASH中;擦除第一静态映射表所占用的全部存储扇区,将第一静态映射表从NOR-FLASH中读出,将其序号置0,计算出CRC,然后将其序号和CRC写入到第一静态映射表中对应的位置;擦除第二静本文档来自技高网
...

【技术保护点】
1.一种NOR‑FLASH数据存储方法,其特征在于,NOR‑FLASH被划分为控制区与用户区,所述方法包括:根据脏位图从所述用户区申请空闲的映射扇区写入扇区数据;更新脏位图、回收位图及动态映射表;将逻辑扇区号与映射扇区号的映射关系写入日志区;其中,若写入前日志区已满,则先将动态映射表备份至静态映射表,并擦除日志区。

【技术特征摘要】
1.一种NOR-FLASH数据存储方法,其特征在于,NOR-FLASH被划分为控制区与用户区,所述方法包括:根据脏位图从所述用户区申请空闲的映射扇区写入扇区数据;更新脏位图、回收位图及动态映射表;将逻辑扇区号与映射扇区号的映射关系写入日志区;其中,若写入前日志区已满,则先将动态映射表备份至静态映射表,并擦除日志区。2.由权利要求1所述的NOR-FLASH数据存储方法,其特征在于,所述根据脏位图从所述用户区申请空闲的映射扇区写入扇区数据包括:判断所述脏位图是否已满;当所述脏位图未满,根据脏位图从用户区申请一个空闲的映射扇区;当所述脏位图已满,利用回收位图重构脏位图,再根据重构后的脏位图从用户区申请一个空闲的映射扇区;根据被申请的映射扇区的映射扇区号计算其物理扇区号,并根据其物理扇区号向NOR-FLASH中对应的扇区写入扇区数据。3.由权利要求2所述的NOR-FLASH数据存储方法,其特征在于,所述更新脏位图、回收位图及动态映射表包括:将被申请的映射扇区的映射扇区号在脏位图与回收位图中对应的BIT置1;根据逻辑扇区号查询动态映射表,判断对应映射表项的历史映射扇区号是否有效;当逻辑扇区号对应的历史映射扇区号有效,将该历史映射扇区号在回收位图中对应的BIT清零;当逻辑扇区号对应的历史映射扇区号无效,不对回收位图执行任何操作;将逻辑扇区号在动态映射表中所对应的映射表项更新为被申请的映射扇区号。4.由权利要求1所述的NOR-FLASH数据存储方法,其特征在于,所述控制区包括第一静态映射表与第二静态映射表,所述将动态映射表备份至静态映射表包括:对动态映射表中的序号执行加1操作,重新计算动态映射表的CRC;将动态映射表写入至第二静态映射表中;将动态映射表写入至第一静态映射表中。5.由权利要求1所述的NOR-FLASH数据存储方法,其特征在于,所述方法还包括:在设备上电后执行启动流程;其中,所述启动流程包括:校验静态映射表数据,并根据校验后的静态映射表数据更新所述脏位图、回收位图以及动态映射表的数据;判断日志有效性并利用有效日志记录重构动态映射表。6.由权利要求1所述的NOR-FLASH数据存储方法,其特征在于,所述校验静态映射表数据,并根据校验后的静态映射表数据更新所述脏位图、回收位图以及动态映射表的数据包括:加载标签,并校验标签的有效性;根据标签所提供的参数从NOR-FLASH中读取第...

【专利技术属性】
技术研发人员:姜勇汪文俊谢受浪
申请(专利权)人:牧星机器人江苏有限公司
类型:发明
国别省市:江苏,32

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

1