数据读写方法及装置与流程

文档序号:13512621阅读:128来源:国知局
数据读写方法及装置与流程

本发明涉及基于定位技术的数据存储技术领域,具体而言,涉及一种数据读写方法及装置。



背景技术:

随着定位技术的发展,对定位数据的存储读写要求越来越高。例如,目前市场上的车载定位与监控产品,其gps定位数据都需要发送到监控服务器,但由于移动网络的信号并非一直稳定,所以无法实时发送出去的定位数据就需要先写入到本地的存储器,比如norflash芯片。一旦移动网络信号稳定,则需要把norflash芯片中保存的定位数据批量读取出来,重新发送到监控服务器。而在现有技术中,存在着存储器使用效率低,在擦除掉旧的数据时,容易使一些本不希望被擦除的数据丢失,不具备循环写入和擦除的机制这些问题。



技术实现要素:

为了克服上述现有技术中的不足,本发明提供一种数据读写方法及装置,以解决上述问题。

为了实现上述目的,本发明较佳实施例所提供的技术方案如下所示:

就方法而言,本发明较佳实施例提供一种数据读写方法,应用于存储介质,所述存储介质包括多个用于存储数据的扇区,多个所述扇区依次排列形成扇区循环队列;在向所述存储介质中写入待存数据时,所述方法包括:

获取待存数据,其中,所述待存数据包括至少一条包括数据编号的数据帧;

在所述扇区循环队列中选择一个作为目标扇区;

向所述目标扇区写入所述待存数据;

在所述目标扇区被写满后,选择在所述扇区循环队列中所述目标扇区的下一扇区作为新的目标扇区;

在从所述存储介质中读取已存数据帧时,所述方法包括:

查找已存数据帧中数据编号最小的已存数据帧,从所述数据编号最小的已存数据帧起将所述已存数据帧从所述存储介质中读出;

在将一个扇区中所有已存数据帧读取完成后,清除该扇区中的存储的数据。

在本发明的较佳实施中,上述待存数据包括gps定位数据,所述在所述扇区循环队列中选择一个作为目标扇区的步骤之前,所述方法还包括:

在检测到有网络信号时上传所述gps定位数据;

在检测到没有网络信号时,对获取的gps定位数据进行存储。

在本发明的较佳实施中,上述存储介质在掉电重启后,所述在所述扇区循环队列中选择一个作为目标扇区的步骤,包括:

计算相邻所述数据帧的数据编号差值,当在所述差值超过预设值时,选取数据编号较大的数据帧对应的扇区以作为所述目标扇区。

在本发明的较佳实施中,上述向所述目标扇区写入所述待存数据的步骤之前,包括:

检测所述目标扇区是否存储有所述数据;

若该扇区存储有所述数据,删除该扇区中的所述数据。

在本发明的较佳实施中,上述存储介质为norflash芯片,每个所述扇区的存储空间大小为每条所述待存数据大小的整数倍。

在本发明的较佳实施中,上述数据帧的长度为同一预设长度。

就装置而言,本发明的较佳实施例还提供一种数据读写装置,应用于存储介质,所述存储介质包括多个用于存储数据的扇区,多个所述扇区依次排列形成扇区循环队列;所述数据读写装置包括写入模块和读取模块,其中,所述写入模块包括:

获取单元,用于获取待存数据,其中,所述待存数据包括至少一条包括数据编号的数据帧;

第一选择单元,用于在所述扇区循环队列中选择一个作为目标扇区;

写入单元,用于向所述目标扇区写入所述待存数据;

第二选择单元,用于在所述目标扇区被写满后,选择在所述扇区循环队列中所述目标扇区的下一扇区作为新的目标扇区;

所述读取模块包括:

查找读取单元,用于查找已存数据帧中数据编号最小的已存数据帧,从所述数据编号最小的已存数据帧起将所述已存数据帧从所述存储介质中读出;

第一擦除单元,用于在将一个扇区中所有已存数据帧读取完成后,清除该扇区中的存储的数据。

在本发明的较佳实施中,上述待存数据包括gps定位数据,所述获取单元在选择单元从所述扇区循环队列中选择一个作为目标扇区的步骤之前,还用于:

在检测到有网络信号时上传所述gps定位数据;

在检测到没有网络信号时,对获取的gps定位数据进行存储。

在本发明的较佳实施中,上述存储介质在掉电重启后,所述第一选择单元还用于:

计算相邻所述数据帧的数据编号差值,当在所述差值超过预设值时,选取数据编号较大的数据帧对应的扇区以作为所述目标扇区。

在本发明的较佳实施中,上述写入模块还包括第二擦除单元,所述第二擦除单元在所述写入单元向所述目标扇区写入所述待存数据之前,用于:

检测所述目标扇区是否存储有所述数据;

若该扇区存储有所述数据,删除该扇区中的所述数据。

相对于现有技术而言,本发明提供的方法及装置至少具有以下有益效果:本发明提供的数据读写方法及装置,通过将获取的待存数据写入选择的目标扇区中,然后对各个扇区进行循环读写。扇区中的数据帧被读取完后,便清除该扇区中所存储的数据,以为下次写入提供空间。其中,待存数据包括至少一条包括数据编号的数据帧。该方法及装置通过循环写入和读取,提高了各扇区的使用率,有助于延长存储介质的使用寿命。

为使本发明的上述目的、特征和优点能更明显易懂,下文特举本发明较佳实施例,并配合所附附图,作详细说明如下。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍。应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。

图1为本发明较佳实施例提供的服务器与终端设备的交互示意图。

图2为本发明较佳实施例提供的终端设备的方框图。

图3为本发明较佳实施例提供的数据读写方法的流程示意图。

图4为本发明较佳实施例提供的数据读写装置的方框图。

图标:10-终端设备;11-处理单元;12-存储单元;13-通信单元;20-服务器;30-网络;100-数据读写装置;110-写入模块;111-获取单元;112-第一选择单元;113-写入单元;114-第二选择单元;115-第二擦除单元;120-读取模块;121-查找读取单元;122-第一擦除单元。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。

因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。

应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。

下面结合附图,对本发明的一些实施方式作详细说明。在不冲突的情况下,下述的实施例及实施例中的特征可以相互组合。

请参照图1,是本发明较佳实施例提供的服务器20与终端设备10的交互示意图。在本实施例中,服务器20可以与至少一个终端设备10通过网络30建立通信连接,以实现数据交互。其中,终端设备10为具有定位功能的设备,用于获取当前的地理位置信息。该智能终端可以是,但不限于智能手机、车载定位仪等,这里不作具体限定。

所述服务器20可以是,但不限于集群服务器、云服务器、分布式服务器等。所述网络30可以是,但不限于,有线网络或无线网络。优选地,所述网络30为无线网络。其中,所述无线网络可以是,但不限于2g、3g、4g、gprs以及wifi等。

请参照图2,是本发明较佳实施例提供的终端设备10的方框图。在本实施例中,终端设备10可以包括处理单元11、存储单元12、通信单元13以及数据读写装置100。所述处理单元11、存储单元12、通信单元13以及数据读写装置100各个元件之间直接或间接地电性连接,以实现数据的传输或交互。例如,这些元件相互之间可通过一条或多条通讯总线或信号线实现电性连接。

进一步地,终端设备10还可以包括定位单元,该定位单元配合对应定位系统(比如gps定位系统),用于获取该终端设备10当前的实时位置信息。该定位单元可以为定位电路或定位芯片,比如gps定位芯片,这里对定位单元的种类不作具体限定。

在本实施例中,终端设备10的定位单元用于采集定位数据。例如,在车载定位与监控产品中,一般为通过gps实现定位,而gps定位数据都需要发送到对应的监控服务器(可以为上述的服务器20)。由于网络30的信号并非一直稳定,无法实时发送定位数据,而无法实时发送出去的定位数据就需要先写入到本地的存储器,比如写入到norflash芯片。一旦网络30信号稳定,则需要把norflash芯片中保存的定位数据批量读取出来,通过通信单元13重新发送到监控服务器。

进一步地,所述处理单元11可以是一种具有信号的处理能力的集成电路芯片。例如,该处理单元11为处理器,所述处理器可以是,但不限于中央处理器、网络处理器等;还可以是数字信号处理器、专用集成电路、现场可编程门阵列或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。

所述通信单元13用于通过网络30建立终端设备10与服务器20的通信连接,并通过所述网络30收发数据。

所述存储单元12可以是但不限于随机存取存储器,只读存储器,可编程只读存储器,可擦除可编程只读存储器,电可擦除可编程只读存储器等,这里不作具体限定。所述存储单元12还可以包括其他存储介质,用于存储定位数据,该存储介质可以为存储芯片,例如norflash存储芯片。

进一步地,数据读写装置100包括至少一个可以软件或固件(firmware)的形式存储于所述存储单元12中或固化在所述服务器20的操作系统(operatingsystem,os)中的软件功能模块。所述处理单元11用于执行所述存储单元12中存储的可执行模块,例如数据读写装置100所包括的软件功能模块以及计算机程序等。

可以理解的是,图2所述的结构仅为终端设备10的一种结构示意图,所述终端设备10还可以包括比图2中所示更多或更少的组件。图2中所示的各组件可以采用硬件、软件或其组合实现。

请参照图3,是本发明较佳实施例提供的数据读写方法的流程示意图。本发明提供的数据读写方法,应用于存储介质,优选地,该存储介质为norflash芯片。该存储介质包括多个用于存储数据的扇区,多个所述扇区依次排列形成扇区循环队列。该方法可配合上述的终端设备10实现数据的循环读写,以提高各散区的使用率,进而延长存储介质的使用寿命。

下面将对图3所示的数据读写方法的具体流程和步骤进行详细阐述。在本实施例中,数据读写方法可以包括以下步骤:

在向存储介质中写入待存数据时,所述方法可以包括步骤s210,获取待存数据,其中,所述待存数据包括至少一条包括数据编号的数据帧。

在本实施例中,所述待存数据可以为定位单元所采集的定位数据。数据编号可以为连续的正整数,比如由零开始进行编号。处理单元11在接收到执行写入的触发信号时,便开始接收待存数据,以获得定位单元所采集的待存数据。

进一步地,该数据帧还可以包括定位数据类型、数据主体以及校验码。例如,通过不同的标识码来标识该条数据的类型(或格式)。比如,用0x62来表示gpgga格式的定位数据,该定位数据还可以是其他种类的格式,比如,gpgsa、gpgsv等格式,这里不作具体限定。

在本实施例中,数据帧的长度可以为同一固定的预设长度。其预设长度可以根据实际情况进行设置,例如,该定位数据为gpgga数据段,其预设长度可以为128字节,也就是单条gpgga数据段的长度为128字节。其中,4字节可以供标识数据编号,1字节可以供标识数据类型,1字节可以供标识校验码,而剩余字节一般足以存储一条有效的gpgga数据语句。

进一步地,数据编号的范围可根据对应的存储芯片而设置。比如,对于8m字节存储量的spinorflash芯片,其数据编号可以为0到232-1之间。而设置的校验码可以用于在数据读出时进行循环冗余校验(cyclicredundancycheck,crc),以确保数据的正确性。当然,在其他实施方式中,可以不设置校验码。

另外,每个扇区的存储空间大小可以为每条所述待存数据大小的整数倍。基于上述设计,不会出现一条待存数据同时存储在两个散区中,致使在擦除扇区时破环单条数据的完整性,保证了待存数据能严格地以扇区为边界进行存储,提高了所存数据的完整性。

步骤s220,在所述扇区循环队列中选择一个作为目标扇区。

在本实施中,每个扇区可设置对应的序号,比如,对于8m字节存储量的spinorflash芯片,共分为2048个扇区。设置的序号可以为连续的数字,比如,其序号可以依次为0000-2047,而每个扇区可存储32条上述128字节的gpgga定位数据。可理解地,存储介质的线性存储空间被当作一个循环队列,以实现循环读写。

进一步地,选择目标扇区可以包括多种情况。例如,在对空的存储介质写入数据(或者首次对存储介质写入数据),可以随机选择某一序号所对应的扇区进行写入操作,也可以是固定选择某一序号对应的扇区进行写入操作,比如选择0000扇区作为目标扇区,这里对选取的方式不作具体限定。

又例如,若存储介质中已经存储有数据。一般是在存储介质掉电重启后,步骤s220可以包括计算相邻所述数据帧的数据编号差值,当在所述差值超过预设值时,选取数据编号较大的数据帧对应的扇区以作为所述目标扇区,对应的写入方向为数据编号递增的方向。

其预设值可根据数据编号而设置。一般地,数据编号为连续的正整数,则该预设值为1,若该数据编号为其他形式的正等差数列,比如等差为2的数列,2、4、6……,这类编号的预设值便为对应的等差值2,这里对预设值不作具体限定。

在其他实施方式中,也可以选取数据编号较小的数据帧对应的扇区作为目标扇区,对应的写入方向便为数据编号递减的方向。

在本实施例中,所述待存数据可以为gps定位数据。在步骤s22之前,该方法还可以包括在检测到有网络信号时上传所述gps定位数据至服务器20,以形成监控记录;在检测到没有网络信号时,对获取的gps定位数据进行存储。可理解地,在没有网络时,便对待存数据执行读写操作。

步骤s230,向所述目标扇区写入所述待存数据。

在本实施例中,在对目标扇区执行写入操作时,一般为依次对目标扇区的存储空间执行写入。

进一步地,在向目标扇区写入待存数据之间,该方法还可以包括,例如,检测所述目标扇区是否存储有所述数据;若该扇区存储有所述数据,删除该扇区中的所述数据,以为写入数据空出存储空间,便于执行写入动作。

步骤s240,在所述目标扇区被写满后,选择在所述扇区循环队列中所述目标扇区的下一扇区作为新的目标扇区。

在本实施例中,可以按照数据编号递增的方向选择新的目标扇区。若所写满的目标扇区为尾端扇区(比如2047扇区),则可选择首端扇区作为新的目标扇区(比如0000扇区),已达成循环写入的机制。其中,数据编号递增方向与扇区的序号递增方向相同。

在其他实施方式中,还可以以不同于上述的实施方式选择目标扇区,这里不再赘述。

在从所述存储介质中读取已存数据帧时,所述方法可以包括:

步骤s250,查找已存数据帧中数据编号最小的已存数据帧,从所述数据编号最小的已存数据帧起将所述已存数据帧从所述存储介质中读出。

在本实施例中,所读取的数据一般为存储时间最长的数据。若按照数据编号递增的顺序写入,那么需要读取的首个数据帧便为数据编号最小的数据帧。

进一步地,在接收到读取数据帧的触发信号时,便开始执行步骤s250。读取该数据帧的触发信号通常为在网络30状况良好时,处理器所生成的触发信号。另外,通信单元13可将读取的数据帧发送至监控服务器,以通过监控服务器形成监控记录。

步骤s260,在将一个扇区中所有已存数据帧读取完成后,清除该扇区中的存储的数据。

在本实施例中,在读取完一个扇区时,便擦除该扇区所存储的数据,实现循环擦除的机制,可为下次循环写入空出存储空间。

值得说明的是,在存储介质中已经存入有数据时,写入待存数据的步骤和读取已存数据帧的步骤可以并行,而并不限于图3所示的执行顺序。

请参照图4,是本发明较佳实施例提供的数据读写装置100的方框图。本发明的较佳实施例提供一种数据读写装置100,应用于上述的存储介质,可使该存储介质实现对数据的循环读写以及擦除,有助于提升存储介质的使用寿命。其中,所述数据读写装置100可以包括写入模块110和读取模块120。

写入模块110可以包括获取单元111、第一选择单元112、写入单元113以及第二选择单元114。

获取单元111,用于获取待存数据,其中,所述待存数据包括至少一条包括数据编号的数据帧。进一步地,获取单元111还用于根据触发信号,接收带存储数据。具体地,获取单元111可以用于执行图3中所示的步骤s210,其具体操作步骤可参照对步骤s210的详细描述,这里不再赘述。

第一选择单元112,用于在所述扇区循环队列中选择一个作为目标扇区。具体地,第一选择单元112可以用于执行图3中所示的步骤s220,其具体操作步骤可参照对步骤s220的详细描述。

进一步地,存储介质在掉电重启后,所述第一选择单元112还用于计算相邻所述数据帧的数据编号差值,当在所述差值超过预设值时,选取数据序号较大的数据帧对应的扇区以作为所述目标扇区,这里不再赘述。

写入单元113,用于向所述目标扇区写入所述待存数据。具体地,写入单元113可以用于执行图3中所示的步骤s230,其具体操作步骤可参照对步骤s230的详细描述。

第二选择单元114,用于在所述目标扇区被写满后,选择在所述扇区循环队列中所述目标扇区的下一扇区作为新的目标扇区。具体地,第二选择单元114可以用于执行图3中所示的步骤s240,其具体操作步骤可参照对步骤s240的详细描述。

进一步地,写入模块110还可以包括第二擦除单元115,所述第二擦除单元115在所述写入单元113向所述目标扇区写入所述待存数据之前,用于检测所述目标扇区是否存储有所述数据;若该扇区存储有所述数据,删除该扇区中的所述数据。

读取模块120可以包括查找读取单元121以及第一擦除单元122。

查找读取单元121,用于查找已存数据帧中数据编号最小的已存数据帧,从所述数据编号最小的已存数据帧起将所述已存数据帧从所述存储介质中读出。具体地,查找读取单元121可以用于执行图3中所示的步骤s250,其具体操作步骤可参照对步骤s250的详细描述。

第一擦除单元122,用于在将一个扇区中所有已存数据帧读取完成后,清除该扇区中的存储的数据。具体地,第一擦除单元122可以用于执行图3中所示的步骤s260,其具体操作步骤可参照对步骤s260的详细描述。

综上所述,本本发明提供一种数据读写方法及装置。该方法及装置通过将获取的待存数据写入选择的目标扇区中,然后对各个扇区进行循环读写。扇区中的数据帧被读取完后,便清除该扇区中所存储的数据,以为下次写入提供空间。其中,待存数据包括至少一条包括数据编号的数据帧。该方法及装置通过循环写入和读取,提高了各扇区的使用率,有助于延长存储介质的使用寿命。

以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

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