一种嵌入式轻量级文件系统Flash均衡擦写方法及系统与流程

未命名 07-20 阅读:124 评论:0

一种嵌入式轻量级文件系统flash均衡擦写方法及系统
技术领域
1.本发明属于文件系统技术领域,尤其涉及一种嵌入式轻量级文件系统flash均衡擦写方法及系统。


背景技术:

2.文件系统的安全可靠性与用户保存数据的安全性息息相关,更关系到系统能否正常运行,但由于存放文件系统及数据的flash器件的使用寿命受到擦写次数的限制,一般flash器件的擦写次数为10~100万次不等。如果文件系统不支持对其使用的flash器件块进行均衡擦写,那么应用程序会将数据写入文件系统,若对flash的部分区域擦写过于频繁,会导致该区域提前损坏,引发数据丢失、文件系统损坏等问题。
3.现有技术中,有一部分文件系统由于不支持flash擦写均衡,flash器件部分区域容易过早损坏,进而造成文件或文件系统损坏;还有一部分文件系统仅支持简单的擦写均衡,比如在文件系统第一次上电时,采用线性分配空闲块的方式,当再次上电时,空块分配的起始遍历位置采用随机数,这种方案在一定程度上可以改善擦写均衡性,但仅凭对空闲块进行简单的随机分配,在无需申请新块的情况下(例如文件系统中的热数据),对已分配块的擦写次数不能进行均衡保护,且无法真正保证擦写均衡,频繁刷新fat表及dir区域,可能造成备份区域提前损坏的情况。公开号为cn108255740a的专利提供了一种flash均衡擦写方法及系统,包括步骤:s1,获取当前逻辑地址映射的当前物理块,所述物理块对应有物理块编号及物理地址;s2,轮询查找空闲物理块作为目的物理块;s3,将当前物理块的数据缓存并更新到内存缓存区,将更新后的内存缓存区数据写入到目的物理块中;s4,更新管理表状态,所述管理表用于存放映射表,利用映射表存储逻辑地址所映射的物理块编号及物理地址。此方法也是通过对空闲块进行轮询查找,对已分配块的擦写次数不能进行均衡保护,无法真正保证擦写均衡,并且还有损坏备份区的风险。
4.因此,嵌入式轻量级文件系统如何对flash块进行稳定的均衡擦写,是本技术领域人员亟待解决的问题。


技术实现要素:

5.针对现有技术的不足,本发明的目的是提供一种嵌入式轻量级文件系统flash均衡擦写方法,以解决现有技术中嵌入式轻量级文件系统无法对flash块进行稳定的均衡擦写的问题;另外本发明还提供了一种嵌入式采用所述嵌入式轻量级文件系统flash均衡擦写方法的系统。
6.为了解决上述技术问题,本发明采用了如下的技术方案:
7.第一方面,本发明提供了一种嵌入式轻量级文件系统flash均衡擦写方法,包括以下步骤:
8.s10、系统上电,读取flash中的映射关系管理表a或映射关系管理表b,加载到映射关系管理表c,并初始化空闲链表l1及脏区链表l2;
9.s20、记录每个flash块的擦写次数,超过平均擦写次数并达到脏区阈值时,将该flash块的内容迁移到所述空闲链表l1分配的新块,并将该flash块加入所述脏区链表l2,更新所述映射关系管理表c;
10.s30、根据文件系统分配的逻辑块索引与ftl层分配的物理块索引建立映射关系,将数据写入对应的物理块,并保存映射关系到所述映射关系管理表c;
11.s40、根据下传的逻辑块索引在所述映射关系管理表c中找到对应的物理块索引,再读取物理块中的数据;
12.s50、定时检查空闲块个数,并对位于脏区链表上的flash块进行回收,回收flash块时刷新映射关系管理表a或映射关系管理表b。
13.进一步的,所述步骤s20中,在文件系统使用过程中,ftl层会记录每个flash块的擦写次数,所述脏区阈值根据flash块的数量及存储数据的数量决定。
14.进一步的,所述步骤s30中,根据所述逻辑块索引,ftl层查询是否分配对应的物理扇区,若否,则分配新的物理扇区,若是,则根据所述脏区阈值判断所述物理扇区是否可以继续写入,若是,则继续写入,若否,则将所述物理扇区加入所述脏区链表l2并分配新的物理扇区。
15.进一步的,所述步骤s40中,文件系统下传待读的逻辑扇区索引,ftl层根据所述映射关系管理表c找到所述逻辑扇区对应的物理扇区,再从所述物理扇区中读取存储的数据。
16.进一步的,所述步骤s50中,当所述空闲块少于预警值时调整所述脏区阈值。
17.进一步的,设置所述脏区阈值可以影响回收速度,进而控制空闲块的数量和占比。
18.第二方面,本发明实施例还提供了一种采用上述方法的系统,包括:
19.mcu模块、计量模块、文件系统flash模块、nb-iot模块,所述mcu模块分别与所述计量模块、文件系统flash模块、nb-iot模块连接;所述系统运行在rtos上,所述mcu模块支持iic、spi接口,所述flash模块用于存储轻量级文件系统。
20.进一步的,所述mcu模块的型号为hc32f460jeta。
21.进一步的,所述计量模块的型号为rn7032。
22.进一步的,所述文件系统flash模块采用eeprom、norflash或芯片内部rom。
23.本发明提供的嵌入式轻量级文件系统flash均衡擦写方法及系统与现有技术相比,至少具有如下有益效果:
24.现有技术中有一部分文件系统由于不支持flash擦写均衡,flash器件部分区域容易过早损坏,进而造成文件或文件系统损坏;还有一部分文件系统仅支持简单的擦写均衡,无法真正保证擦写均衡。本发明过程简单、高效便捷,在单次上电环境下统计flash的擦写次数,结合阈值与剩余空间综合调节的方法,有效改善flash擦写均衡性,增长flash器件使用寿命,也提高了文件系统安全性;使用三份映射关系管理表及两个资源管理链表,乒乓式保存映射关系,使文件系统支持掉电安全特性。
附图说明
25.为了更清楚地说明本发明的方案,下面将对实施例描述中所需要使用的图作一个简单的介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
26.图1为本发明实施例提供的一种嵌入式轻量级文件系统flash均衡擦写方法的流程图;
27.图2为本发明实施例提供的一种嵌入式轻量级文件系统flash均衡擦写方法的资源管理图;
28.图3为本发明实施例提供的一种采用嵌入式轻量级文件系统flash均衡擦写方法的系统结构图。
具体实施方式
29.为了便于理解本发明,下面将参照相关附图对本发明进行更全面的描述。附图中给出了本发明的较佳实施例。但是,本发明可以以许多不同的形式来实现,并不限于本文所描述的实施例。相反地,提供这些实施例的目的是使对本发明的公开内容的理解更加透彻全面。
30.除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中在本发明的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本发明。
31.本发明提供了一种嵌入式轻量级文件系统flash均衡擦写方法,应用于嵌入式轻量级文件系统对flash块进行擦写的过程中,嵌入式轻量级文件系统flash均衡擦写方法包括以下步骤:
32.s10、系统上电,读取flash中的映射关系管理表a或映射关系管理表b,加载到映射关系管理表c,并初始化空闲链表l1及脏区链表l2;
33.s20、记录每个flash块的擦写次数,超过平均擦写次数并达到脏区阈值时,将该flash块的内容迁移到空闲链表l1分配的新块,并将该flash块加入脏区链表l2,更新映射关系管理表c;
34.s30、根据文件系统分配的逻辑块索引与ftl层分配的物理块索引建立映射关系,将数据写入对应的物理块,并保存映射关系到映射关系管理表c;
35.s40、根据下传的逻辑块索引在映射关系管理表c中找到对应的物理块索引,再读取物理块中的数据;
36.s50、定时检查空闲块个数,并对位于脏区链表上的flash块进行回收,回收flash块时刷新映射关系管理表a或映射关系管理表b。
37.本发明过程简单、高效便捷,可有效改善flash擦写均衡性,增长flash器件使用寿命,也提高了文件系统安全性。
38.为了使本技术领域的人员更好地理解本发明方案,下面将结合附图,对本发明实施例中的技术方案进行清楚、完整地描述。
39.本发明提供了一种嵌入式轻量级文件系统flash均衡擦写方法,应用于嵌入式轻量级文件系统对flash块进行擦写的过程中,结合图1与图2,本实施例中,所述嵌入式轻量级文件系统flash均衡擦写方法包括以下步骤:
40.s10、系统上电,读取flash中的映射关系管理表a或映射关系管理表b,加载到映射关系管理表c,并初始化空闲链表l1及脏区链表l2;
41.s20、记录每个flash块的擦写次数,超过平均擦写次数并达到脏区阈值时,将该
flash块的内容迁移到空闲链表l1分配的新块,并将该flash块加入脏区链表l2,更新映射关系管理表c;
42.具体地,在文件系统使用过程中,ftl层会记录每个flash块的擦写次数,脏区阈值根据flash块的数量及存储数据的数量决定,当空闲块少于预警值时调整脏区阈值,设置脏区阈值可以影响回收速度,进而控制空闲块的数量和占比。
43.s30、根据文件系统分配的逻辑块索引与ftl层分配的物理块索引建立映射关系,将数据写入对应的物理块,并保存映射关系到映射关系管理表c;
44.具体地,根据逻辑块索引,ftl层查询是否分配对应的物理扇区,若否,则分配新的物理扇区,若是,则根据脏区阈值判断物理扇区是否可以继续写入,若是,则继续写入,若否,则将物理扇区加入脏区链表l2并分配新的物理扇区。
45.s40、根据下传的逻辑块索引在映射关系管理表c中找到对应的物理块索引,再读取物理块中的数据;
46.具体地,文件系统下传待读的逻辑扇区索引,ftl层根据映射关系管理表c找到逻辑扇区对应的物理扇区,再从物理扇区中读取存储的数据。
47.s50、定时检查空闲块个数,并对位于脏区链表上的flash块进行回收,回收flash块时刷新映射关系管理表a或映射关系管理表b。
48.本发明实施例还提供了一种采用上述方法的系统,如图3所示,本实施例中,包括:mcu模块、计量模块、文件系统flash模块、nb-iot模块,mcu模块分别与计量模块、文件系统flash模块、nb-iot模块连接;系统运行在rtos上,mcu模块支持iic、spi接口,flash模块用于存储轻量级文件系统。
49.具体地,系统上电,mcu模块根据位于flash中的映射关系管理表的情况进行映射关系初始化操作,并初始化空闲链表l1及脏区链表l2,读取计量模块中的数据,保存到文件系统flash模块的文件系统中,并可以将数据通过nb-iot模块将数据发送到云端。
50.进一步的,mcu模块可采用hc32f460jeta或其他的mcu,计量模块可以采用rn7032或其它芯片,文件系统flash模块可以采用eeprom、norflash或芯片内部rom,nb-iot模块可采用nb-iot模块或4g、gprs等其它具备网络数据传输能力的物联网模块。
51.上述实施例所述的嵌入式轻量级文件系统flash均衡擦写方法及系统,可以用于不支持擦写均衡及掉电安全保护的文件系统中,例如fatfs,也可以用于替换文件系统中原有的擦写和掉电安全保护的方法,根据flash及数据大小的情况,可以以块为单位也可以以扇区为单位进行均衡擦写管理,本发明过程简单、高效便捷,在单次上电环境下统计flash的擦写次数,结合阈值与剩余空间综合调节的方法,有效改善flash擦写均衡性,增长flash器件使用寿命,也提高了文件系统安全性;使用三份映射关系管理表及两个资源管理链表,乒乓式保存映射关系,使文件系统支持掉电安全特性;通过映射表实现文件系统与底层flash的关系的解耦,易于移植到不同的文件系统中使用;通过内存中的映射表可快速读取写入物理块的数据,写入数据采用空闲链表分配的方式,节省分配时间,提高写入速度。
52.显然,以上所描述的实施例仅仅是本发明较佳实施例,而不是全部的实施例,附图中给出了本发明的较佳实施例,但并不限制本发明的专利范围。本发明可以以许多不同的形式来实现,相反地,提供这些实施例的目的是使对本发明的公开内容的理解更加透彻全面。尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来而言,其依
然可以对前述各具体实施方式所记载的技术方案进行修改,或者对其中部分技术特征进行等效替换。凡是利用本发明说明书及附图内容所做的等效结构,直接或间接运用在其他相关的技术领域,均同理在本发明专利保护范围之内。

技术特征:
1.一种嵌入式轻量级文件系统flash均衡擦写方法,其特征在于,包括以下步骤:s10、系统上电,读取flash中的映射关系管理表a或映射关系管理表b,加载到映射关系管理表c,并初始化空闲链表l1及脏区链表l2;s20、记录每个flash块的擦写次数,超过平均擦写次数并达到脏区阈值时,将该flash块的内容迁移到所述空闲链表l1分配的新块,并将该flash块加入所述脏区链表l2,更新所述映射关系管理表c;s30、根据文件系统分配的逻辑块索引与ftl层分配的物理块索引建立映射关系,将数据写入对应的物理块,并保存映射关系到所述映射关系管理表c;s40、根据下传的逻辑块索引在所述映射关系管理表c中找到对应的物理块索引,再读取物理块中的数据;s50、定时检查空闲块个数,并对位于脏区链表上的flash块进行回收,回收flash块时刷新映射关系管理表a或映射关系管理表b。2.根据权利要求1所述的一种嵌入式轻量级文件系统flash均衡擦写方法,其特征在于,所述步骤s20中,在文件系统使用过程中,ftl层会记录每个flash块的擦写次数,所述脏区阈值根据flash块的数量及存储数据的数量决定。3.根据权利要求1所述的一种嵌入式轻量级文件系统flash均衡擦写方法,其特征在于,所述步骤s30中,根据所述逻辑块索引,ftl层查询是否分配对应的物理扇区,若否,则分配新的物理扇区,若是,则根据所述脏区阈值判断所述物理扇区是否可以继续写入,若是,则继续写入,若否,则将所述物理扇区加入所述脏区链表l2并分配新的物理扇区。4.根据权利要求1所述的一种嵌入式轻量级文件系统flash均衡擦写方法,其特征在于,所述步骤s40中,文件系统下传待读的逻辑扇区索引,ftl层根据所述映射关系管理表c找到所述逻辑扇区对应的物理扇区,再从所述物理扇区中读取存储的数据。5.根据权利要求1所述的一种嵌入式轻量级文件系统flash均衡擦写方法,其特征在于,所述步骤s50中,当所述空闲块少于预警值时调整所述脏区阈值。6.根据权利要求5所述的一种嵌入式轻量级文件系统flash均衡擦写方法,其特征在于,设置所述脏区阈值可以影响回收速度,进而控制空闲块的数量和占比。7.一种采用如权利要求1至6所述方法的系统,其特征在于,包括:mcu模块、计量模块、文件系统flash模块、nb-iot模块,所述mcu模块分别与所述计量模块、文件系统flash模块、nb-iot模块连接;所述系统运行在rtos上,所述mcu模块支持iic、spi接口,所述flash模块用于存储轻量级文件系统。8.根据权利要求7所述的一种系统,其特征在于,所述mcu模块的型号为hc32f460jeta。9.根据权利要求7所述的一种系统,其特征在于,所述计量模块的型号为rn7032。10.根据权利要求7所述的一种系统,其特征在于,所述文件系统flash模块采用eeprom、norflash或芯片内部rom。

技术总结
本发明适用于文件系统技术领域,涉及一种嵌入式轻量级文件系统Flash均衡擦写方法,包括:读取Flash中的映射关系管理表A或B,加载到映射关系管理表C,并初始化空闲链表L1及脏区链表L2;记录每个Flash块的擦写次数,超过平均擦写次数并达到脏区阈值时,将该Flash块的内容迁移到空闲链表L1分配的新块,并将该Flash块加入脏区链表L2,更新映射关系管理表C;根据逻辑块索引与物理块索引建立映射关系,将数据写入对应的物理块,保存映射关系到映射关系管理表C;根据下传的逻辑块索引在映射关系管理表C中找到对应的物理块索引,再读取物理块中的数据;定时检查空闲块个数,并对位于脏区链表上的Flash块进行回收。本发明可实现嵌入式轻量级文件系统Flash稳定的均衡擦写。轻量级文件系统Flash稳定的均衡擦写。轻量级文件系统Flash稳定的均衡擦写。


技术研发人员:李超 唐华博 陈超鑫 余伟峰 李峻 郑玉玲
受保护的技术使用者:威胜信息技术股份有限公司
技术研发日:2023.03.14
技术公布日:2023/7/18
版权声明

本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

飞行汽车 https://www.autovtol.com/

分享:

扫一扫在手机阅读、分享本文

相关推荐