一种面向自容式应用的数据存储方法及存储系统与流程

文档序号:18360085发布日期:2019-08-06 23:42阅读:383来源:国知局
一种面向自容式应用的数据存储方法及存储系统与流程

本发明属于海洋仪器领域,具体涉及一种面向自容式应用的数据存储方法及存储系统。



背景技术:

自容式采集设备目前在海洋仪器领域有着广泛的应用。自容式采集设备存储系统的特点是采样数据按序存储,设备回收后批量导出。自容式采集通常工作时间长,数据量大;在存储过程中要求数据存储速率稳定,数据不要丢失;数据导出过程快速、简单、易用。考虑实现复杂度、成本、功耗等方面的要求,通常使用sd/tf卡存储采样数据,并使用文件系统组织数据文件并导出。

传统的实现方式通常使用常规的fat文件系统操作方式,生成文件表项,写入数据,并修改文件表项中的文件信息和fat表。但是这种方式会导致随机位置操作sd/tf卡,导致数据写入速度不平稳。当遇到单张sd/tf卡容量不足时,则使用多张sd/tf卡进行扩容。数据导出时,只能一张张读取,导出效率低。



技术实现要素:

本发明要解决的技术问题在于提供一种面向自容式应用的数据存储方法,所述方法针对低功耗、大容量的自容式场景,提出一种面向自容式应用的数据存储方法。不但能够方便地扩充存储容量,而且保证数据的完成记录和完整导出。同时,当使用多卡进行扩容时,支持电脑主机直接对多张sd/tf卡的数据并行读取,大大提高了数据导出的速度。

本发明通过如下技术方案来实现的:

一种面向自容式应用的数据存储方法,所述方法具体如下:

(1)首先通过分离数据的存储和文件系统信息的写入过程,根据系统中卡的数目和容量,规划文件系统的数据格式和位置,将数据的存储和文件系统的相关操作分别进行;每张sd/tf卡分成两部分,为文件系统的存储空间和数据存储空间,每张卡的数据存储空间按照合适大小的块进行划分,并对块进行顺序标注,每一个块作为sd/tf卡的一次写入的单位,将n张sd/tf卡映射为一张虚拟的sd/tf卡,并将采集的数据分块依次轮流写入各个sd/tf卡;(2)开始采集数据时,mcu将采集开始时间存储到非易失性存储器中。

mcu依次将实时采集数据按块顺序写入各个卡的数据存储空间;

(3)当采集数据过程结束后,mcu将采集数据最后的写入位置记录在非易失性存储器中,写入位置包含sd/tf卡的编号和sd/tf卡中的位置;构建文件系统所需的内容;文件系统的构建要保证所有存储下来的采集数据全部依次包含在某个文件中,文件大小需要是簇大小的整数倍,从而可以在事后从sd/tf卡中读取;

当需要进行文件系统读取式时,通过多卡控制器,将并行存储的数据同步读出,串行化后通过usb控制器发送给电脑主机。

进一步,块的大小满足n*块等于文件系统中定义的簇的大小。

进一步,所述的n为2的指数幂。

进一步,所有sd/tf卡的容量相等。

本发明还提供利用上述方法构建的数据存储系统,所述存储系统包括低功耗mcu模块、高速接口模块、sd/tf卡多卡控制器模块和1-n个sd/tf卡;低功耗mcu模块负责完成数据的采集功能并将采集到数据通过sd/tf卡多卡控制器模块写入sd/tf卡;高速接口模块和电脑主机相连,接收电脑主机的指令并通过sd/tf卡多卡控制器模块读取sd/tf卡中的数据;sd/tf卡多卡控制器负责接收低功耗mcu模块采集到的数据并按照低功耗mcu模块的指令写入sd/tf卡的指定位置;读取时sd/tf卡多卡控制器负责根据接收到的电脑主机的指令从所管辖的多张sd/tf卡中并行读取数据。

所述的sd/tf卡多卡控制器的功能是实现多卡的管理和读写操作;系统启动时,sd/tf卡多卡控制器和低功耗mcu模块配合依次完成所有sd/tf卡的初始化工作;数据采集过程中,sd/tf卡多卡控制器和低功耗mcu模块配合,根据低功耗mcu模块的控制信号和指令将采集到的数据按照顺序依次写入到指定的位置;数据读取时,sd/tf卡多卡控制器根据从高速接口模块接收到的电脑主机的读取命令,并行从多张sd/tf卡中读取数据并通过高速接口模块发送给电脑主机。

本发明与现有的文件系统操作方式相比的有益效果:

1.本发明方法分离数据的存储和文件系统信息的写入过程,这一方法来解决了数据连续平滑写入的问题,实现简单;

2.基于tf卡矩阵的架构,扩展性好,容量可任意扩充(仅受所使用的文件系统限制)

3.采集的数据顺序依次轮流写入多张sd/tf卡存储方式,对于单张sd/tf卡来说,写入位置是顺序没有跳跃的,最大限度发挥了sd/tf卡的写入速度;对于整个系统来说,写入过程是依次交替写入各个sd/tf卡的,充分利用了多张sd/tf卡的吞吐量,最大限度的获得平稳的sd/tf卡写入性能;

将多张sd/tf卡映射为一张虚拟的sd/tf卡,从整个虚拟的sd/tf卡来看,数据的存储格式和位置满足构建文件系统的需要,方便后续从电脑主机直接读取;从多张物理的sd/tf卡来看,同一个文件的数据是分块并行写入各个sd/tf卡的,在后续从电脑主机的读取过程中,能够支持通过多卡控制器并行读取。并统一构建成所需的文件系统,不但可直接使用电脑读取,而且读取过程可以从多张sd/tf卡中并行读取,数据导出速度更快。

附图说明

图1低功耗大容量存储系统架构:11、高速接口模块、12\低功耗mcu模块13、sd/tf卡多卡控制器模块,14、sd/tf卡;

图2存储空间划分示意图:左边为多张sd/tf卡,右边为虚拟sd/tf卡。

具体实施方式

下面通过实施例结合附图来对本发明的技术方案做进一步解释,但本发明的保护范围不受实施例任何形式上的限制。

实施例1

一种面向自容式应用的数据存储方法,所述方法首先通过分离数据的存储和文件系统信息的写入过程,根据系统中卡的数目和容量,规划文件系统的数据格式和位置,将数据的存储和文件系统的相关操作分别进行;将多张sd/tf卡映射为一张虚拟的sd/tf卡,并将采集的数据分块依次轮流写入各个sd/tf卡;从整个虚拟的sd/tf卡来看,数据的存储格式和位置满足构建文件系统的需要,方便后续从电脑主机直接读取;从多张物理的sd/tf卡来看,同一个文件的数据是分块并行写入各个sd/tf卡的,在后续从电脑主机的读取过程中,能够支持通过多卡控制器并行读取。

在数据存储过程并不关注使用什么文件系统以及文件系统的构建,只是根据构建文件系统的需要,采集数据是按顺序依次轮流写入多张sd/tf卡中;

在整个实时的采集数据存储过程中,对单张物理的sd/tf卡来说,数据在sd/tf卡中存储的位置是连续的,没有任何跳跃性的地址操作,也不插入任何的sd/tf卡读操作,保证整个sd/tf卡的写入过程是平稳的;从整个系统的多张sd/tf卡来看,数据是并行写入各个sd/tf卡的,充分利用了多张sd/tf卡的吞吐量;因此,从整个系统的存储过程看,最大程度发挥sd/tf卡的写入性能,得到最大最平稳的写入速度,防止因数据的堆积超过系统本身的缓存而导致数据丢失。

当采集数据过程结束后,根据事先指定的起始写入位置和最后的写入位置,构建文件系统所需的内容;文件系统的构建要保证所有存储下来的采集数据全部依次包含在某个文件中,从而可以在事后从sd/tf卡中读取;

由于文件系统的构建本身就是异步,只要将构建文件系统所需的必要信息都存储到非易失性存储器中,当构建文件系统时,出现任何异常(如非预期的系统复位或掉电)导致文件系统损坏,均可通过再次构建文件系统进行修复。

当需要进行文件系统读取式时,通过多卡控制器,将并行存储的数据同步读出,串行化后通过usb控制器发送给电脑主机。

利用上述方法构件的数据存储系统,如图1所示,所述存储系统包括低功耗mcu模块12、高速接口模块11、sd/tf卡多卡控制器模块13和1-n个sd/tf卡14;低功耗mcu模块负责完成数据的采集功能并将采集到数据通过sd/tf卡多卡控制器模块写入sd/tf卡;高速接口模块和电脑主机相连,接收电脑主机的指令并通过sd/tf卡多卡控制器模块读取sd/tf卡中的数据;sd/tf卡多卡控制器负责接收低功耗mcu模块采集到的数据并按照低功耗mcu模块的指令写入sd/tf卡的指定位置;读取时sd/tf卡多卡控制器负责根据接收到的电脑主机的指令从所管辖的多张sd/tf卡中并行读取数据。

所述的sd/tf卡多卡控制器的功能是实现多卡的管理和读写操作;系统启动时,sd/tf卡多卡控制器和低功耗mcu模块配合依次完成所有sd/tf卡的初始化工作;数据采集过程中,sd/tf卡多卡控制器和低功耗mcu模块配合,根据低功耗mcu模块的控制信号和指令将采集到的数据按照顺序依次写入到指定的位置;数据读取时,sd/tf卡多卡控制器根据从高速接口模块接收到的电脑主机的读取命令,并行从多张sd/tf卡中读取数据并通过高速接口模块发送给电脑主机。

具体实施过程以fat32文件系统为例,但本方法并不限定与fat文件系统。假定使用fat32文件系统,由于扩容需要一共使用了n张sd/tf卡。在fat32文件系统中一簇的大小为2的指数幂,这里假定n可以取值为8,但实际中卡的张数不一定必须是8张,但要求是2的指数幂。由于fat32文件系统最大支持到2tb的容量,所以系统中所有卡的总容量不能超过2tb。为了便于并行读取,系统中所使用卡的容量应基本一致。

本实施例数据存储的方法,具体程如下:

1.mcu通过sdio发送指令获取各个sd/tf卡的容量,以容量最小的卡的容量作为所有卡的可使用容量,记为c。根据事先指定的所支持的最大文件数据(譬如50000)、卡的容量和簇的大小,计算文件系统自身信息所需要的空间,所需容量记为c1。每张sd/tf卡,除去前面部分预留给文件系统的存储空间外,剩余的存储空间定义为数据存储空间,即为采集数据所能使用的部分,容量记为c2,且c=c1+c2。这样,每张卡都被分为了两部分,分别记为pi,0和pi,1,其中i=0,1,……,7,表示卡的索引,如图2所示。

每张卡的数据存储空间按照合适大小的块(大小记为c3)进行划分,记为{bi,j}。其中i=0,1,……,7,表示卡的索引,j=0,1,……,n,表示块的索引,根据卡容量不同,块的大小不同,n的大小也不同。对于fat文件系统,可简单定义c3取值满足n*c3等于fat文件系统中定义的簇的大小。每一个块作为sd/tf卡的一次写入的单位。逻辑上系统中所有的sd/tf卡构成了一张新的sd/tf卡存储空间。

如图2所示。逻辑顺序上按照b0,0,b1,0,……,b7,0,b0,1,b1,1,……,b7,1,……,b0,n,b1,n,……,b7,n。

2.开始采集时,mcu将采集开始时间存储到非易失性存储器中。

3.mcu依次将实时采集数据按块顺序写入各个卡的数据存储空间。写入按照b0,0,b1,0,……,b7,0,b0,1,b1,1,……,b7,1,……,b0,n,b1,n,……,b7,n的顺序。即,当mcu接收到采集装置的数据后,暂时存储在自己的ram中,当数据存满一个块后,通过sd/tf卡多卡控制器,写入指定的卡中。先使用编号为0的卡的编号为0的block,再编号为1的卡的编号为0的block。

4.采集结束后,mcu将采集数据最后的写入位置记录在非易失性存储器中,写入位置包含卡的编号和卡中的位置。

5.mcu读取开始采集时间、采集数据存储的结束位置,构建文件系统。文件系统的构建根据步骤1中建立出来的虚拟sd/tf进行。构建文件系统时,每个文件依次对应数据存储区域存储的采集数据,文件大小需要是簇大小的整数倍,简单起见可以每个文件都是固定大小(但这不是必须的)。并且对于某一个指定的i值,保证(b0,i,b1,i,……,bn,i)包含在同一文件中,由于文件只是为了导出数据用的,文件的大小可随意指定,所以这是很容易做到的,只要保证文件大小是n*c3的整数倍就可以了。所有文件系统的信息,包括磁盘分区信息、fat表项、文件目录项等都写在第一张卡的开始部分,即p1,0区域。其余构建方法参考《一种fat文件系统的预分配文件建立方法及系统》,不同的是,这里的构建是针对虚拟sd/tf进行的。如果采用的不是fat文件系统,则只需要类似的将文件系统信息写入事先规划好的p1,0区域。

6.如果构建过程中出现错误或者在读取时发现文件系统信息不完整导致数据文件无法读取,则跟根据记录在非易失性存储中的数据写入位置等信息按照第5歩重新构建文件系统即可。

7.电脑主机读取fat文件数据时,由多卡控制器负责将虚拟sd/tf呈现出来,使得电脑主机将系统中的多张sd/tf卡识别为一张sd/tf。由于fat文件系统是根据步骤1中建立出来的虚拟sd/tf构建的,包括磁盘分区fat表项、文件目录项等,都从第一张卡的p0部分读取。sd/tf卡多卡控制器收到读取虚拟sd/tf的p0部分的指令,则从p0,0读取。如果卡控制器收到读取虚拟sd/tf的p1部分的指令,则并行从p0,1-p7,1部分读取。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1