CN112269549B - 一种轻型嵌入式系统的闪存管理方法 - Google Patents

一种轻型嵌入式系统的闪存管理方法 Download PDF

Info

Publication number
CN112269549B
CN112269549B CN202011314074.4A CN202011314074A CN112269549B CN 112269549 B CN112269549 B CN 112269549B CN 202011314074 A CN202011314074 A CN 202011314074A CN 112269549 B CN112269549 B CN 112269549B
Authority
CN
China
Prior art keywords
data
sector
flash memory
allocationpos
sectors
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
Application number
CN202011314074.4A
Other languages
English (en)
Other versions
CN112269549A (zh
Inventor
尹鋆晖
李峥
王强
张权
刘海涛
李伟
王世勇
李席
张磊
李春海
张向平
李涛
李义真
李科
张祖
董聪
唐仲
孙天运
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shijiazhuang Kelin Electric Co Ltd
Original Assignee
Shijiazhuang Kelin Electric Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shijiazhuang Kelin Electric Co Ltd filed Critical Shijiazhuang Kelin Electric Co Ltd
Priority to CN202011314074.4A priority Critical patent/CN112269549B/zh
Publication of CN112269549A publication Critical patent/CN112269549A/zh
Application granted granted Critical
Publication of CN112269549B publication Critical patent/CN112269549B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0652Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Read Only Memory (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

一种轻型嵌入式系统的闪存管理方法,涉及存储技术领域。闪存中存储几种数据,每种数据有固定的长度和预定的存储数量,包括:针对每一种数据制作数据表头,表示数据在闪存中的存储状态;设置闪存的当前分配位置以及结束位置,统一为各种数据分配空间;闪存连续、滚动使用;闪存回收步骤统一回收可分配的闪存空间。采用本发明,不需要提前划分存储区域,让开发更稳定快捷;按需求的字节分配空间而不是按扇区分配,节省了flash的使用空间;存储空间滚动循环使用,各个位置的擦写次数基本相同,延长了flash的使用寿命,节约了成本,降低了Flash选择的需求。

Description

一种轻型嵌入式系统的闪存管理方法
技术领域
本发明涉及存储技术领域,特别是涉及一种轻型嵌入式系统的闪存管理方法。
背景技术
低资源需求的单片机成本低廉,在终端产品如电能表中有大量应用。
此类单片机因为需求资源小,提供不了操作系统和大规模的RAM和ROM,仅能支持K级别使用场景。但在实际应用中,电表需要存储如掉电事件的发生次数以及内容、过压事件的发生次数以及内容等,单片机本身的存储资源满足不了需求。
闪存(Flash)是一种具有系统掉电后仍可保留内部信息、在线擦写等功能的存储器。因为它的读写速度比 EEPROM更快,在相同容量的情况下成本更低,因此闪存嵌入式系统中的一个重要组成单元。
Flash自身具有以下特性:
1)在物理结构上分成若干个相互独立的扇区。
2)由于 Flash的写操作只能将数据位从1写成0,所以在对存储器进行写入之前必须先执行擦除操作,将预写入的数据位初始化为1。擦除操作的最小单位是个扇区,而不是单个字节。
3)扇区的擦写寿命有次数限制。
由于上述特性,嵌入式系统使用Flash芯片时,会面临下面几个问题:
1.需求大数据存储时需要在程序中为Flash提前划分存储位置,当增加数据类型或存储量时需要重新手动划分。
2.因为Flash每擦除1次只能写1次的特性,为了满足在存储新数据时旧数据不丢失,通常需要在需求数据实际大小的空间外再另外申请1片扇区的空间,这样当数据项多时就造成了很大资源的浪费。
3.数据存储位置固定,由于Flash总擦写次数限制(仅10万次),一直循环使用提前划分好的几部分扇区,频繁擦写会造成这些扇区损坏,影响设备使用。
电表的应用中,对存储器的使用有一定规律:存储的数据都是有明确要求大小以及条数,这种情况下,传统的Flash使用方式是为每一类数据提前规划好存储空间,每一类数据在规划好的存储空间内进行存储和擦除。这样也会面临上述出现的问题。
发明内容
针对上述应用场景,本发明提出了一种存储管理方法,以解决目前存在的问题。
本发明采用的技术方案是一种轻型嵌入式系统的闪存管理方法,所述闪存中存储几种数据,每种数据有固定的长度和预定的存储数量,于所述方法包括以下步骤:
步骤1、针对每一种数据制作数据表头,所述数据表头包括data_len、max_num、cur_num、head、tail、sector_infor。
其中,data_len为该种数据每一条的数据长度,单位为字节,max_num为最大条数,cur_num为现有条数,head为数据存储队首位置,tail为数据存储队尾位置,sector_infor为该种数据对扇区的占用情况信息,每个扇区对应所述sector_infor中的一个bit,将sector_infor中的所有bit置0。
设定每一种数据在闪存中的存储格式为:数据+next_addr。
next_addr为下一条数据的地址指针。
步骤2、设置闪存的当前分配位置以及结束位置,分别为allocationPos和sectorsEndPos,allocationPos=0,sectorsEndPos为闪存的结束地址,在allocationPos和sectorsEndPos之间的地址范围内是连续的可分配空间。
步骤3、添加某种数据时,执行以下步骤:
步骤3.1、获得当前存储位置。
步骤3.2、获取下一条数据的存储位置。
包括以下步骤:
计算预计存储位置:POS= allocationPos+data_len+len(next_addr)。
其中,len(next_addr)为next_addr的长度,单位为字节。
计算剩余空间大小:POS1= POS + data_len+len(next_addr)。
如果POS1小于等于sectorsEndPos,POS为下一条数据的存储位置,否则,执行步骤4,得到新的allocationPos,重新执行步骤3.2。
步骤3.3、将数据存储到步骤3.1得到的当前存储位置;将步骤3.2得到的POS存储到next_addr中。
步骤3.4、更新数据表头,包括:
步骤3.4.1、将步骤3.2得到的下一条数据的存储位置POS存储到数据表头信息的tail。
步骤3.4.2、得到POS所在扇区信息,将sector_infor中对应该扇区的bit置1。
步骤3.4.3、如果数据表头信息中的cur_num小于max_num,更新数据表头信息的cur_num=cur_num+1。
否则,更新head,更新的数据为当前head指向的数据中的next_addr,判断更新前后的head是否属于同一扇区,如果不是,得到更新前的head所在扇区信息,将sector_infor中对应该扇区的bit置0。
步骤3.5、更新allocationPos,allocationPos=POS1。
步骤4、闪存回收步骤,包括:
步骤4.1、将所有数据表头中的head、tail地址跨度求并集。
步骤4.2、将得到的并集地址转化为闪存的扇区跨度,此跨度以外的扇区为可以回收的扇区。
步骤4.4、将连续可回收扇区的最低地址存储至allocationPos,最高地址存储至sectorsEndPos。
进一步地,所述数据表头存储在其它介质中。
进一步地,步骤3中,如果是第一次添加某种数据,步骤3.1包括:allocationPos为可以存储的位置,将allocationPos存储到数据表头信息的head中,更新allocationPos,allocationPos= allocationPos+data_len+len(next_addr)。
步骤3中,如果是添加已经存储过的数据,步骤3.1包括:查询对应的数据表头,tail为可以存储的位置。
针对特殊应用场景,本发明针对各种数据建立数据表头,存储数据在闪存中的存储情况;设置闪存的当前分配位置以及结束位置,为各种数据提供统一的地址分配机制,数据在闪存中按地址顺序储存,存储空间滚动使用。数据没有专门的删除命令,由各种数据的最大条数和首尾指针表示有效数据的存储位置,过期数据占用的空间为可回收再利用空间,统一回收。
采用本发明,不需要提前划分存储区域,让开发更稳定快捷;按需求的字节分配空间而不是按扇区分配,节省了flash的使用空间;存储空间滚动循环使用,各个位置的擦写次数基本相同,延长了flash的使用寿命,节约了成本,降低了Flash选择的需求。
附图说明
图1为本方法处理过程中内存使用示意图,
图2、3为可回收扇区的示意图。
图2和图3中,数字为扇区编号,阴影区域为有效数据占用区域。
具体实施方式
下面结合附图对本发明做进一步说明。
闪存使用前的设置包括以下步骤。
步骤1、针对每一种数据制作数据表头,所述数据表头包括data_len、max_num、cur_num、head、tail、sector_infor。
其中,data_len为该种数据每一条的数据长度,单位为字节,max_num为最大条数,cur_num为现有条数,head为数据存储队首位置,tail为数据存储队尾位置,sector_infor为该种数据对扇区的占用情况信息,每个扇区对应所述sector_infor中的一个bit,将sector_infor中的所有bit置0。数据表头的格式参看图1。
由于数据表头需要频繁擦写,因此数据表头存储在系统的其它存储介质中,也保证闪存使用的单一性。
设定每一种数据在闪存中的存储格式为:数据+next_addr。
next_addr为下一条数据的地址指针。每种数据可以从数据表头中的head开始,通过每个next_addr遍历访问。
步骤2、设置闪存的当前分配位置以及结束位置,分别为allocationPos和sectorsEndPos。
初始的allocationPos=0,sectorsEndPos为闪存的结束地址,在allocationPos和sectorsEndPos之间的地址范围内是连续的可分配空间。上述设置说明整个闪存的存储空间都可分配使用。
添加数据时,完成两个任务:1、存储当前数据,2、预分配下一条数据的存储空间。具体步骤如下。
步骤3、添加某种数据时,执行以下步骤。
步骤3.1、获得当前存储位置。
本实施例中,第一次添加某种数据和添加已经存储过的数据分别进行处理。
如果是第一次添加某种数据,闪存中没有这种数据,数据表头中也没有head和tail信息。allocationPos为可以存储的位置,将allocationPos存储到数据表头信息的head中,更新allocationPos,allocationPos= allocationPos+data_len+len(next_addr)。
如果是添加已经存储过的数据,查询对应的数据表头,tail中存储的地址为可以存储的位置。
步骤3.2、获取下一条数据的存储位置,首先找到分配地址,再计算从分配地址开始,判断是否还有足够的空间。包括以下步骤。
计算预计存储位置。找到分配地址:POS= allocationPos+data_len+len(next_addr)。
其中,len(next_addr)为next_addr的长度,单位为字节,next_addr的长度跟闪存的总存储容量相关。
计算剩余空间大小:POS1= POS + data_len+len(next_addr)。
如果POS1小于等于sectorsEndPos,说明剩余的存储空间可以容纳下一条数据,POS为下一条数据的存储位置,否则,当前的闪存没有可分配的存储空间,需要回收,此时执行步骤4,回收得到可分配的闪存和新的allocationPos,重新执行步骤3.2。
步骤3.3、将数据存储到步骤3.1得到的当前存储位置;将步骤3.2得到的POS存储到next_addr中,当收到新的该种数据时,在步骤3.1中获取该地址,直接存储。
当前数据存储完成、获得下一条数据的存储位置后,进行该种数据表头的更新。
步骤3.4、更新数据表头。
步骤3.4.1、将步骤3.2得到的下一条数据的存储位置POS存储到数据表头信息的tail。tail中的地址与该种数据的最后一条中的next_addr一致。
步骤3.4.2、得到POS所在扇区信息,将sector_infor中对应该扇区的bit置1。
包括两种情况:1、该种数据第一次占用此扇区,2、此扇区中已经包含该种数据。两种情况的处理方式一样,即将sector_infor中对应该扇区的bit置1。
sector_infor表示了该种数据在闪存中各扇区的占用情况。
步骤3.4.3、如果数据表头信息中的cur_num小于max_num,更新数据表头信息的cur_num=cur_num+1;否则,更新head,更新的数据为当前head指向的数据中的next_addr,判断更新前后的head是否属于同一扇区,如果不是,得到更新前的head所在扇区信息,将sector_infor中对应该扇区的bit置0。
本发明针对的情况是在闪存中,每种类型数据的存储量一定,即有最大条数限制。当某种数据增加一条时,cur_num加1。当达到最大条数时,根据先进先出的原则,放弃最早的一条数据。
当放弃的数据所在扇区中没有该种数据时,sector_infor中对应该扇区的bit置0,即该种数据已经不占有此扇区。当所有数据都不占有该扇区时,该扇区可以回收,重新分配。
步骤3.5、更新allocationPos,allocationPos=POS1;allocationPos为新的当前可分配位置。
扇区的回收也是本发明的关键点。
本实施例中,采用两种回收方式:
1、根据所有数据表头中的head和tail进行回收。
步骤4.1、将所有数据表头中的head、tail地址跨度求并集,
步骤4.2、将得到的并集地址转化为闪存的扇区跨度,此跨度以外的扇区为可以回收的扇区。
如闪存中存储了3种数据。
存储了3个种类的数据:
第一种数据需要存储5千条,用到了第8、9、10、11、12、13、14、15、16扇区。
第二种数据需要存储1万条,用到了第8、9、10、12、15、16、17、500、501、502、503、504、505、511、512扇区。
第三种数据需要存储100万条,用到了18、19-512扇区。
这种情况下,各种数据的队首位置以及队尾位置分别如下:
第一种数据的head在第8扇区,tail在第16扇区。
第二种数据的head在第8扇区,tail在第512扇区。
第三种数据的head在第18扇区,tail在第512扇区。
将三种数据表头中的head、tail地址跨度求并集,将得到的并集地址转化为闪存的扇区跨度:8-512,此跨度以外的扇区,即1-7扇区为可以回收的扇区,如图2所示。
由于存储数据总条数不变会带来数据的滚动存储效果,因而1-7扇区成为了实际有数据但是数据属于无效数据的情况,因此在用3种数据起始和结束位置取并集后以外的区域1-7就成了可以回收的区域,如图2所示。这种方法可以快速回收1-7扇区。
还有一种情况,如图3所示。
假设存储了3个种类的数据:
第一种数据需要存储5千条,用到了第1、505、506、507、508、509、510、511、512扇区。
第二种数据需要存储1万条,用到了第8、9、10、12、15、16、17、500、501、502、503、504、505、511、512扇区。
第三种数据需要存储100万条,用到了11、12、13、14、15、16、18、19-512扇区。
这种情况下的表头信息的队首位置以及队尾位置分别如下:
第一种数据的表头信息head在第1扇区位置,tail在第512扇区。
第二种数据的表头信息head在第8扇区位置,tail在第512扇区。
第三种数据的表头信息head在第11扇区位置,tail在第512扇区。
在这种情况下,将三种数据表头中的head、tail地址跨度求并集,得到第1扇区一直到末尾的第512扇区,但是中间第2-7扇区实际成为了无效数据,但是因为涵盖在起始和结束位置的跨度里,因此无法通过取并集的方法将2-7扇区取出来。
本实施例采用以下步骤进行回收。
2、根据所有数据表头中的sector_infor进行回收。
步骤4.2、将得到的并集地址转化为闪存的扇区跨度,此跨度以外的扇区为可以回收的扇区,如果无法得到可以回收的扇区执行步骤4.4,否则执行步骤4.3。
增加步骤4.4、将所有数据表头中的sector_infor进行或运算,结果为0的bit对应的扇区为可回收的扇区,执行步骤4.3。
由于表头的sector_infor记录了该类数据使用了哪些扇区,因此将所有数据表头中的sector_infor数组执行按位或运算,按位或运算后对应位置是0的bit位对应的扇区就是可以回收的扇区。
采用以上步骤可以得到所有可回收的扇区。
采用第一种方法可以快速找到特定情形的可回收扇区,采用第二种方法速度慢,但可以找到所有可回收的扇区。
采用第二种方法,有可能得到多个分散的可回收扇区,其中有连续的扇区,也有单独一个扇区。如果出现这种情况,将最大的连续可回收扇区的最低地址存储至allocationPos,最高地址存储至sectorsEndPos,也就是本次回收只关注最大的连续可分配空间,其它的可回收扇区的状态不会改变,在以后的回收步骤中再次回收。
为了提高时间效率,可以设置多个allocationPos和sectorsEndPos(以数组形式),将找到的可回收扇区的首尾位置存在数组中,当需要新的存储空间时,不用每次都进行回收操作,直接查看是否还有未使用的已回收空间。
步骤4.3、将连续可回收扇区的最低地址存储至allocationPos,最高地址存储至sectorsEndPos。该步骤中,如果有多个分散的可回收扇区,将最大的连续可回收扇区的最低地址存储至allocationPos,最高地址存储至sectorsEndPos。在allocationPos和sectorsEndPos之间的地址范围内是连续的可分配空间。
这里的“连续可回收扇区”包括只有单个扇区可以使用的情况。
关于有益效果的评估:
计算数据:传统的使用方式,以扇区为单位进行分配。若每个扇区为4096个字节,如果存储一种数据,数据量4097个字节,单纯为了存储数据需要2个扇区,在不丢失数据擦除扇区的前提下需要分配3个扇区。
本身数据仅需要1个扇区再加1个字节,但是此处却多耗费了将近2个扇区,当存储10种数据时就会造成将近20个扇区的数据浪费,这种数据项越多浪费的空间就会呈2N增加,所以节省空间效果是显著的。
寿命计算:当仅存储1种数据的前提下,按传统方式划分区域进行存储,此数据的擦写操作只能在分配好的空间进行,而其他区域不会使用,该区域擦写次数达到上限次数(10万次)就会造成硬件系统的异常,在数据占用量1个扇区,芯片存储量2M字节的前提下,此芯片有512个扇区,极限情况下,本发明的解决方案可提高512倍的擦写寿命。

Claims (5)

1.一种轻型嵌入式系统的闪存管理方法,所述闪存中存储几种数据,每种数据有固定的长度和预定的存储数量,其特征在于所述方法包括以下步骤:
步骤1、针对每一种数据制作数据表头,所述数据表头包括data_len、max_num、cur_num、head、tail、sector_infor,
其中,data_len为该种数据每一条的数据长度,单位为字节,max_num为最大条数,cur_num为现有条数,head为数据存储队首位置,tail为数据存储队尾位置,sector_infor为该种数据对扇区的占用情况信息,每个扇区对应所述sector_infor中的一个bit,将sector_infor中的所有bit置0;
设定每一种数据在闪存中的存储格式为:
数据+next_addr,
next_addr为下一条数据的地址指针;
步骤2、设置闪存的当前分配位置以及结束位置,分别为allocationPos和sectorsEndPos,allocationPos=0,sectorsEndPos为闪存的结束地址,在allocationPos和sectorsEndPos之间的地址范围内是连续的可分配空间;
步骤3、添加某种数据时,执行以下步骤:
步骤3.1、获得当前存储位置,
步骤3.2、获取下一条数据的存储位置,
包括以下步骤:
计算预计存储位置:
POS= allocationPos+data_len+len(next_addr)
其中,len(next_addr)为next_addr的长度,单位为字节;
计算剩余空间大小:
POS1= POS + data_len+len(next_addr)
如果POS1小于等于sectorsEndPos,POS为下一条数据的存储位置,否则,执行步骤4,得到新的allocationPos,重新执行步骤3.2;
步骤3.3、将数据存储到步骤3.1得到的当前存储位置;将步骤3.2得到的POS存储到next_addr中;
步骤3.4、更新数据表头,包括:
步骤3.4.1、将步骤3.2得到的下一条数据的存储位置POS存储到数据表头信息的tail,
步骤3.4.2、得到POS所在扇区信息,将sector_infor中对应该扇区的bit置1,
步骤3.4.3、如果数据表头信息中的cur_num小于max_num,更新数据表头信息的cur_num=cur_num+1;
否则,更新head,更新的数据为当前head指向的数据中的next_addr,判断更新前后的head是否属于同一扇区,如果不是,得到更新前的head所在扇区信息,将sector_infor中对应该扇区的bit置0;
步骤3.5、更新allocationPos,allocationPos=POS1;
步骤4、闪存回收步骤,包括:
步骤4.1、将所有数据表头中的head、tail地址跨度求并集,
步骤4.2、将得到的并集地址转化为闪存的扇区跨度,此跨度以外的扇区为可以回收的扇区,
步骤4.3、将连续可回收扇区的最低地址存储至allocationPos,最高地址存储至sectorsEndPos。
2.根据权利要求1所述的闪存管理方法,其特征在于,所述数据表头存储在其它介质中。
3.根据权利要求1所述的闪存管理方法,其特征在于,
步骤3中,如果是第一次添加某种数据,步骤3.1包括:
allocationPos为可以存储的位置,将allocationPos存储到数据表头信息的head中,更新allocationPos,allocationPos= allocationPos+data_len+len(next_addr);
步骤3中,如果是添加已经存储过的数据,步骤3.1包括:
查询对应的数据表头,tail为可以存储的位置。
4.根据权利要求1所述的闪存管理方法,其特征在于,
步骤4、闪存回收步骤中:
步骤4.2、将得到的并集地址转化为闪存的扇区跨度,此跨度以外的扇区为可以回收的扇区,如果无法得到可以回收的扇区执行步骤4.4,否则执行步骤4.3,
增加:
步骤4.4、将所有数据表头中的sector_infor进行或运算,结果为0的bit对应的扇区为可回收的扇区,执行步骤4.3。
5.根据权利要求1所述的闪存管理方法,其特征在于,
步骤4.3中,如果有多个分散的可回收扇区,将最大的连续可回收扇区的最低地址存储至allocationPos,最高地址存储至sectorsEndPos。
CN202011314074.4A 2020-11-20 2020-11-20 一种轻型嵌入式系统的闪存管理方法 Active CN112269549B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011314074.4A CN112269549B (zh) 2020-11-20 2020-11-20 一种轻型嵌入式系统的闪存管理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011314074.4A CN112269549B (zh) 2020-11-20 2020-11-20 一种轻型嵌入式系统的闪存管理方法

Publications (2)

Publication Number Publication Date
CN112269549A CN112269549A (zh) 2021-01-26
CN112269549B true CN112269549B (zh) 2022-03-11

Family

ID=74340271

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011314074.4A Active CN112269549B (zh) 2020-11-20 2020-11-20 一种轻型嵌入式系统的闪存管理方法

Country Status (1)

Country Link
CN (1) CN112269549B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112817532A (zh) * 2021-01-27 2021-05-18 杭州爱科科技股份有限公司 数据处理方法、装置及计算机存储介质

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6742078B1 (en) * 1999-10-05 2004-05-25 Feiya Technology Corp. Management, data link structure and calculating method for flash memory
CN101324862B (zh) * 2008-05-05 2010-06-02 青岛海信电器股份有限公司 闪存存储管理方法
CN103425546A (zh) * 2013-08-14 2013-12-04 江苏林洋电子股份有限公司 一种通用高效高可靠的Nor Flash数据存储管理方法
CN111324554B (zh) * 2020-02-18 2022-03-18 日立楼宇技术(广州)有限公司 闪存数据的管理方法及装置、电梯控制器

Also Published As

Publication number Publication date
CN112269549A (zh) 2021-01-26

Similar Documents

Publication Publication Date Title
CN106502587B (zh) 硬盘数据管理方法和硬盘控制装置
US7610434B2 (en) File recording apparatus
CN100419714C (zh) 闪存存取方法、闪存文件系统的块替换方法及其管理装置
CN102831070B (zh) 用于存储器装置的存储地址重新映射的方法和系统
CN101515276B (zh) 一种文件数据写操作的方法、文件数据恢复方法及系统
US6622226B1 (en) Method and system for using a mark-list for garbage collection
CN115292266B (zh) 一种基于存储器的高可靠日志存储方法
CN104008061A (zh) 内存回收方法及装置
CN110347613B (zh) 多租户固态盘中实现raid的方法、控制器及多租户固态盘
CN101606133A (zh) 具有连续逻辑地址空间接口的直接数据文件系统的使用
CN102135942A (zh) 一种存储设备中实现损耗均衡的方法及存储设备
CN109558335B (zh) 一种基于Nor Flash存储器的嵌入式系统的文件存储格式
CN110389712B (zh) 数据写入方法及其装置、固态硬盘和计算机可读存储介质
CN108304259B (zh) 内存管理方法及系统
CN108829342B (zh) 一种日志存储方法、系统及存储装置
CN1075211C (zh) 便携式终端的存储器管理方法
CN103678180A (zh) 智能卡非易失性存储器的管理方法
CN108228479A (zh) 一种嵌入式flash数据存储方法及系统
CN112269549B (zh) 一种轻型嵌入式系统的闪存管理方法
CN104933051A (zh) 文件存储空间回收方法和装置
US20060236065A1 (en) Method and system for variable dynamic memory management
CN100405329C (zh) 在按块可擦的存储器中写存储器扇区的方法
CN101241469A (zh) 一种在嵌入式系统中存储、读取数据的方法及装置
CN112347043A (zh) 基于车载sd卡的文件管理方法、装置、设备及存储介质
CN1627272A (zh) 移动终端的闪存中的文件管理方法

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