一种基于FAT文件系统优化的数据循环存储方法与流程
- 国知局
- 2024-12-06 12:32:12
本发明属于嵌入式设备,具体涉及一种基于fat文件系统优化的数据循环存储方法。
背景技术:
1、随着嵌入式技术的发展,越来越多的场景中需要实时快速记录数据并存储为主流的文件系统格式,如fat32文件系统格式,fatfs文件系统,其是一种完全免费开源的支持fat32的文件系统模块,专门为适应小型的嵌入式系统存储小的特点设计,它完全用标准c语言编写,具有良好的硬件平台独立性,可以移植到各种dsp、arm等微处理器上。fat32文件系统的基本结构,主要由以下三部分组成:依次是引导区(boot区)、文件分配表区(fat区)、数据区(data区)。fat32文件系统还包括目录项,除了根目录的所有文件都对应一组数据作为文件来描述,称为文件目录项。每个文件目录项内的所有文件和子目录的文件目录项都存储在这个目录对应的存储空间内,主要包括文件名、文件属性、文件大小、文件存储位置以及一系列的事件描述等。把文件路径、文件目录项和fat表联系在一起即可确定一个文件在硬盘中的存储情况。文件创建时首先查找当前目录是否有重名文件,然后查询分配连续可用的目录项建立目录,最后分配存储数据区更新fat表;文件查找时通过路径找到文件所在目录的簇,在目录对应的空间内比对文件名,找到文件对应的文件目录项,通过文件目录项确定文件的起始簇和文件大小,根据fat表内的簇链确定文件的存储空间。文件删除时通过路径找到文件所在目录的簇,在目录对应的空间内比对文件名,找到文件对应的文件目录项和文件信息,删除文件目录项,删除fat表中的链表。
2、嵌入式设备的特点是体积小、功耗低,但是相对pc处理速度慢很多,fat32文件系统的一些缺点会因此放大。如创建文件时会遍历搜索是否有同名文件、查找最后一个目录项的位置,如果已创建的文件比较多就会造成搜索时间变长;存储文件时如果两个空闲簇之间夹着比较多的非空闲簇,或者簇碎片化比较严重会导致搜索空闲簇的效率降低,从而降低文件创建、存储效率;此外在搜索删除文件时也会遍历目录,如果目录项比较多也会导致查找效率降低。以上因素会导致fat32文件系统运行实时性变差,当有多通道数据多文件同时存储的时候会加剧这种情况。
3、为了解决以上问题,可以从目录查找效率或者簇分配效率等方面考虑,提高文件存储的效率。如申请号为[cn201510355756]的专利中提到将根目录和子目录读取到内存中进行查找提高速率,但是对于小型嵌入式设备来说,通常内存比较小不太适用;申请号为[cn201910574107]的专利中提出一种数据块存储的方式,相当于预分配给文件多个连续簇进行存储,如果文件存储长度不定,存储结束会丢弃剩余簇,造成空间资源浪费;申请号为[cn202110868087]的专利通过“第一文件名”预分配文件名位置缩短时间,但仍存储在文件目录遍历消耗时间,且限制了文件名的长度;申请号为[cn201110327108]的专利提出了一种同时交替搜索空闲簇和已被删除目录的方式加快文件目录项创建速度,但是当被删除的文件目录项位置比较靠后时搜索的效率同样会明显降低。
技术实现思路
1、本发明的目的在于提供一种基于fat文件系统优化的数据循环存储方法,以解决现有技术中小型嵌入式设备的数据存储及删除效率低的技术问题。
2、为达到上述目的,本发明采用如下技术方案:
3、一种基于fat文件系统优化的数据循环存储方法,包括以下步骤:
4、记录仪进入离线模式模拟优盘格式化文件系统及配置文件更新;
5、记录仪进入在线模式完成设备初始化和文件系统挂载之后读取根目录中的配置文件信息,创建存储数据的文件,开始接收和存储数据;
6、数据存储时,对不同文件进行命名,每次建立文件完成后存储文件的目录项索引信息,当建立下一个文件时直接从上次存储的索引位置查找可供分配的连续的目录项创建新的文件,判断接受数据大小并保存至文件中;
7、数据删除时,当存储区小于限制的剩余存储容量或者文件数量大于限制的文件数量时,查询各数据通道中id编号最小的文件删除,从而循环存储数据,每次删除文件后记录删除文件的目录项索引,当下一次删除文件时直接从该目录项索引位置开始查找获取下一个要删除的文件;每次删除文件时记录当前删除掉的文件的目录项索引在存储器中,当下次删除文件时直接从记录的删除的索引位置开始查找要删除的文件id最小的文件,获取文件的信息进而删除文件;
8、所述文件命名方式为id编号+配置文件信息+多通道数据的通道号和文件名+.dat,dat表示各个通道开始数据存储后分别建立各自的dat文件存储数据。
9、进一步的,所述记录仪上电后通过模式识别gpio输入引脚电平识别工作模式,低电平识别为离线模式,高电平识别为在线模式。
10、进一步的,所述记录仪进入离线模式模拟优盘,通过usb接口和pc交互拷贝数据、格式化文件系统及配置文件更新。
11、进一步的,所述格式化文件系统为fat32文件系统。
12、进一步的,所述记录仪进入在线模式完成mcu、emmc初始化。
13、进一步的,所述数据存储前,存储数据前根据要记录的数据通道数量在根目录中建立对应个数的子文件夹,记录文件夹名字标识通道号。
14、进一步的,每个数据通道的起始和结束文件编号id记录在存储器中。
15、进一步的,每次新建文件时,将文件id编号加1递增。
16、进一步的,所述判断数据大小并保存至文件中的步骤为:
17、依次检测数据是否满4k、2k或512字节,若数据满4k、2k或512字节,则保存数据,写入文件中;
18、若数据不满512字节,则继续循环缓冲接受数据进行数据大小的检测。
19、进一步的,简化gbk和unicode的转换表为常用汉字,缩小字码转换表,通过简化的字码转换表实现对文件中文名的支持。
20、与现有技术相比,本发明具有以下有益的技术效果:
21、本发明提供了一种基于fat文件系统优化的数据循环存储方法,通过记录仪离线模式下完成格式化文件及配置文件更新,使得记录仪进入在线模式读取根目录中的配置文件信息,创建存储数据的文件,开始接收和存储数据,在数据存储及删除时,每次建立或删除文件完成后存储文件的目录项索引信息,当建立或删除下一个文件时直接从该索引位置查找即可,通过多数据通道分别对应建立文件夹存储数据,文件id编号,记录新建文件目录项索引位置提高文件创建速度,通过记录删除文件的目录项索引位置提高文件查找和删除速度;此外,在文件删除时,通过从编号最小的位置删除文件循环存储数据,减小了簇的碎片化。
22、文件命名方式为id编号+配置文件信息+多通道数据的通道号和文件名+.dat,其中每次新建文件时,将文件id编号加1递增,避免了文件重命名的情况,增加文件创建和查找及删除速度。
23、进一步的,文件存储数据时,当缓存数据较多时,使用emmc多扇区写入提高文件的存储速度。
24、进一步的,通过简化gbk和unicode的转换表为常用汉字,缩小字码转换表,使之适应flash存储较小的嵌入式设备,同时实现文件中文名的支持,即在有限的存储空间实现文件中文名的支持。
25、进一步的,判断数据大小并保存至文件中时检测数据带下是否满足要求进而确定是否写入文件中,提高了数据的读取和存储效率。
本文地址:https://www.jishuxx.com/zhuanli/20241204/341988.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 YYfuon@163.com 举报,一经查实,本站将立刻删除。