CN110175001B - 一种nor-flash数据存储方法、计算机设备及存储介质 - Google Patents
一种nor-flash数据存储方法、计算机设备及存储介质 Download PDFInfo
- Publication number
- CN110175001B CN110175001B CN201910445526.3A CN201910445526A CN110175001B CN 110175001 B CN110175001 B CN 110175001B CN 201910445526 A CN201910445526 A CN 201910445526A CN 110175001 B CN110175001 B CN 110175001B
- Authority
- CN
- China
- Prior art keywords
- mapping table
- sector
- mapping
- data
- bitmap
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1479—Generic software techniques for error detection or fault masking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0616—Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
Abstract
本发明公开了一种NOR‑FLASH数据存储方法、计算机设备及存储介质,NOR‑FLASH被划分为控制区与用户区,方法包括:根据脏位图从用户区申请空闲的映射扇区写入扇区数据;更新脏位图、回收位图及动态映射表;将逻辑扇区号与映射扇区号的映射关系写入日志区;其中,若写入前日志区已满,则先将动态映射表备份至静态映射表,并擦除日志区。本发明所提出的NOR‑FLASH数据存储方法、计算机设备及存储介质通过设置脏位图、回收位图、动态映射表来规划管理NOR‑FLASH的扇区,使得NOR‑FLASH内的扇区实现有限磨损均匀,可提升NOR‑FLASH的使用寿命;通过设置日志记录对于数据的写入过程进行记录以及利用静态映射表对动态映射表的数据进行备份,使得写入数据时发生掉电时,数据不会丢失。
Description
技术领域
本发明涉及数据读写技术领域,特别是涉及一种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文件系统由于其结构简单,资源占用少,并且有开源的Generic FATFilesystem Module项目,提供移植技术难度较低的源代码,使其被广泛移植到各种低成本的嵌入式系统中。但由于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写入到第一静态映射表中对应的位置;
擦除第二静态映射表所占有的全部存储扇区,将第二静态映射表从NOR-FLASH中读出,将其序号置0,计算出CRC,然后将其序号和CRC写入到第二静态映射表中对应的位置;
擦除日志区所占用全部扇区,将其序号置0,然后写入到日志区中对应的位置。
为实现上述目的,本发明还提供一种计算机设备,包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述的NOR-FLASH数据存储方法。
为实现上述目的,本发明还提供一种计算机可读存储介质,其上存储有计算机程序、软件和数据,所述计算机程序被处理器执行时实现上述的NOR-FLASH数据存储方法。
相较于现有技术,本发明所提出的NOR-FLASH数据存储方法、计算机设备及存储介质通过设置脏位图、回收位图、动态映射表来规划管理NOR-FLASH的扇区,使得NOR-FLASH内的扇区磨损均匀,可提升NOR-FLASH的使用寿命;通过设置日志记录对于数据的写入过程进行记录以及利用静态映射表对动态映射表的数据进行备份,使得写入数据时发生掉电时,数据不会丢失,可自动恢复。
附图说明
图1是本发明各实施例之NOR-FLASH的存储空间划分情况示意图;
图2是本发明各实施例之转换软件的系统结构示意图;
图3是本发明第一实施例之NOR-FLASH数据存储方法的流程示意图;
图4是本发明第一实施例之根据脏位图从所述用户区申请空闲的映射扇区写入扇区数据的流程示意图;
图5是本发明第一实施例之更新脏位图、回收位图及动态映射表的流程示意图;
图6是本发明第一实施例之将动态映射表备份至静态映射表的流程示意图;
图7是本发明第一实施例之擦除日志区的流程示意图;
图8是本发明第一实施例之启动流程的流程示意图;
图9是本发明第一实施例之校验静态映射表数据,并根据校验后的静态映射表数据更新所述脏位图、回收位图以及动态映射表的数据的流程示意图;
图10是本发明第一实施例之判断日志有效性并利用有效日志记录重构动态映射表的流程示意图;
图11是本发明第一实施例之控制区构建流程的流程示意图;
图12是本发明第二实施例之初始化后各图、表及日志区的数据情况;
图13是本发明第二实施例之写入逻辑扇区0、1后各图、表及日志区的数据情况;
图14是本发明第二实施例之写入逻辑扇区0、2后各图、表及日志区的数据情况;
图15是本发明第二实施例之写入逻辑扇区0、3后各图、表及日志区的数据情况;
图16是本发明第二实施例之写入逻辑扇区0、1后各图、表及日志区的数据情况;
图17是本发明第二实施例之写入逻辑扇区0、3后各图、表及日志区的数据情况。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明的是,在本发明中涉及“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本发明要求的保护范围之内。
第一实施例
参阅附图1,本发明中,NOR-FLASH的存储空间被划分为两个主要区域,占有少量NOR-FLASH存储空间的控制区(MasterArea)以及占有剩余大量存储空间的用户区(UserArea)。其中,控制区大约占总存储空间的1/128,该区域用来存储一些重要数据信息,这些信息包括标签(Label)、第一静态映射表(Mapping0)、第二静态映射表(Mapping1)、保留区(Reserved)以及日志区(Log);用户区(UserArea)用于存储用户数据,其由基本映射扇区群(Base Remap Sectors)与扩展映射扇区群(Extended Remap Sectors)组成,基本映射扇区群与扩展映射扇区群均包括若干映射扇区(Remap Sector)。
本发明技术方案的总体构思如下:当用户对NOR-FLASH执行写操作时,并非将数据直接写入到对应的物理扇区,而是首先从用户区中申请一个空闲扇区,将数据写入到空闲扇区中,然后将写入过程记录到日志区中。即使用户每次写入的扇区号一致,但每次写入时均通过查询脏位图从空闲空间顺序分配新的存储单元保存数据,同时释放的存储单元不会立即被分配,而是记录到回收位图中,直到脏位图中没有空闲空间,以此实现磨损均衡。由于写数据过程中实际每次写入到NOR-FLASH中的位置都不相同,即在任何情况下写入数据均不会改写原来的数据,仅当日志区被正确更新后,新数据才被成功写入。写数据最后一个步骤更新日志区,如果写入过程中的任何阶段发生掉电,日志区都不会被更新,最后写入存储单元的数据丢失,但依然可以使用历史数据恢复系统。日志区按字节增量写入,写入数据时无需擦除日志区所在的存储单元,仅当日志区全部写满后执行一次日志重构流程,重构日志时将内存中的动态映射表(Mapping)先保存到第二静态映射表再保存到第一静态映射表,然后擦除Log所在的存储区域。在写数据过程中的任何步骤断电,均可保证在第一静态映射表和第二静态映射表中至少有一份静态表完好无损,同时静态表与日志区中标号(Sequence)的存在可保证日志区与静态表可正确匹配。故用户可通过保存完好的静态表索引获得历史数据,以此保证用户数据即使在写入过程中掉电,再次开机依然可以恢复历史数据。
将数据保存到实际的物理扇区中之前需要通过逻辑扇区与映射扇区的地址映射关系计算出映射扇区,再通过映射扇区计算物理扇区。即地址映射需要一套转换算法来完成,转换算法通过三个扇区编址方式实现转换,分别如下:
(1)逻辑扇区号(Logic):用户访问存储单元所使用的扇区号,逻辑扇区的最大扇区号为n。该扇区号并不表示数据在NOR-FLASH中存放的实际位置,使用该扇区号在动态映射表(Mapping)所对应的表项中可得到映射扇区号。
(2)映射扇区号(Remap):在用户区的首扇区作为0号扇区开始编址的扇区号,映射扇区的最大扇区号为n+扩展映射扇区群(Extend remap sectors)所包含的扇区数,即映射扇区的总数比逻辑扇区的总数要多出一部分,多出的这部分扇区用于保证逻辑扇区全部分配完后依然后足够的空余空间来为磨损均衡提供支持。
(3)物理扇区号:数据所保存在NOR-FLASH中的物理位置的地址编号,用来表示数据存放的实际位置。映射扇区号+控制区占用的扇区数=物理扇区号。
以上三种编址方式的扇区号的位宽根据NOR-FLASH的有效物理扇区数决定,通常为16位或者32位,位宽的选择原则为最高位保留,即最大扇有效区号为0x7FFF或0x7FFFFFFF。若出现最高位为1的情况将被判断为无效扇区号。
要完成逻辑扇区号到物理扇区号的转换过程,需要实现一套转换软件(FTL,FlashTranslation Layer-FLASH转换层)来完成转换,参阅图2,该软件的系统结构包括:应用程序接口(API)、标签(Label)、映射表(Mapping)、日志管理(LogMan)、存储池(MemPool)、FLASH驱动程序(Driver)等组件,下面对各组件进行分别介绍。
(1)应用程序接口:为应用程序/文件系统提供访问NOR-FLASH存储单元的接口,允许应用程序、文件系统将数据保存到NOR-FLASH中或从NOR-FLASH中读取数据。
(2)标签:用于保存本系统的重要参数,例如逻辑扇区数、映射扇区数、日志扇区数等等,系统启动时根据该参数来读取映射表和日志。
(3)映射表:用于记录逻辑扇区和物理扇区的映射关系,映射表中包含若干个记录项,记录项的数量与逻辑扇区的数量一致。每一个记录项对应一个逻辑扇区,记录的数据为该逻辑扇区所对应的映射扇区号,系统中有多少个逻辑扇区就有多少个表项,所有表项的每个BIT初始化值均为1,即某个表项的取值为0xFFFF或0xFFFFFFf表明该逻辑扇区为空(空闲扇区),从未保存过数据,并没有分配对应的映射扇区。映射表分静态映射表和动态映射表,系统中有两份完全一致的静态映射表被保存在NOR-FLASH中,即第一静态映射表(Mapping0)与第二静态映射表(Mapping1),静态映射表只在日志区写满后才进行一次更新(参考日志重构流程),静态映射表中所保存的标号(Sequence)用来表示静态映射表的更新次数,如果两份静态映射表的标号不一致则标号数值大的为新表,标号数值小的为过期表。动态映射表存放于内存中,系统启动时使用由静态映射表数据初始化动态映射表,然后根据日志记录重构动态映射表,系统运行过程中,每进行一次写操作,更新一次动态映射表。
(4)日志管理:NOR-FLASH中保存一份系统运行日志到日志区,日志区所保存的Sequence表示日志的重构次数。日志区由日志管理这个组件进行管理,日志管理负责读取和更新日志,以及判断日志的有效性。系统每发生一次写操作产生一条新日志,每条日志记录一个逻辑扇区号和一个映射扇区号表示它们之间的对应关系。每条日志长度仅为几个字节,日志的写入方式为顺序新增,每产生一条日志就立即将该日志内容写入到日志区。因NOR-FLASH允许字节写入的特性,以新增方式写入日志数据无需擦除历史日志数据,仅当日志区全部写满后重新构建一次日志区。所有日志项的每个BIT的初始化值均为1,即遇到日志所记录的逻辑扇区号和映射扇区号中任意一项为全F(0xFFFF或0xFFFFFFFF)的记录项就表示日志结尾,出现全F的记录称为无效记录项。
(5)存储池:存储池用来管理NOR-FLASH的存储空间,负责存储空间的分配和释放,实现磨损均衡。存储池包含两个位图:脏位图(dirty)和回收位图(recovery)。脏位图用来记录用户区(UserArea)中哪些存储单元被使用过,回收位图用来记录用户区中哪些存储单元可以被再利用,所以脏位图和回收位图所包含的总BIT数与用户区的扇区数一致。分配存储单元时,从脏位图上找到一个未被使用过的存储单元来分配,被分配出去的存储单元在脏位图上所对应的位被置1,同时回收位图所对应的位也被置1。释放存储单元时,被释放的存储单元在回收位图上所对应的位被清零,而脏位图所对应的位保持不变。脏位图和回收位图只在运行过程中构建和更新,不需要保存到NOR-FLASH中。
(6)FLASH驱动程序:提供读、写、擦除等NOR-FLASH命令的封装。
基于上述软件系统结构和存储区域结构,为便于理解,对本发明的NOR-FLASH数据存储方法详细介绍如下:
参阅图3,所述方法包括如下步骤S101-S103:
步骤S101,根据脏位图从所述用户区申请空闲的映射扇区写入扇区数据;
具体地,参阅图4,该步骤具体包括步骤S201-S204:
步骤S201,判断所述脏位图是否已满;当所述脏位图未满,进入步骤S202,当当所述脏位图已满,进入步骤S203;
步骤S202,根据脏位图从用户区申请一个空闲的映射扇区;而后进入步骤S204;
该步骤中,申请空闲扇区时,转换软件从空闲的映射扇区中顺序分配映射扇区,即分配脏位图中BIT显示为0的映射扇区中扇区号最低的那一个映射扇区。
步骤S203,利用回收位图重构脏位图,再根据重构后的脏位图从用户区申请一个空闲的映射扇区;而后进入步骤S204;
该步骤中,利用回收位图重构脏位图就是将回收位图覆盖脏位图,由于逻辑扇区数量比映射扇区的数量多出一部分,覆盖脏位图后,脏位图中的部分BIT充分变为0,再在这一部分BIT对应的映射扇区中循环分配,在数据写入过程中,将释放的映射扇区及时进行回收,这样可保证任何情况下均有一定数量的空闲扇区可供分配,当所有逻辑扇区再次写满后,再次利用回收位图覆盖脏位图,如此循环往复,可实现所有映射扇区的合理循环使用,磨损均衡。重构脏位图后空闲扇区的分配方法与步骤S202中一致。
步骤S204,根据被申请的映射扇区的映射扇区号计算其物理扇区号,并根据其物理扇区号向NOR-FLASH中对应的扇区写入扇区数据。
请回到图3,步骤S102,更新脏位图、回收位图及动态映射表;
具体地,参阅图5,步骤S102所述更新脏位图、回收位图及动态映射表包括如下步骤S301-S304:
步骤S301,将被申请的映射扇区的映射扇区号在脏位图与回收位图中对应的BIT置1;
该步骤中,对被申请的映射扇区的映射扇区号在脏位图与回收位图中对应的BIT置1的目的是将被申请的映射扇区标记为已使用,下次写入数据分配映射扇区时,对于已标记为使用的映射扇区不会重复分配,而从标记为未使用的映射扇区中分配映射扇区写入数据。
步骤S302,根据逻辑扇区号查询动态映射表,判断对应映射表项的历史映射扇区号是否有效;当逻辑扇区号对应的历史映射扇区号有效,进入步骤S303;当逻辑扇区号对应的历史映射扇区号无效,进入步骤S304;
该步骤中,无效的历史映射扇区号诸如0xFFFF,其他情形为有效的历史映射扇区号,映射表项对应的历史映射扇区号有效则说明该映射表项所对应的逻辑扇区之前被分配使用过,在将数据写入新的映射扇区后应当将该历史映射扇区号对应的映射扇区进行回收,映射表项对应的历史映射扇区号无效则说明未给该映射表项对应的逻辑扇区分配过映射扇区。
步骤S303,将该历史映射扇区号在回收位图中对应的BIT清零,进入步骤步骤S304;
此步骤表示将历史映射扇区号对应的映射扇区进行回收,历史映射扇区被释放。
步骤S304,将逻辑扇区号在动态映射表中所对应的映射表项更新为被申请的映射扇区号。
请回到图3,步骤S103,将逻辑扇区号与映射扇区号的映射关系写入日志区;其中,若写入前日志区已满,则先将动态映射表备份至静态映射表,并擦除日志区。
该步骤中,日志的写入方式为顺序新增,每产生一条日志就立即将该日志内容写入到日志区,当日志区写满,执行一次重构日志区的流程,重构日志区的流程即先将动态映射表备份至静态映射表,并擦除日志区。
本实施例中,所述控制区包括第一静态映射表(Mapping0)与第二静态映射表(Mapping1),参阅图6,步骤S103中所述将动态映射表备份至静态映射表包括如下步骤S401-S403:
步骤S401,对动态映射表中的序号(Sequence)执行加1操作,重新计算动态映射表的CRC;
步骤S402,将动态映射表写入至第二静态映射表中;
步骤S403,将动态映射表写入至第一静态映射表中。
可选地,参阅图7,所述擦除日志区包括如下步骤S501-S502:
步骤S501,对日志区的序号(Sequence)执行加1操作;
步骤S502,擦除日志区,将序号写入日志区的对应位置。
对于已经写入NOR-FLASH中的数据进行服务的流程如步骤A1-A2所示:
步骤A1,以逻辑扇区号查询动态映射表获得映射扇区号,通过映射扇区号计算出物理扇区号。
步骤A2,使用物理扇区号通过Flash驱动程序从NOR-FLASH中读出扇区数据。
可选地,所述方法还包括如下步骤:在设备上电后执行启动流程;启动流程是针对设备掉电后再次上电执行的数据恢复过程。
其中,参阅图8,所述启动流程包括如下步骤S601-S602:
步骤S601,校验静态映射表数据,并根据校验后的静态映射表数据更新所述脏位图、回收位图以及动态映射表的数据;
步骤S602,判断日志有效性并利用有效日志记录重构动态映射表。
可选地,参阅图9,步骤S601中所述校验静态映射表数据,并根据校验后的静态映射表数据更新所述脏位图、回收位图以及动态映射表的数据包括如下步骤S601a-S601e:
步骤S601a,加载标签(Label),并校验标签的有效性;
步骤S601b,根据标签所提供的参数从NOR-FLASH中读取第一静态映射表与第二静态映射表的数据;
步骤S601c,校验两个静态映射表的数据,若有静态映射表出现过期或校验不通过等问题,则使用另一静态映射表将其覆盖;
该步骤中,有静态映射表出现过期或校验不通过等问题说明在该静态映射表更新过程中发生了掉电,应当通过使用另一静态映射表将其覆盖的方式使两份静态映射表完全一致。
步骤S601d,扫描静态映射表,根据静态映射表的所有表项判断各逻辑扇区是否为空闲扇区,是则将对应的映射扇区号在脏位图与回收位图中对应的BIT置1;
步骤S601e,使用静态映射表的数据初始化动态映射表。
可选地,参阅图10,步骤S602中所述判断日志有效性并利用有效日志记录重构动态映射表包括如下步骤步骤S602a-S602f:
S602a,判断日志区的序号(Sequence)和静态映射表的序号是否一致;若不一致则进入步骤S602b,若一致则进入步骤S602c;
步骤S602b,判定日志过期,清空日志区,结束启动流程;
步骤S602c,逐条读取日志区的每条日志记录对应的逻辑扇区号与新映射扇区号,丢弃损坏的日志记录;
该步骤中,判断日志记录是否损坏的方法为,当日志记录逻辑扇区号或映射扇区号的最高8位为0xFF则作为损坏记录处理,表示在更新日志时发生了掉电,将相应的日志记录直接丢弃。若得到的逻辑扇区号和映射扇区号均为0xFFFF(或0xFFFFFFFF),则认为日志结束。
步骤S602d,根据日志记录中的逻辑扇区号查询动态映射表,对应映射表项的历史映射扇区号是否有效,若有效则该历史映射扇区号在回收位图中对应的BIT清零,若无效则不对回收位图执行任何操作;
步骤S602e,将逻辑扇区号在在动态映射表中所对应的映射表项更新为日志记录中对应于该逻辑扇区号的映射扇区号;
步骤S602f,将映射扇区号在脏位图与回收位图中对应的BIT置1。
可选地,所述根据脏位图从所述用户区申请空闲的映射扇区写入扇区数据之前还包括控制区构建流程;具体地,参阅图11,所述控制区构建流程包括如下步骤S701-S704:
步骤S701,根据NOR-FLASH扇区数量及每个扇区的容量计算出第一静态映射表、第二静态映射表、保留区、日志区和用户区的起始扇区号和数据长度,然后将以上信息写入到NOR-FLASH中;
步骤S702,擦除第一静态映射表所占用的全部存储扇区,将第一静态映射表(此时所有BIT均为1)从NOR-FLASH中读出,将其序号置0,计算出CRC,然后将其序号和CRC写入到第一静态映射表中对应的位置;
步骤S703,擦除第二静态映射表所占有的全部存储扇区,将第二静态映射表(此时所有BIT均为1)从NOR-FLASH中读出,将其序号置0,计算出CRC,然后将其序号和CRC写入到第二静态映射表中对应的位置;
步骤S704,擦除日志区所占用全部扇区,将其序号置0,然后写入到日志区中对应的位置。
第二实施例
为了便于理解,下面结合具体算例对NOR-FLASH的数据存储过程及其磨损均衡以及掉电恢复进行说明:
本实施例中,转换软件FTL的参数为:逻辑扇区数为4个,映射扇区数为8个,即映射扇区较逻辑扇区多出4个以实现磨损均衡。
本实施例的写入数据的过程如下:按顺序依次写入逻辑扇区0、1、0、2、0、3、0、1、0、3。
下面对写入数据的过程进行分步说明:
(1)初始化后的数据情况
初始化后的数据如附图12所示,其中动态映射表(Mapping)、第一静态映射表(Mapping0)和第二静态映射表(Mapping1)三者的倒数第二项数据为各自的序号(Sequence),日志区(Log)的最后一项数据为日志的序号(Sequence);可见,初始化后,脏位图(Dirty)以及回收位图(Recovery)的所有BIT均为0,动态映射表、第一静态映射表、第二静态映射表及日志区中用于记录扇区号的位均为0xFFFF,代表其为无效的扇区号,随着数据的写入各项目内的扇区号0xFFFF将被有效的扇区号所代替。
(2)写入逻辑扇区0、1后各项目的数据变化情况
参考附图13为写入逻辑扇区0、1后各项的数据变化。其中:
动态映射表的Mapping[0]=0x0000,即逻辑扇区0被映射到映射扇区0;
动态映射表的Mapping[1]=0x0001,即逻辑扇区1被映射到映射扇区1;
脏位图Dirty以及回收位图Recovery两者的最低2位均被置1,表示映射扇区0、1被使用;
日志区Log记录逻辑扇区0被写入到映射扇区0,逻辑扇区1被写入到映射扇区1;
第一静态映射表Mapping0和第二静态映射表Mapping1不更新。
(3)写入逻辑扇区0、2后各项目的数据变化情况
参考附图14为写入逻辑扇区0、2后各项的数据变化。其中:
动态映射表的Mapping[0]=0x0002,即逻辑扇区0被映射到映射2扇区;
动态映射表的Mapping[2]=0x0003,即逻辑扇区2被映射到映射3扇区;
脏位图Dirty的Bit2和Bit3被置1,表示映射扇区2、3被使用;
回收位图Recovery的Bit0由1变为0,映射扇区0被释放(逻辑扇区0保存到映射扇区0的数据作废);
日志区Log记录逻辑扇区0被写入到映射扇区2,逻辑扇区2被写入到映射扇区3;
第一静态映射表Mapping0和第二静态映射表Mapping1不更新。
(4)写入逻辑扇区0、3后各项目的数据变化情况
参考附图15为写入逻辑扇区0、3后的数据变化。其中:
动态映射表的Mapping[0]=0x0004,即逻辑扇区0被写入到映射扇区4;
动态映射表的Mapping[3]=0x0005,即逻辑扇区3被写入到映射扇区5;
脏位图Dirty的Bit4和Bit5被置1,表示映射扇区4、5被使用;
回收位图Recovery的Bit2由1变为0,映射2扇区被释放,此时逻辑扇区0保存在映射扇区2的数据被作废。
日志区Log记录逻辑扇区0被写入到映射扇区4,逻辑扇区3被写入到映射扇区5。
第一静态映射表Mapping0和第二静态映射表Mapping1不更新。
(5)写入逻辑扇区0、1后各项目的数据变化情况
参考附图16为写入逻辑扇区0、1后的数据变化。其中:
动态映射表的Mapping[0]=0x0006,即逻辑扇区0被写入到映射扇区6;
动态映射表的Mapping[1]=0x0007,即逻辑扇区1被写入到映射扇区7;
脏位图Dirty的Bit6和Bit7被置1,映射扇区6、7被使用,此时脏位图已满,下次写入时需要重构脏位图。
回收位图Recovery的Bit1由1变为0,映射1扇区被释放,逻辑扇区1的最新数据写入到映射扇区7,原保存在映射扇区1中的数据作废。
日志区Log记录逻辑扇区0被写入到映射扇区6,逻辑扇区1被写入到映射扇区7,日志区已满,下次写入时重构日志区。
第一静态映射表Mapping0和第二静态映射表Mapping1不更新。
(6)写入逻辑扇区0、3后各项目的数据变化情况
参考附图17为写入逻辑扇区0、3后的数据变化。其中:
写数据时脏位图Dirty已满(参考第(5)步及附图16中脏位图Dirty),触发重构流程,以回收位图Recovery(参考第(5)步及附图16中回收位图Recovery)覆盖脏位图Dirty,将动态映射表的序号(参考第(5)步及附图16中动态映射表Mapping)加1后,保存到第一静态映射表Mapping0和第二静态映射表Mapping1;
擦除日志区Log并对日志区的序号加1后保存。
动态映射表的Mapping[0]=0x0000,即逻辑扇区0被写入到映射扇区0,回收位图Recovery覆盖脏位图Dirty后,0、1、2、3号映射扇区被回收进入空闲队列。
动态映射表的Mapping[3]=0x0001,即逻辑扇区3被写入到映射扇区1;
脏位图Dirty的Bit0和Bit1置1,表示映射扇区0、1被使用。
回收位图Recovery的Bit5由1变为0,映射扇区5被释放,逻辑扇区3保存在映射扇区5的数据被作废。
回收位图Recovery的Bit6由1变为0,映射扇区6被释放,逻辑扇区0保存在映射扇区6的数据被作废。
日志区Log记录逻辑扇区0被写入到映射扇区0,逻辑扇区3被写入到映射扇区1。
第一静态映射表Mapping0和第二静态映射表Mapping1保存的数据为第(5)步执行完后的动态映射表Mapping(CRC和序号Sequence发生变化)。
上述六个步骤详细描述了数据写入过程中,动态映射表、第一静态映射表和第二静态映射表等项目的数据变化情况,通过脏位图的数据变化可以看到映射扇区分配总是以第一个空闲扇区开始,顺序向后分配的,即使在第5步所有映射扇区已经被全部分配完以后,依然有4个映射扇区可以被回收,然后继续顺序向后分配,如此实现了各扇区的磨损均衡。
下面将介绍各过程掉电情形下数据的恢复过程。
若第(6)步若写入第二静态映射表Mapping1的过程中断电,则第一静态映射表Mapping0为旧数据,其序号为0,日志区Log尚未擦除,所保存数据为第(5)步数据,序号为0x0,系统重启后第二静态映射表Mapping1无效,以第一静态映射表Mapping0覆盖第二静态映射表Mapping1,然后初始化动态映射表Mapping,并扫描日志区Log来恢复数据。
若第(6)步写入第一静态映射表Mapping0过程断电,则第二静态映射表Mapping1为新数据,其序号为0,日志区Log尚未擦除,所保存数据为历史数据,日志区的序号为0,系统重启后,第一静态映射表Mapping0无效,以第二静态映射表Mapping1覆盖第一静态映射表Mapping0,然后初始化动态映射表Mapping,日志区Log所保存序号为0,与动态映射表Mapping的序号不一致,判定日志无效,丢弃日志并重构日志区。
若第(6)步重构日志区Log时断电,则第一静态映射表Mapping0和第一静态映射表Mapping1均为最新数据(与步骤(5)中动态映射表Mapping一致),序号为1,日志区Log数据无效,系统重启时初始化动态映射表Mapping并重构日志区Log即可。
若在步骤(2)到步骤(5)写入数据时断电,先写用户数据到映射扇区,再更新日志区Log,此阶段两个静态映射表无需保存,若写用户数据断电,由于每次用户数据均从空闲映射扇区分配,不会改写历史数据,故历史数据不受影响,日志区Log尚未更新,重启时直接扫描日志区恢复数据即可。
若在步骤(2)到步骤(5)写如日志区Log过程断电,由于日志区Log为增量写入,不需要擦除,在16位字长的扇区编码时,总共需要更新4个字节,若出现断电,最后一个字节的最高为必定为1,可以此判定为一条无效日志。
第三实施例
本发明还提供一种计算机设备,如可以执行程序的智能手机、平板电脑、笔记本电脑、台式计算机、机架式服务器、刀片式服务器、塔式服务器或机柜式服务器(包括独立的服务器,或者多个服务器所组成的服务器集群)等。本实施例的计算机设备至少包括但不限于:可通过系统总线相互通信连接的存储器、处理器等。存储器内存储有可执行程序,处理器运行存储器内的可执行程序以实现上述的NOR-FLASH数据存储方法。
第四实施例
本实施例还提供一种计算机可读存储介质,如闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘、服务器、App应用商城等等,其上存储有计算机程序,程序被处理器执行时实现上述的NOR-FLASH数据存储方法。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (8)
1.一种NOR-FLASH数据存储方法,其特征在于,NOR-FLASH被划分为控制区与用户区,所述方法包括:
根据脏位图从所述用户区申请空闲的映射扇区写入扇区数据;
更新脏位图、回收位图及动态映射表;
将逻辑扇区号与映射扇区号的映射关系写入日志区;其中,若写入前日志区已满,则先将动态映射表备份至静态映射表,并擦除日志区;
所述根据脏位图从所述用户区申请空闲的映射扇区写入扇区数据包括:
判断所述脏位图是否已满;
当所述脏位图未满,根据脏位图从用户区申请一个空闲的映射扇区;
当所述脏位图已满,利用回收位图重构脏位图,再根据重构后的脏位图从用户区申请一个空闲的映射扇区;
根据被申请的映射扇区的映射扇区号计算其物理扇区号,并根据其物理扇区号向NOR-FLASH中对应的扇区写入扇区数据;
所述更新脏位图、回收位图及动态映射表包括:
将被申请的映射扇区的映射扇区号在脏位图与回收位图中对应的BIT置1;
根据逻辑扇区号查询动态映射表,判断对应映射表项的历史映射扇区号是否有效;
当逻辑扇区号对应的历史映射扇区号有效,将该历史映射扇区号在回收位图中对应的BIT清零;
当逻辑扇区号对应的历史映射扇区号无效,不对回收位图执行任何操作;
将逻辑扇区号在动态映射表中所对应的映射表项更新为被申请的映射扇区号。
2.由权利要求1所述的NOR-FLASH数据存储方法,其特征在于,所述控制区包括第一静态映射表与第二静态映射表,所述将动态映射表备份至静态映射表包括:
对动态映射表中的序号执行加1操作,重新计算动态映射表的CRC;
将动态映射表写入至第二静态映射表中;
将动态映射表写入至第一静态映射表中。
3.由权利要求1所述的NOR-FLASH数据存储方法,其特征在于,所述方法还包括:
在设备上电后执行启动流程;
其中,所述启动流程包括:
校验静态映射表数据,并根据校验后的静态映射表数据更新所述脏位图、回收位图以及动态映射表的数据;
判断日志有效性并利用有效日志记录重构动态映射表。
4.由权利要求1所述的NOR-FLASH数据存储方法,其特征在于,所述校验静态映射表数据,并根据校验后的静态映射表数据更新所述脏位图、回收位图以及动态映射表的数据包括:
加载标签,并校验标签的有效性;
根据标签所提供的参数从NOR-FLASH中读取第一静态映射表与第二静态映射表的数据;
校验两个静态映射表的数据,若有静态映射表出现过期或校验不通过等问题,则使用另一静态映射表将其覆盖;
扫描静态映射表,根据静态映射表的所有表项判断各逻辑扇区是否为空闲扇区,是则将对应的映射扇区号在脏位图与回收位图中对应的BIT置1;
使用静态映射表的数据初始化动态映射表。
5.由权利要求3所述的NOR-FLASH数据存储方法,其特征在于,所述判断日志有效性并利用有效日志记录重构动态映射表包括:
判断日志区的序号和静态映射表的序号是否一致;
若不一致则判定日志过期,清空日志区,结束启动流程;
若一致则继续执行下述步骤;
逐条读取日志区的每条日志记录对应的逻辑扇区号与映射扇区号,丢弃损坏的日志记录;
根据日志记录中的逻辑扇区号查询动态映射表,对应映射表项的历史映射扇区号是否有效,若有效则该历史映射扇区号在回收位图中对应的BIT清零,若无效则不对回收位图执行任何操作;
将逻辑扇区号在在动态映射表中所对应的映射表项更新为日志记录中对应于该逻辑扇区号的映射扇区号;
将映射扇区号在脏位图与回收位图中对应的BIT置1。
6.由权利要求1所述的NOR-FLASH数据存储方法,其特征在于,所述根据脏位图从所述用户区申请空闲的映射扇区写入扇区数据之前还包括控制区构建流程;
所述控制区构建流程包括:
根据NOR-FLASH扇区数量及每个扇区的容量计算出第一静态映射表、第二静态映射表、保留区、日志区和用户区的起始扇区号和数据长度,然后将以上信息写入到NOR-FLASH中;
擦除第一静态映射表所占用的全部存储扇区,将第一静态映射表从NOR-FLASH中读出,将其序号置0,计算出CRC,然后将其序号和CRC写入到第一静态映射表中对应的位置;
擦除第二静态映射表所占有的全部存储扇区,将第二静态映射表从NOR-FLASH中读出,将其序号置0,计算出CRC,然后将其序号和CRC写入到第二静态映射表中对应的位置;
擦除日志区所占用全部扇区,将其序号置0,然后写入到日志区中对应的位置。
7.计算机设备,包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至6任一项所述的NOR-FLASH数据存储方法。
8.存储介质,其上存储有计算机程序,其特征在于:所述计算机程序被处理器执行时实现权利要求1至6任一项所述的NOR-FLASH数据存储方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910445526.3A CN110175001B (zh) | 2019-05-27 | 2019-05-27 | 一种nor-flash数据存储方法、计算机设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910445526.3A CN110175001B (zh) | 2019-05-27 | 2019-05-27 | 一种nor-flash数据存储方法、计算机设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110175001A CN110175001A (zh) | 2019-08-27 |
CN110175001B true CN110175001B (zh) | 2022-06-14 |
Family
ID=67695869
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910445526.3A Active CN110175001B (zh) | 2019-05-27 | 2019-05-27 | 一种nor-flash数据存储方法、计算机设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110175001B (zh) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110764704B (zh) * | 2019-10-18 | 2023-09-05 | 浙江大华技术股份有限公司 | 一种环境变量写入方法、存储介质及电子装置 |
CN111061649B (zh) * | 2019-10-28 | 2023-09-29 | 宁波三星智能电气有限公司 | 一种存储器的存储空间自适应分配方法 |
CN110968268B (zh) * | 2019-11-15 | 2023-03-17 | 成都智邦科技有限公司 | 一种基于spiflash的存储管理方法及存储结构 |
CN112861196A (zh) * | 2019-11-27 | 2021-05-28 | 量子芯云(北京)微电子科技有限公司 | 安全存储器的存储单元使用寿命增强方法 |
CN111124294B (zh) * | 2019-12-11 | 2024-04-02 | 大唐微电子技术有限公司 | 一种扇区映射信息的管理方法及装置、存储介质和设备 |
CN112214160A (zh) * | 2019-12-20 | 2021-01-12 | 青岛鼎信通讯股份有限公司 | 一种应用于电能表的提高flash寿命的方法 |
CN112069089B (zh) * | 2020-09-11 | 2022-09-27 | 杭州海康威视系统技术有限公司 | 回收存储块的方法及装置 |
CN114518834B (zh) * | 2020-11-18 | 2023-10-27 | 中移物联网有限公司 | 一种信息存储方法、装置及电子设备 |
CN114691533B (zh) * | 2020-12-31 | 2023-09-05 | 深圳融昕医疗科技有限公司 | 文件存储介质的磨损平衡方法、存储介质及呼吸机 |
CN113672482A (zh) * | 2021-08-09 | 2021-11-19 | 深圳市猿人创新科技有限公司 | 一种终端设备的日志消息传输方法、装置、设备及介质 |
CN115292266A (zh) * | 2022-05-30 | 2022-11-04 | 中国电子科技集团公司第五十二研究所 | 一种基于存储器的高可靠日志存储方法 |
CN115639971B (zh) * | 2022-12-12 | 2023-04-07 | 北京集度科技有限公司 | 数据写入方法、装置、电子设备、存储介质及程序产品 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102737715A (zh) * | 2011-04-02 | 2012-10-17 | 航天信息股份有限公司 | 用于nor闪存的数据掉电保护方法 |
CN103399826A (zh) * | 2013-08-15 | 2013-11-20 | 南京新联电子股份有限公司 | 一种基于nor flash的数据存储方法 |
CN103853669A (zh) * | 2014-03-21 | 2014-06-11 | 北京国芯威电子科技股份有限公司上海分公司 | 一种基于NOR Flash的存储管理方法 |
CN108319433A (zh) * | 2018-03-19 | 2018-07-24 | 艾体威尔电子技术(北京)有限公司 | 小内存单片机的NOR Flash的存储管理方法 |
CN109669889A (zh) * | 2018-12-24 | 2019-04-23 | 青岛方寸微电子科技有限公司 | 一种轻量型Nor Flash闪存控制方法和装置 |
-
2019
- 2019-05-27 CN CN201910445526.3A patent/CN110175001B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102737715A (zh) * | 2011-04-02 | 2012-10-17 | 航天信息股份有限公司 | 用于nor闪存的数据掉电保护方法 |
CN103399826A (zh) * | 2013-08-15 | 2013-11-20 | 南京新联电子股份有限公司 | 一种基于nor flash的数据存储方法 |
CN103853669A (zh) * | 2014-03-21 | 2014-06-11 | 北京国芯威电子科技股份有限公司上海分公司 | 一种基于NOR Flash的存储管理方法 |
CN108319433A (zh) * | 2018-03-19 | 2018-07-24 | 艾体威尔电子技术(北京)有限公司 | 小内存单片机的NOR Flash的存储管理方法 |
CN109669889A (zh) * | 2018-12-24 | 2019-04-23 | 青岛方寸微电子科技有限公司 | 一种轻量型Nor Flash闪存控制方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN110175001A (zh) | 2019-08-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110175001B (zh) | 一种nor-flash数据存储方法、计算机设备及存储介质 | |
US10552311B2 (en) | Recovery for non-volatile memory after power loss | |
US8312204B2 (en) | System and method for wear leveling in a data storage device | |
US7702844B2 (en) | Address mapping method and mapping information managing method for flash memory, and flash memory using the same | |
US9645894B2 (en) | Data storage device and flash memory control method | |
EP2389631B1 (en) | Solid state memory formatting | |
US6381176B1 (en) | Method of driving remapping in flash memory and flash memory architecture suitable therefor | |
EP1891529B1 (en) | Flash memory with programmable endurance | |
CN100487672C (zh) | 用于分割一逻辑块的方法及设备 | |
US7620961B2 (en) | Open-architecture file system | |
CN107329905B (zh) | 数据储存装置以及快闪存储器控制方法 | |
KR101077904B1 (ko) | 페이지 단위 매핑 기법을 이용한 플래시 메모리 관리 장치 및 방법 | |
US8775758B2 (en) | Memory device and method for performing a write-abort-safe firmware update | |
US20100088482A1 (en) | Process and Method for Erase Strategy in Solid State Disks | |
US7802072B2 (en) | Data storage device, memory management method and program for updating data recorded in each of a plurality of physically partitioned memory areas | |
US20120095966A1 (en) | Method for using an otp storage device | |
US20070005929A1 (en) | Method, system, and article of manufacture for sector mapping in a flash device | |
EP2264602A1 (en) | Memory device for managing the recovery of a non volatile memory | |
CN111124294B (zh) | 一种扇区映射信息的管理方法及装置、存储介质和设备 | |
KR100954603B1 (ko) | 파일 시스템의 로그 파일 및 상기 파일 시스템의 오류 복구방법 | |
CN1701300B (zh) | 用于分解与一共用逻辑块相关联的物理块的方法和设备 | |
CN106909512B (zh) | 存储设备的使用方法和系统 | |
CN116027973A (zh) | 一种基于闪存的数据写入方法及装置 | |
CN114327292B (zh) | 文件管理方法、系统、电子设备和存储介质 | |
EP2267725A1 (en) | Memory device for managing the recovery of a non volatile memory |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |