一种基于flash的小型数据备份及查询方法

文档序号:6364396阅读:157来源:国知局
专利名称:一种基于flash的小型数据备份及查询方法
技术领域
本发明属于数据存储技术领域,尤其涉及一种基于FLASH的小型数据备份及查询方法。
背景技术
数据备份在单片机系统下有重要的意义,数据备份的方式也有多种,有SD卡存储的,有EEROM的,有FLASH存储的。FLASH由于其功能灵活丰富,使用方便,而被单片机系统在数据备份时广泛采用。Flash存储芯片是通过SPI总线方式与单片机连接,具体的连接如图I所示,单片机把采集到的最新数据按照算法规定的格式和顺序,放在指定的缓存里面。新数据覆盖上个周期的数据,根据时序信号,把缓存里的数据通过SPI总线写入flash。一般FLASH ROM由多个扇区组成,一个扇区包含多个页面,页面由若干字节构成。由于制作エ艺的原因,FLASH ROM可以一次写入一个或多个字节,但擦除时必须要以扇区或页面为操作 単位,或整个芯片同时擦除,且操作次数是有限的,所以应用时一般要实现均匀磨损,平均使用各个扇区以达到最大工作寿命。针对管理设备,处理器的需要处理其他的任务,如数据的采集、处理,因此,数据的备份的写入要简单,查找要方便,在小型数据备份应用中还要求代码空间占用小,占用CPU资源比较少,现有的基于FLASH的小型数据备份方法,需使用多重循环在整个芯片范围内查找存储位置和查询点,使得数据存储和查询不够简洁快速,无法克服单片机资源有限,处理速度慢的瓶颈。

发明内容
本发明的目的是提供一种基于FLASH的小型数据备份及查询方法,该方法针对字符串长度和备份周期固定的小型数据,能够使得数据存储和查询都简洁快速,有效克服了单片机资源有限,处理速度慢的瓶颈。本发明的技术方案是为实现上述目的,本发明提供一种基于FLASH的小型数据备份方法,该方法的步骤如下
(1).将单片机采集到的数据和与之相对应的时间放入其内存中,在单片机数据区建立两个FLASH缓存区,ー个为数据的写入读取缓存区,另ー个是时间和日期的写入读出缓存区,把最新的数据和最新的时间放入缓存区,新数据覆盖上个周期的数据;
(2).将FLASH芯片分为H个存储扇区,每个存储扇区等分为F个存储页面;
(3).建立数据的备份时间和FLASH存储区位置之间的映射关系,根据FLASH的扇区数H、每个扇区的页面数F、每个页面的字节数、单条备份数据固定的字节数和备份周期,计算出单个页面的存储数据条数、单个扇区存储数据条数、单个页面存储时间、单个扇区存储时间和整个FLASH芯片的存储时间;
(4).把第一个备份的数据备份到FLASH芯片第一个存储扇区的第一个存储页面的第ー个位置,并在该存储页面的最后位置写入首次备份的时间标签,随着时间的推移,存储芯片数据备份位置也依次向前推进,第一个存储页面达到其设定的存储数据条数后自动转换到下ー个存储页,依次类推,当第一个储扇区存储满后,自动转向第二个扇区,待整个扇区存储满后,再从第一个扇区开始新的ー个周期的数据备份;
(5).把缓存区内的数据写入FLASH芯片,在备份数据的时刻,每个扇区在开始备份前需要做擦除操作,每开始ー个新的页面,都要在该存储页面最后位置处写入该页面的首次备份时间标签。所述的步骤(3)中计算单个页面的存储数据条数时需要留一到两条数据空间做余量。所述的备份方法对于没有运行的单片机系统的间断运行时间段,FLASH芯片存储区是空白的。为实现上述目的,本发明提供一种基于FLASH的小型数据查询方法,该查询方法是在上述备份方法的基础上实现的,该查询方法的步骤如下
(1).将单片机采集到的数据和与之相对应的时间放入其内存中,在单片机数据区建立两个FLASH缓存区,ー个为数据的写入读取缓存区,另ー个是时间和日期的写入读出缓存区,把最新的数据和最新的时间放入缓存区,新数据覆盖上个周期的数据;
(2).将FLASH芯片分为H个存储扇区,每个存储扇区等分为F个存储页面;
(3).建立数据的备份时间和FLASH存储区位置之间的映射关系,根据FLASH的扇区数H、每个扇区的页面数F、每个页面的字节数、单条备份数据固定的字节数和备份周期,计算出单个页面的存储数据条数、单个扇区存储数据条数、单个页面存储时间、单个扇区存储时间和整个FLASH芯片的存储时间;
(4).把第一个备份的数据备份到FLASH芯片第一个存储扇区的第一个存储页面的第ー个位置,并在该存储页面的最后位置写入首次备份的时间标签,随着时间的推移,存储芯片数据备份位置也依次向前推进,第一个存储页面达到其设定的存储数据条数后自动转换到下ー个存储页,依次类推,当第一个储扇区存储满后,自动转向第二个扇区,待整个扇区存储满后,再从第一个扇区开始新的ー个周期的数据备份;
(5).把缓存区内的数据写入FLASH芯片,在备份数据的时刻,每个扇区在开始备份前需要做擦除操作,每开始ー个新的页面,都要在该存储页面最后位置处写入该页面的首次备份时间标签;
(6).在接收到历史数据命令查询时,在单片机数据区建立历史数据读取缓存,将查询的历史数据时间和历史数据数量放入历史数据读取缓存中;
(7).判断该查询的历史数据时间是否在整个FLASH芯片备份数据的存储数间内,如果超过最长时间,直接返回查询时间超出查询范围,如果没有超出,计算出查询的历史数据时间的开始位置,读出该位置所处存储页的时间标签;
(8).判断该时间标签与查询的历史数据时间是否相同,如果相同,开始读取数据到输出缓存中,如果不同,按照数据存储位置与时间的映射关系,找到该查询时间所对应的存储位置,读取该存储位置的数据到输出缓存中,把输出缓存中的数据带上时间标签后输出;
(9).读出一条数据后,检查数据指针是否到达页面结束位置,如果到达就转向下ー个页面,更换新的页面时还要判断是否达到扇区结束位置,如果达到就转向下ー个扇区,直至数据读取结束。所述的步骤(3)中计算单个页面的存储数据条数时需要留一到两条数据空间做余量。所述的查询方法对于没有运行的单片机系统的间断运行时间段,FLASH芯片存储区是空白的,对于数据备份的中断时间段内,FLASH是空白的,数据的输出以XX代替。本发明的有益效果是通过利用存储数据的时间点和存储位置的影射关系,在每个数据存储页开始写数之前,写入ー个时间标签。数据存储时以扇区为操作単位,每个扇区都有相似的存储结构,通过扇区号和页面时间标签鉴别前后顺序。当一个扇区存满数据时,查找最早使用过的扇区,清除该扇区,将之作为当前工作扇区,如此可实现均匀磨损,使得数据存储和查询都简洁快速,有效克服了单片机资源有限,处理速度慢的瓶颈。


图I是数据备份硬件结构框图
图2是时间点与存储位置映射关系 图3是数据备份的流程 图4是历史数据读取流程图。
具体实施例方式下面结合附图对本发明的具体实施方式
做进ー步说明。本发明的一种基于FLASH的小型数据备份方法的实施例
一种基于FLASH的小型数据备份方法,该方法实现的的硬件结构框图如图I所示,包括单片机和FLASH存储芯片,FLASH存储芯片是通过SPI总线方式与单片机连接。在某综合气象数据采集器中,气象数据的备份频率为一分钟ー组,一组数据的内容有38个字节,单片机采用C8051F020,数据备份的芯片采用M25P16,FLASH存储结构,2M存储空间,32个扇区,ー个扇区有256个存储页,一个页面可以存储256字节。该气象数据基于FLASH芯片的备份方法步骤如下
1.将单片机C8051F020采集到的气象数据和与之相对应的时间放入单片机内存中,在单片机C8051F020数据区建立两个FLASH缓存区,ー个为数据的写入读取缓存区,另ー个是时间和日期的写入读出缓存区,把最新的数据和最新的时间放入缓存区,新数据覆盖上个周期的数据;
2.将FLASH芯片M25P16分为32个存储扇区,每个存储扇区等分为256个存储页面;
3.建立数据的备份时间和FLASH芯片M25P16存储区位置之间的映射关系,根据FLASH的扇区数32、每个扇区的页面数256、每个页面的字节数256、单条备份数据固定的字节数38和备份周期I分钟,单个页面可以备份6分钟数据,一个扇区可备份一天的数据,保留部分余量,整个芯片可备份ー个月的完整数据,时间日期和芯片存储区位置的映射关系,扇区(sector)=日(day) -1,存储页(page)=小时(hour) *10+ 分钟(min) /6,偏移量(offset)=姆组数据字节38*分钟(min) %6 ;
4.把第一个备份的数据备份到FLASH芯片第一个存储扇区的第一个存储页面的第一个位置,在该存储页面的最后10个字节处写入首次备份的时间,随着时间的推移,存储芯片数据备份位置也依次向前推进,第一个存储页面备份6分钟的存储数据后自动转换到下ー个存储页,依次类推,当第一个储扇区存满I天的数据后,自动转向第二个扇区,待整个扇区存储满后,再从第一个扇区开始新的ー个周期的数据备份;
5.把缓存区内的数据写入FLASH芯片,在备份数据的时刻,每个扇区在开始备份前需要做擦除操作,首先判断该扇区是否为新的扇区,每开始ー个新的页面,首先要在该存储页面最后10字节位置处写入该页面的首次备份时间标签;
对于没有运行的单片机系统的间断运行时间段,FLASH芯片存储区是空白的。该备份方法中FLASH芯片也可以采用整个页面的擦除方式,此时需要每个页面在开始备份前做擦除操作,采用这种方式可以使FLASH芯片内备份的数据保存的时间更长。本发明的一种基于FLASH的小型数据查询方法的实施例
其硬件结构框图如图I所示,包括单片机和FLASH存储芯片,FLASH存储芯片是通过SPI总线方式与单片机连接。在某综合气象数据采集器中,气象数据的备份频率为一分钟ー组,一组数据的内容有38个字节,单片机采用C8051F020,数据备份的芯片采用M25P16, FLASH存储结构,2M存储空间,32个扇区,ー个扇区有256个存储页,一个页面可以存储256字节。首先将气象数据按照上述实施例中的备份方法备份到FLASH芯片中,其具体的流程如图3所示,在这里就不再重复描述,下面对以此备份方法为基础的查询方法进行说明,该查询方法包括如下步骤
1.当系统接收到历史数据查询命令时,在单片机数据区建立历史数据读取缓存,将查询的历史数据时间和历史数据数量放入历史数据读取缓存中;
2.判断该查询的历史数据时间是否在最近一个月之内的时间,如果不是,直接返回查询时间超出查询范围,如果没有超出,计算出查询的历史数据时间的开始位置,读出该位置所处存储页的时间标签;
3.判断该时间标签与查询的历史数据时间是否相同,如果相同,开始读取数据到输出缓存中,如果不同,按照数据存储位置与时间的映射关系,找到该查询时间所对应的存储位置,读取该存储位置的数据到输出缓存中,把输出缓存中的数据带上时间标签后输出;
4.读出一条数据后,检查数据指针是否到达页面结束位置,如果到达就转向下ー个页面,更换新的页面时还要判断是否达到扇区结束位置,如果达到就转向下ー个扇区,直至数据读取结束。所述的查询方法对于没有运行的单片机系统的间断运行时间段,FLASH芯片存储区是空白的,对于数据备份的中断时间段内,FLASH是空白的,数据的输出以XX代替。该基于FLASH的小型数据备份及查询方法在某综合气象数据采集器中得到了成功使用,从近百台采集器连续运两年的情形来看,数据的存储效果良好,数据的读取和存储方便有效。此外,最近把该算法成功移植到某能见度仪嵌入式软件中,备份能见度数据,数据分为三块,第一、采样数据及其相关信号值,存储频率为15秒一次;第二、瞬时能见度值及其相关信号,存储频率为一分钟一次;第三、整点能见度值及整点内的极值,存储频率为ー小时一次,从目前的运行效果来看,运行正常。
权利要求
1.一种基于FLASH的小型数据备份方法,其特征在于该方法的步骤如下 (1).将单片机采集到的数据和与之相对应的时间放入其内存中,在单片机数据区建立两个FLASH缓存区,一个为数据的写入读取缓存区,另一个是时间和日期的写入读出缓存区,把最新的数据和最新的时间放入缓存区,新数据覆盖上个周期的数据; (2).将FLASH芯片分为H个存储扇区,每个存储扇区等分为F个存储页面; (3).建立数据的备份时间和FLASH存储区位置之间的映射关系,根据FLASH的扇区数H、每个扇区的页面数F、每个页面的字节数、单条备份数据固定的字节数和备份周期,计算出单个页面的存储数据条数、单个扇区存储数据条数、单个页面存储时间、单个扇区存储时间和整个FLASH芯片的存储时间; (4).把第一个备份的数据备份到FLASH芯片第一个存储扇区的第一个存储页面的第一个位置,并在该存储页面的最后位置写入首次备份的时间标签,随着时间的推移,存储芯片数据备份位置也依次向前推进,第一个存储页面达到其设定的存储数据条数后自动转换到下一个存储页,依次类推,当第一个储扇区存储满后,自动转向第二个扇区,待整个扇区存储满后,再从第一个扇区开始新的一个周期的数据备份; (5).把缓存区内的数据写入FLASH芯片,在备份数据的时刻,每个扇区在开始备份前需要做擦除操作,每开始一个新的页面,都要在该存储页面最后位置处写入该页面的首次备份时间标签。
2.根据权利要求I所述的备份方法,其特征在于所述的步骤(3)中计算单个页面的存储数据条数时需要留一到两条数据空间做余量。
3.根据权利要求I或2所述的备份方法,其特征在于所述的备份方法对于没有运行的单片机系统的间断运行时间段,FLASH芯片存储区是空白的。
4.一种基于FLASH的小型数据查询方法,其特征在于所该查询方法的步骤如下 (1).将单片机采集到的数据和与之相对应的时间放入其内存中,在单片机数据区建立两个FLASH缓存区,一个为数据的写入读取缓存区,另一个是时间和日期的写入读出缓存区,把最新的数据和最新的时间放入缓存区,新数据覆盖上个周期的数据; (2).将FLASH芯片分为H个存储扇区,每个存储扇区等分为F个存储页面; (3).建立数据的备份时间和FLASH存储区位置之间的映射关系,根据FLASH的扇区数H、每个扇区的页面数F、每个页面的字节数、单条备份数据固定的字节数和备份周期,计算出单个页面的存储数据条数、单个扇区存储数据条数、单个页面存储时间、单个扇区存储时间和整个FLASH芯片的存储时间; (4).把第一个备份的数据备份到FLASH芯片第一个存储扇区的第一个存储页面的第一个位置,并在该存储页面的最后位置写入首次备份的时间标签,随着时间的推移,存储芯片数据备份位置也依次向前推进,第一个存储页面达到其设定的存储数据条数后自动转换到下一个存储页,依次类推,当第一个储扇区存储满后,自动转向第二个扇区,待整个扇区存储满后,再从第一个扇区开始新的一个周期的数据备份; (5).把缓存区内的数据写入FLASH芯片,在备份数据的时刻,每个扇区在开始备份前需要做擦除操作,每开始一个新的页面,都要在该存储页面最后位置处写入该页面的首次备份时间标签; (6).在接收到历史数据命令查询时,在单片机数据区建立历史数据读取缓存,将查询的历史数据时间和历史数据数量放入历史数据读取缓存中; (7).判断该查询的历史数据时间是否在整个FLASH芯片备份数据的存储数间内,如果超过最长时间,直接返回查询时间超出查询范围,如果没有超出,计算出查询的历史数据时间的开始位置,读出该位置所处存储页的时间标签; (8).判断该时间标签与查询的历史数据时间是否相同,如果相同,开始读取数据到输出缓存中,如果不同,按照数据存储位置与时间的映射关系,找到该查询时间所对应的存储位置,读取该存储位置的数据到输出缓存中,把输出缓存中的数据带上时间标签后输出; (9).读出一条数据后,检查数据指针是否到达页面结束位置,如果到达就转向下一个页面,更换新的页面时还要判断是否达到扇区结束位置,如果达到就转向下一个扇区,直至数据读取结束。
5.根据权利要求4所述的基于FLASH的小型数据查询方法,其特征在于所述的步骤(3)中计算单个页面的存储数据条数时需要留一到两条数据空间做余量。
6.根据权利要求4或5所述的基于FLASH的小型数据查询方法,其特征在于所述的查询方法对于没有运行的单片机系统的间断运行时间段,FLASH芯片存储区是空白的,对于数据备份的中断时间段内,FLASH是空白的,数据的输出以XX代替。
全文摘要
本发明涉及一种基于FLASH的小型数据的备份及查询方法,该方法针对字符串长度和备份周期固定的小型数据,通过建立备份数据的时间日期和FLASH芯片存储区位置的影射关系,不需使用多重循环在整个芯片范围内查找存储位置和查询点,只需在每个数据存储页开始写数之前,写入一个时间标签。数据存储时以扇区为操作单位,通过扇区号和页面时间标签鉴别前后顺序。当一个扇区存满数据时,查找最早使用过的扇区,清除该扇区,将之作为当前工作扇区,如此可实现均匀磨损。使得数据存储和查询都简洁快速,有效克服了单片机资源有限,处理速度慢的瓶颈。
文档编号G06F17/30GK102819468SQ20121002741
公开日2012年12月12日 申请日期2012年2月8日 优先权日2011年11月30日
发明者周锋, 魏国栓, 王国新 申请人:凯迈(洛阳)环测有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1