CN114328280A - 一种基于Flash的日志存取方法、装置、存储介质及终端 - Google Patents

一种基于Flash的日志存取方法、装置、存储介质及终端 Download PDF

Info

Publication number
CN114328280A
CN114328280A CN202111425600.9A CN202111425600A CN114328280A CN 114328280 A CN114328280 A CN 114328280A CN 202111425600 A CN202111425600 A CN 202111425600A CN 114328280 A CN114328280 A CN 114328280A
Authority
CN
China
Prior art keywords
log
time
target
sector
storage address
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202111425600.9A
Other languages
English (en)
Inventor
陈志华
丁渊明
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Goldcard Smart Group Co Ltd
Original Assignee
Goldcard Smart Group Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Goldcard Smart Group Co Ltd filed Critical Goldcard Smart Group Co Ltd
Priority to CN202111425600.9A priority Critical patent/CN114328280A/zh
Publication of CN114328280A publication Critical patent/CN114328280A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

本发明公开了一种基于Flash的日志存取方法、装置、存储介质及终端,方法包括:获取系统产生的定时日志;日志包括日志时间、日志索引和目标日志记录内容;确定时间换算单位,基于时间换算单位将日志时间转换后生成总时长;根据预设周期与总时长计算目标日志记录内容所在的目标Flash存储地址;当目标Flash存储地址所处的目标扇区中有数据且该存储地址不属于目标扇区的起始地址时,将目标扇区对应的下一个扇区确定为备份区,并基于备份区将目标日志记录内容写入目标Flash存储地址,擦除备份区的数据。本申请能解决定时日志存储在Flash时,因时间异常而造成的日志大面积被擦除的事故,可降低备份区在同一地址被多次擦写而损坏的概率,进而减少单独开辟多备份区造成的资源浪费。

Description

一种基于Flash的日志存取方法、装置、存储介质及终端
技术领域
本发明涉及计算机技术领域,特别涉及一种基于Flash的日志存取方法、装置、存储介质及终端。
背景技术
随着单片机行业的快速发展,使得越来越多设备更智能,对单片机的要求也越来越高,大部分设备具有存储设备运行日志的功能,用来保存运行状态、环境信息、故障信息、配置信息、用户操作信息等,日志记录一般比较长,占用存储空间较大。
在现有技术中,在进行日志存储时,通过日志索引将日志依次存放于执行的一段Flash连续空间,当日志存满后进行全部擦除然后再进行写入。需要读取日志时,通过索引找到日志地址进行依次读取,或者通过二分法等算法查找所有日志中指定时间的日志信息。
然而由于Flash有读写速度慢,写入次数有限,无法局部修改的问题,因此在根据索引存储定时日志时,如果将当前时间修改为历史时间时,则需要将修改后的历史时间之后的日志删除,且需要将历史时间所在扇区的全部日志先读取,然后再局部写入备份区,再写入指定的扇区,如果时间修改偏差较大,则可能连续删除多个扇区,耗时较长。如果因为设备原因造成频繁校时,会导致Flash因多次写入导致备份区损坏。
同时按照索引存储的方法,会给查询日志造成很大的麻烦,因为无法知道所用对应的时间,因此只能根据索引进行查询,需要查询指定时间的日志时,就需要一条条日志查看时间,然后将满足条件的日志返回,而日志的数量往往很大,因此这样的方法不仅耗时,效率低,而且容易导致系统崩溃。
发明内容
本申请实施例提供了一种基于Flash的日志存取方法、装置、存储介质及终端。为了对披露的实施例的一些方面有一个基本的理解,下面给出了简单的概括。该概括部分不是泛泛评述,也不是要确定关键/重要组成元素或描绘这些实施例的保护范围。其唯一目的是用简单的形式呈现一些概念,以此作为后面的详细说明的序言。
第一方面,本申请实施例提供了一种基于Flash的日志存取方法,方法包括:
按照预设周期实时获取系统产生的定时日志;其中,定时日志包括日志时间、日志索引和目标日志记录内容;
确定时间换算单位,并基于时间换算单位将日志时间进行转换后生成总时长;
根据预设周期与总时长计算目标日志记录内容所在的目标Flash存储地址;
当目标Flash存储地址所处的目标扇区中有数据且目标Flash存储地址不属于目标扇区的起始地址时,将目标扇区对应的下一个扇区确定为备份区,并基于备份区将目标日志记录内容写入目标Flash存储地址,以及擦除备份区的数据。
可选的,时间换算单位为秒;
基于时间换算单位将日志时间进行转换后生成总时长,包括:
确定日志时间的当前年份起始时刻;
计算日志时间与当前年份起始时刻之间的第一时间秒数值;
计算所述当前年份起始时刻上一历史年份距离最初年份时刻所经过的第二时间秒数值;或者,
加载年份时间表,并从所述年份时间表中获取所述当前年份起始时刻上一历史年份距离最初年份时刻所经过的第二时间秒数值;
将第一时间秒数值与第二时间秒数值做和后生成总时长。
可选的,根据预设周期与总时长计算目标日志记录内容所在的目标Flash存储地址,包括:
将预设周期转换为第三时间秒数值;
确定预设周期内可获取的最大日志条数;
根据总时长、第三时间秒数值以及最大日志条数计算存储日志索引;
计算Flash中每个扇区的可存日志总量;
根据存储日志索引和可存日志总量计算存储日志索引所在扇区位移数和索引位置;
根据存储日志索引所在扇区位移数和索引位置计算目标日志记录内容所在的目标Flash存储地址。
可选的,根据总时长、第三时间秒数值以及最大日志条数计算存储日志索引,包括:
计算总时长与第三时间秒数值的目标比值;
计算目标比值与最大日志条数的余数;
将余数确定为存储日志索引;
其中,存储日志索引的计算公式为:Ir=(S/C)%M;S为定时日志中日志时间换算后的总时长,C为预设周期换算后的时间秒数值,M为扇区可存的最大日志条数。
可选的,所述方法还包括:
当目标Flash存储地址所处的目标扇区中无数据时,将目标日志记录内容写入目标Flash存储地址;
或者,
当目标Flash存储地址所处的目标扇区中有数据且目标Flash存储地址属于目标扇区的起始地址时,擦除目标扇区中的数据,并将目标日志记录内容写入目标Flash存储地址。
可选的,方法还包括:
当接收到日志查询指令时,获取查询开始时间与结束时间;
确定日志查询时间范围;
当开始时间与结束时间位于日志查询时间范围时,根据查询开始时间与结束时间计算查询开始位置与结束位置;
根据查询开始位置与结束位置逐一读取日志进行返回。
可选的,方法还包括:
获取待查询日志的起始索引值;
当开始时间与结束时间位于日志查询时间范围时,根据待查询日志的起始索引值逐一读取日志进行返回。
第二方面,本申请实施例提供了一种基于Flash的日志存取装置,装置包括:
定时日志获取模块,用于按照预设周期实时获取系统产生的定时日志;其中,定时日志包括日志时间、日志索引和目标日志记录内容;
总时长生成模块,用于确定时间换算单位,并基于时间换算单位将日志时间进行转换后生成总时长;
Flash存储地址计算模块,用于根据预设周期与总时长计算目标日志记录内容所在的目标Flash存储地址;
目标日志记录内容写入模块,用于当目标Flash存储地址所处的目标扇区中有数据且目标Flash存储地址不属于目标扇区的起始地址时,将目标扇区对应的下一个扇区确定为备份区,并基于备份区将目标日志记录内容写入目标Flash存储地址,以及擦除备份区的数据。
第三方面,本申请实施例提供一种计算机存储介质,计算机存储介质存储有多条指令,指令适于由处理器加载并执行上述的方法步骤。
第四方面,本申请实施例提供一种终端,可包括:处理器和存储器;其中,存储器存储有计算机程序,计算机程序适于由处理器加载并执行上述的方法步骤。
本申请实施例提供的技术方案可以包括以下有益效果:
在本申请实施例中,基于Flash的日志存取装置首先按照预设周期实时获取系统产生的定时日志;其中,定时日志包括日志时间、日志索引和目标日志记录内容,然后确定时间换算单位,并基于时间换算单位将日志时间进行转换后生成总时长,再根据预设周期与总时长计算目标日志记录内容所在的目标Flash存储地址,最后当目标Flash存储地址所处的目标扇区中有数据且目标Flash存储地址不属于目标扇区的起始地址时,将目标扇区对应的下一个扇区确定为备份区,并基于备份区将目标日志记录内容写入目标Flash存储地址,以及擦除备份区的数据。本申请基于日志时间计算目标日志记录内容所在的目标Flash存储地址,由于时间的连续性,可减少因为时间修改而大面积日志擦写的事故,同时减少因为时间修改而擦除Flash的次数。本申请采用备份区,实现擦写冗余,降低因为在同一区域备份而造成备份区写坏的概率,减少单独开辟多备份区造成的资源的浪费。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本发明。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。
图1是本申请实施例提供的一种基于Flash的日志存取方法的流程示意图;
图2是本申请实施例提供的一种定时日志的时间戳换算过程示意框图;
图3是本申请实施例提供的一种日志存储内容保存的地址计算过程示意框图;
图4是本申请实施例提供的一种定时日志存储过程的过程示意框图;
图5是本申请实施例提供的一种基于Flash的日志存取过程的流程示意图;
图6是本申请实施例提供的另一种基于Flash的日志存取方法的流程示意图;
图7是本申请实施例提供的一种从Flash中读取定时日志的流程示意图;
图8是本申请实施例提供的一种基于Flash的日志存取装置的结构示意图;
图9是本申请实施例提供的一种终端的结构示意图。
具体实施方式
以下描述和附图充分地示出本发明的具体实施方案,以使本领域的技术人员能够实践它们。
应当明确,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是如所附权利要求书中所详述的、本发明的一些方面相一致的装置和方法的例子。
在本发明的描述中,需要理解的是,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。此外,在本发明的描述中,除非另有说明,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
本申请提供了一种基于Flash的日志存取方法、装置、存储介质及终端,以解决上述相关技术问题中存在的问题。本申请提供的技术方案中,本申请基于日志时间计算目标日志记录内容所在的目标Flash存储地址,由于时间的连续性,可减少因为时间修改而大面积日志擦写的事故,同时减少因为时间修改而擦除Flash的次数,以及节约查找目标日志记录内容所在位置需要花费的时间。本申请采用备份区,实现擦写冗余,降低因为在同一区域备份而造成备份区写坏的概率,减少单独开辟多备份区造成的资源的浪费,下面采用示例性的实施例进行详细说明。
下面将结合附图1-附图7,对本申请实施例提供的基于Flash的日志存取方法进行详细介绍。该方法可依赖于计算机程序实现,可运行于基于冯诺依曼体系的基于Flash的日志存取装置上。该计算机程序可集成在应用中,也可作为独立的工具类应用运行。
请参见图1,为本申请实施例提供了一种基于Flash的日志存取方法的流程示意图。如图1所示,本申请实施例的方法可以包括以下步骤:
S101,按照预设周期实时获取系统产生的定时日志;
其中,定时日志包括日志时间、日志索引和目标日志记录内容;目标日志记录内容可以是运行状态、环境信息、故障信息、配置信息、用户操作信息等。
通常,预设周期是预先设定的日志获取间隔,可以是5分钟获取一次,也可以1分钟获取一次,该周期的具体时间可根据实际场景自行设定。此处不做限定。在嵌入式开发中,经常需要在单片机中存储数据,并且希望这些数据在单片机掉电时不丢失。目前,通常利用单片机外置闪存Flash或者内置Flash进行数据存储。如果不考虑成本,可在EEPROM上使用本方案,读写更快,寿命更长,还不用使用备份区,但是造价昂贵,内存小。
在一种可能的实现方式中,在按照预设周期实时获取系统产生的定时日志时,首先当接收到启动器启动指令时,获取预先设定的时间周期,再根据预先设定的时间周期对定时器设定倒计时长,然后将定时器进行倒计时,当倒计时结束后,获取系统产生的定时日志,依次循环不断获取。
S102,确定时间换算单位,并基于时间换算单位将日志时间进行转换后生成总时长;
其中,时间换算单位可以是时分秒,也可以是其他时间作为存储地址换算单位,比如日,月,天,年,这样局限性更大。
在一种可能的实现方式中,当确定的时间换算单位是秒时,以秒进行转换时,首先确定日志时间的当前年份起始时刻,再计算日志时间与当前年份起始时刻之间的第一时间秒数值,然后计算当前年份起始时刻上一历史年份距离最初年份时刻所经过的第二时间秒数值,最后将第一时间秒数值与第二时间秒数值做和后生成总时长。
进一步地,或者加载年份时间表,并从所述年份时间表中获取所述当前年份起始时刻上一历史年份距离最初年份时刻所经过的第二时间秒数值,例如图2所示,每条定时日志都带有一个唯一的时间戳,时间戳转成秒计数器的方法,是将时间从计算机默认的起始时刻01年01月01日0时0分0秒开始,到当前时间戳所走的秒数,按照闰年366天,平年365天,每天24小时,每小时60分,每分钟60秒进行计算,算出到当前时间总秒数S。该过程需要先算出当前时间到当前年起始时刻开始(1月1日0时0分1秒)经历的秒数,再加(当前年份-1)年距离计算机默认起始时刻总共经过的时间秒数。如果存储器的空间足够,可以将典型的每年初之前经过的时间秒写入表格,计算时直接提取,可加快计算速度,比如到2021年1月1日0时0分0秒为1609430400秒,到2020年1月1日0时0分0秒为1577808000秒。
需要说明的是,使用秒作为存储地址换算单位,拓展性强,可用于各种时间长度的定时日志存储。
S103,根据预设周期与总时长计算目标日志记录内容所在的目标Flash存储地址;
在本申请实施例中,在计算目标日志记录内容所在的目标Flash存储地址时,首先将预设周期转换为第三时间秒数值,再确定预设周期内可获取的最大日志条数,然后根据总时长、第三时间秒数值以及最大日志条数计算存储日志索引,再计算Flash中每个扇区的可存日志总量,其次根据存储日志索引和可存日志总量计算存储日志索引所在扇区位移数和索引位置,最后根据存储日志索引所在扇区位移数和索引位置计算目标日志记录内容所在的目标Flash存储地址。
具体的,在根据总时长、第三时间秒数值以及最大日志条数计算存储日志索引时,首先计算总时长与第三时间秒数值的目标比值,然后计算目标比值与最大日志条数的余数,最后将余数确定为存储日志索引。其中,存储日志索引的计算公式为:
Figure BDA0003378266360000081
S为定时日志中日志时间换算后的总时长,C为预设周期换算后的时间秒数值,M为扇区可存的最大日志条数,%为取余符合。
例如图3所示,图3是本申请提供的一种目标Flash存储地址转换流程框图,得到定时日志的日志时间的总秒数后,需要将总秒数转换成存储在Flash的地址,首先将获取定时日志的预设周期转成秒数C,然后计算出总秒数对应的存储日志索引Ir=(S/C)%M(循环记录定时日志最大条数M),因为Flash的最小擦除单位为扇区,一个扇区为4096个字节,因此为了存储方便,日志不跨扇区存储,减少日志修改扇区擦除次数,Flash每扇区存储的日志数量Fc=4096/L(单条日志长度),当前存储日志索引Ir所在扇区位移数为:Fs=(Ir-1)/Fc+1,所在当前扇区索引位置Fi=(Ir-1)%Fc,因此结合上述参数可计算出当前日志所在Flash存储地址D=Fc*4096+Fi*L+Ds(定时日志地址存储开始地址)。
需要说明的是,日志单条长度小于扇区长度4096byte。日志开始地址在扇区开始位置,否则需要增加开始位置偏移量计算。
进一步地,在得到当前日志所在Flash存储地址后,可根据当前日志所在Flash存储地址将目标日志记录内容写入Flash相应位置。
S104,当目标Flash存储地址所处的目标扇区中有数据且目标Flash存储地址不属于目标扇区的起始地址时,将目标扇区对应的下一个扇区确定为备份区,并基于备份区将目标日志记录内容写入目标Flash存储地址,以及擦除备份区的数据。
在一种可能的实现方式中,当目标Flash存储地址所处的目标扇区中无数据时,将目标日志记录内容直接写入目标Flash存储地址。
在另一种可能的实现方式中,当目标Flash存储地址所处的目标扇区中有数据且目标Flash存储地址属于目标扇区的起始地址时,擦除目标扇区中的数据,并将目标日志记录内容写入目标Flash存储地址。
在另一种可能的实现方式中,当目标Flash存储地址所处的目标扇区中有数据且目标Flash存储地址不属于目标扇区的起始地址时,将目标扇区对应的下一个扇区确定为备份区,并基于备份区将目标日志记录内容写入目标Flash存储地址,以及擦除备份区的数据。
具体的,基于备份区将目标日志记录内容写入目标Flash存储地址时,首先将目标扇区之后的扇区内容删除,再将目标扇区的下一个扇区确定为备份区,然后将目标扇区起始位置至目标日志内容之间的数据写入到备份区后,删除目标扇区的内容,再将写入备份区的数据复制回目标扇区,完成后删除备份区数据。
例如图4所示,图4是本申请提供的一种定时日志存储流程示意框图,在根据目标Flash存储地址存储数据时,先判断目标Flash存储地址是否有数据,如果没有数据,说明可以写入,直接将数据写入目标位置,如果有数据,则需要判断目标Flash存储地址是否是Flash扇区的开始位置,如果在扇区的开始位置,表示该扇区可以以后的数据都属于旧数据或者未来数据,可以直接擦除,擦除后将数据写入该扇区开始位置,若该目标Flash存储地址不属于扇区的开始位置,则需要备份该位置之前的数据,因为数据属于最近的数据,不能清除,因此使用下个扇区作为备份区,因为下个扇区的数据属于最早的记录遗留的数据,可以删除,用于备份该扇区数据。
进一步地,基于备份区将目标日志记录内容写入目标Flash存储地址时,首先擦除目标扇区之后的扇区的内容,然后将该目标扇区中目标Flash存储地址位置之前的数据读取后写入下个扇区,接着擦除该目标扇区,然后将下个扇区的数据读取后写入该目标扇区,再将日志数据写入指定位置,并擦除下个扇区数据,防止下次读取异常,完成数据备份和修改。
例如图5所示,图5是本申请提供的一种基于Flash的日志存取过程的过程示意框图,先由计算机产生定时日志,日志中包含日志索引、日志时间、和目标日志记录内容,再将日志时间戳转成时间秒的数值,然后将秒数值根据当前定时存储的间隔换算成物理地址,然后根据地址将日志存储在Flash中。
在本申请实施例中,通过基于时间计算的存储地址进行存储,可以将每个时间日志都能有固定的存储位置,能够快速查找到目标时间的日志记录,同时能够使每个扇区的日志都严格的按照时间顺序存储,减少因为时间错乱而需要删除日志或者无法查询的问题,适合定时日志存储。
在本申请实施例中,基于Flash的日志存取装置首先按照预设周期实时获取系统产生的定时日志;其中,定时日志包括日志时间、日志索引和目标日志记录内容,然后确定时间换算单位,并基于时间换算单位将日志时间进行转换后生成总时长,再根据预设周期与总时长计算目标日志记录内容所在的目标Flash存储地址,最后当目标Flash存储地址所处的目标扇区中有数据且目标Flash存储地址不属于目标扇区的起始地址时,将目标扇区对应的下一个扇区确定为备份区,并基于备份区将目标日志记录内容写入目标Flash存储地址,以及擦除备份区的数据。本申请基于日志时间计算目标日志记录内容所在的目标Flash存储地址,由于时间的连续性,可减少因为时间修改而大面积日志擦写的事故,同时减少因为时间修改而擦除Flash的次数,同时可以提高目标Flash存储地址的查找速度。本申请采用备份区,实现擦写冗余,降低因为在同一区域备份而造成备份区写坏的概率,减少单独开辟多备份区造成的资源的浪费。
请参见图6,为本申请实施例提供了另一种基于Flash的日志存取方法的流程示意图。如图6所示,本申请实施例的方法可以包括以下步骤:
S201,当接收到日志查询指令时,获取查询开始时间与结束时间;
S202,确定日志查询时间范围;
S203,当开始时间与结束时间位于日志查询时间范围时,根据查询开始时间与结束时间计算查询开始位置与结束位置;
S204,根据查询开始位置与结束位置逐一读取日志进行返回。
其中,支持传统的按照索引读取方法,也可以根据时间进行读取,实用性更强,可以提高日志查询和读取速度。
在一种可能的实现方式中,例如图7所示,根据时间进行读取时,首先判断查询时间是否在当前日志存储范围内,若查询开始时间要大于最新一条日志时间或者查询结束时间要小于日志记录最老的一条日志时间,则无日志可查,直接返回无日志。若查询开始时间要小于日志开始时间,则日志开始位置为查询开始地址,在得到开始查询日志的地址后,读取地址中的日志数据,若读取失败或者无日志数据,则读取下个扇区的数据,防止读取扇区里的数据被擦除,若下个扇区也读取失败或者无数据,则返回查询失败,若有数据,则继续;判断读取的日志时间,若小于查询开始时间,则抛弃,继续查询下一条,若大于查询结束时间,则查询结束,否则,将查询的结果返回,并继续查询下一条,直到查询到最后一条日志或者不满足条件结束。
在另一种可能的实现方式中,还兼容索引值进行读取时,首先获取待查询日志的起始索引值,然后当开始时间与结束时间位于日志查询时间范围时,根据待查询日志的起始索引值逐一读取日志进行返回。
具体的,根据索引查询时,直接根据索引的值计算出要查询开始的位置,计算方法为D=(In(查询开始索引值)-1)/Fc(每个扇区的日志数量)*4096+DS(日志开始位置)+(In-1)%Fc*L。
在本申请实施例中,基于Flash的日志存取装置首先按照预设周期实时获取系统产生的定时日志;其中,定时日志包括日志时间、日志索引和目标日志记录内容,然后确定时间换算单位,并基于时间换算单位将日志时间进行转换后生成总时长,再根据预设周期与总时长计算目标日志记录内容所在的目标Flash存储地址,最后当目标Flash存储地址所处的目标扇区中有数据且目标Flash存储地址不属于目标扇区的起始地址时,将目标扇区对应的下一个扇区确定为备份区,并基于备份区将目标日志记录内容写入目标Flash存储地址,以及擦除备份区的数据。本申请基于日志时间计算目标日志记录内容所在的目标Flash存储地址,由于时间的连续性,可减少因为时间修改而大面积日志擦写的事故,同时减少因为时间修改而擦除Flash的次数。本申请采用备份区,实现擦写冗余,降低因为在同一区域备份而造成备份区写坏的概率,减少单独开辟多备份区造成的资源的浪费。
下述为本发明装置实施例,可以用于执行本发明方法实施例。对于本发明装置实施例中未披露的细节,请参照本发明方法实施例。
请参见图8,其示出了本发明一个示例性实施例提供的基于Flash的日志存取装置的结构示意图。该基于Flash的日志存取装置可以通过软件、硬件或者两者的结合实现成为终端的全部或一部分。该装置1包括定时日志获取模块10、总时长生成模块20、Flash存储地址计算模块30、目标日志记录内容写入模块40。
定时日志获取模块10,用于按照预设周期实时获取系统产生的定时日志;其中,定时日志包括日志时间、日志索引和目标日志记录内容;
总时长生成模块20,用于确定时间换算单位,并基于时间换算单位将日志时间进行转换后生成总时长;
Flash存储地址计算模块30,用于根据预设周期与总时长计算目标日志记录内容所在的目标Flash存储地址;
目标日志记录内容写入模块40,用于当目标Flash存储地址所处的目标扇区中有数据且目标Flash存储地址不属于目标扇区的起始地址时,将目标扇区对应的下一个扇区确定为备份区,并基于备份区将目标日志记录内容写入目标Flash存储地址,以及擦除备份区的数据。
需要说明的是,上述实施例提供的基于Flash的日志存取装置在执行基于Flash的日志存取方法时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的基于Flash的日志存取装置与基于Flash的日志存取方法实施例属于同一构思,其体现实现过程详见方法实施例,这里不再赘述。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
在本申请实施例中,基于Flash的日志存取装置首先按照预设周期实时获取系统产生的定时日志;其中,定时日志包括日志时间、日志索引和目标日志记录内容,然后确定时间换算单位,并基于时间换算单位将日志时间进行转换后生成总时长,再根据预设周期与总时长计算目标日志记录内容所在的目标Flash存储地址,最后当目标Flash存储地址所处的目标扇区中有数据且目标Flash存储地址不属于目标扇区的起始地址时,将目标扇区对应的下一个扇区确定为备份区,并基于备份区将目标日志记录内容写入目标Flash存储地址,以及擦除备份区的数据。本申请基于日志时间计算目标日志记录内容所在的目标Flash存储地址,由于时间的连续性,可减少因为时间修改而大面积日志擦写的事故,同时减少因为时间修改而擦除Flash的次数。本申请采用备份区,实现擦写冗余,降低因为在同一区域备份而造成备份区写坏的概率,减少单独开辟多备份区造成的资源的浪费。
本发明还提供一种计算机可读介质,其上存储有程序指令,该程序指令被处理器执行时实现上述各个方法实施例提供的基于Flash的日志存取方法。
本发明还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述各个方法实施例的基于Flash的日志存取方法。
请参见图9,为本申请实施例提供了一种终端的结构示意图。如图9所示,终端1000可以包括:至少一个处理器1001,至少一个网络接口1004,用户接口1003,存储器1005,至少一个通信总线1002。
其中,通信总线1002用于实现这些组件之间的连接通信。
其中,用户接口1003可以包括显示屏(Display)、摄像头(Camera),可选用户接口1003还可以包括标准的有线接口、无线接口。
其中,网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。
其中,处理器1001可以包括一个或者多个处理核心。处理器1001利用各种借口和线路连接整个电子设备1000内的各个部分,通过运行或执行存储在存储器1005内的指令、程序、代码集或指令集,以及调用存储在存储器1005内的数据,执行电子设备1000的各种功能和处理数据。可选的,处理器1001可以采用数字信号处理(Digital Signal Processing,DSP)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、可编程逻辑阵列(Programmable Logic Array,PLA)中的至少一种硬件形式来实现。处理器1001可集成中央处理器(Central Processing Unit,CPU)、图像处理器(Graphics Processing Unit,GPU)和调制解调器等中的一种或几种的组合。其中,CPU主要处理操作系统、用户界面和应用程序等;GPU用于负责显示屏所需要显示的内容的渲染和绘制;调制解调器用于处理无线通信。可以理解的是,上述调制解调器也可以不集成到处理器1001中,单独通过一块芯片进行实现。
其中,存储器1005可以包括随机存储器(Random Access Memory,RAM),也可以包括只读存储器(Read-Only Memory)。可选的,该存储器1005包括非瞬时性计算机可读介质(non-transitory computer-readable storage medium)。存储器1005可用于存储指令、程序、代码、代码集或指令集。存储器1005可包括存储程序区和存储数据区,其中,存储程序区可存储用于实现操作系统的指令、用于至少一个功能的指令(比如触控功能、声音播放功能、图像播放功能等)、用于实现上述各个方法实施例的指令等;存储数据区可存储上面各个方法实施例中涉及到的数据等。存储器1005可选的还可以是至少一个位于远离前述处理器1001的存储装置。如图9所示,作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及基于Flash的日志存取应用程序。
在图9所示的终端1000中,用户接口1003主要用于为用户提供输入的接口,获取用户输入的数据;而处理器1001可以用于调用存储器1005中存储的基于Flash的日志存取应用程序,并具体执行以下操作:
按照预设周期实时获取系统产生的定时日志;其中,定时日志包括日志时间、日志索引和目标日志记录内容;
确定时间换算单位,并基于时间换算单位将日志时间进行转换后生成总时长;
根据预设周期与总时长计算目标日志记录内容所在的目标Flash存储地址;
当目标Flash存储地址所处的目标扇区中有数据且目标Flash存储地址不属于目标扇区的起始地址时,将目标扇区对应的下一个扇区确定为备份区,并基于备份区将目标日志记录内容写入目标Flash存储地址,以及擦除备份区的数据。
在一个实施例中,处理器1001在执行基于时间换算单位将日志时间进行转换后生成总时长时,具体执行以下操作:
确定日志时间的当前年份起始时刻;
计算日志时间与当前年份起始时刻之间的第一时间秒数值;
加载年份时间表;
获取所述当前年份起始时刻上一历史年份距离最初年份时刻所经过的第二时间秒数值;
将第一时间秒数值与第二时间秒数值做和后生成总时长。
在一个实施例中,处理器1001在执行根据预设周期与总时长计算目标日志记录内容所在的目标Flash存储地址时,具体执行以下操作:
将预设周期转换为第三时间秒数值;
确定预设周期内可获取的最大日志条数;
根据总时长、第三时间秒数值以及最大日志条数计算存储日志索引;
计算Flash中每个扇区的可存日志总量;
根据存储日志索引和可存日志总量计算存储日志索引所在扇区位移数和索引位置;
根据存储日志索引所在扇区位移数和索引位置计算目标日志记录内容所在的目标Flash存储地址。
在一个实施例中,处理器1001在执行根据总时长、第三时间秒数值以及最大日志条数计算存储日志索引时,具体执行以下操作:
计算总时长与第三时间秒数值的目标比值;
计算目标比值与最大日志条数的余数;
将余数确定为存储日志索引;
其中,存储日志索引的计算公式为:Ir=(S/C)%M;S为定时日志中日志时间换算后的总时长,C为预设周期换算后的时间秒数值,M为扇区可存的最大日志条数。
在一个实施例中,处理器1001在执行当目标Flash存储地址所处的目标扇区中有数据且目标Flash存储地址不属于目标扇区的起始地址时,将目标扇区对应的下一个扇区确定为备份区,并基于备份区将目标日志记录内容写入目标Flash存储地址,以及擦除备份区的数据时,具体执行以下操作:
当目标Flash存储地址所处的目标扇区中无数据时,将目标日志记录内容写入目标Flash存储地址;
或者,
当目标Flash存储地址所处的目标扇区中有数据且目标Flash存储地址属于目标扇区的起始地址时,擦除目标扇区中的数据,并将目标日志记录内容写入目标Flash存储地址。
在一个实施例中,处理器1001还执行以下操作:
当接收到日志查询指令时,获取查询开始时间与结束时间;
确定日志查询时间范围;
当开始时间与结束时间位于日志查询时间范围时,根据查询开始时间与结束时间计算查询开始位置与结束位置;
根据查询开始位置与结束位置逐一读取日志进行返回。
在一个实施例中,处理器1001还执行以下操作:
获取待查询日志的起始索引值;
当开始时间与结束时间位于日志查询时间范围时,根据待查询日志的起始索引值逐一读取日志进行返回。
在本申请实施例中,基于Flash的日志存取装置首先按照预设周期实时获取系统产生的定时日志;其中,定时日志包括日志时间、日志索引和目标日志记录内容,然后确定时间换算单位,并基于时间换算单位将日志时间进行转换后生成总时长,再根据预设周期与总时长计算目标日志记录内容所在的目标Flash存储地址,最后当目标Flash存储地址所处的目标扇区中有数据且目标Flash存储地址不属于目标扇区的起始地址时,将目标扇区对应的下一个扇区确定为备份区,并基于备份区将目标日志记录内容写入目标Flash存储地址,以及擦除备份区的数据。本申请基于日志时间计算目标日志记录内容所在的目标Flash存储地址,由于时间的连续性,可减少因为时间修改而大面积日志擦写的事故,同时减少因为时间修改而擦除Flash的次数。本申请采用备份区,实现擦写冗余,降低因为在同一区域备份而造成备份区写坏的概率,减少单独开辟多备份区造成的资源的浪费。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,基于Flash的日志存取的程序可存储于计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,的存储介质可为磁碟、光盘、只读存储记忆体或随机存储记忆体等。
以上所揭露的仅为本申请较佳实施例而已,当然不能以此来限定本申请之权利范围,因此依本申请权利要求所作的等同变化,仍属本申请所涵盖的范围。

Claims (10)

1.一种基于Flash的日志存取方法,其特征在于,所述方法包括:
按照预设周期实时获取系统产生的定时日志;其中,所述定时日志包括日志时间、日志索引和目标日志记录内容;
确定时间换算单位,并基于所述时间换算单位将所述日志时间进行转换后生成总时长;
根据所述预设周期与所述总时长计算所述目标日志记录内容所在的目标Flash存储地址;
当所述目标Flash存储地址所处的目标扇区中有数据且所述目标Flash存储地址不属于所述目标扇区的起始地址时,将所述目标扇区对应的下一个扇区确定为备份区,并基于所述备份区将所述目标日志记录内容写入所述目标Flash存储地址,以及擦除所述备份区的数据。
2.根据权利要求1所述的方法,其特征在于,所述时间换算单位为秒;
所述基于所述时间换算单位将所述日志时间进行转换后生成总时长,包括:
确定所述日志时间的当前年份起始时刻;
计算所述日志时间与所述当前年份起始时刻之间的第一时间秒数值;
计算所述当前年份起始时刻上一历史年份距离最初年份时刻所经过的第二时间秒数值;或者,
加载年份时间表,并从所述年份时间表中获取所述当前年份起始时刻上一历史年份距离最初年份时刻所经过的第二时间秒数值;
将所述第一时间秒数值与所述第二时间秒数值做和后生成总时长。
3.根据权利要求2所述的方法,其特征在于,所述根据所述预设周期与所述总时长计算所述目标日志记录内容所在的目标Flash存储地址,包括:
将所述预设周期转换为第三时间秒数值;
确定所述预设周期内可获取的最大日志条数;
根据所述总时长、第三时间秒数值以及最大日志条数计算存储日志索引;
计算所述Flash中每个扇区的可存日志总量;
根据所述存储日志索引和可存日志总量计算所述存储日志索引所在扇区位移数和索引位置;
根据所述存储日志索引所在扇区位移数和索引位置计算所述目标日志记录内容所在的目标Flash存储地址。
4.根据权利要求3所述的方法,其特征在于,所述根据所述总时长、第三时间秒数值以及最大日志条数计算存储日志索引,包括:
计算所述总时长与所述第三时间秒数值的目标比值;
计算所述目标比值与所述最大日志条数的余数;
将所述余数确定为存储日志索引;
其中,所述存储日志索引的计算公式为:
Figure FDA0003378266350000021
S为定时日志中日志时间换算后的总时长,C为预设周期换算后的时间秒数值,M为扇区可存的最大日志条数。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当所述目标Flash存储地址所处的目标扇区中无数据时,将所述目标日志记录内容写入所述目标Flash存储地址;
或者,
当所述目标Flash存储地址所处的目标扇区中有数据且所述目标Flash存储地址属于所述目标扇区的起始地址时,擦除所述目标扇区中的数据,并将所述目标日志记录内容写入所述目标Flash存储地址。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当接收到日志查询指令时,获取查询开始时间与结束时间;
确定日志查询时间范围;
当所述开始时间与结束时间位于所述日志查询时间范围时,根据所述查询开始时间与结束时间计算查询开始位置与结束位置;
根据所述查询开始位置与结束位置逐一读取日志进行返回。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
获取待查询日志的起始索引值;
当所述开始时间与结束时间位于所述日志查询时间范围时,根据所述待查询日志的起始索引值逐一读取日志进行返回。
8.一种基于Flash的日志存取装置,其特征在于,所述装置包括:
定时日志获取模块,用于按照预设周期实时获取系统产生的定时日志;其中,所述定时日志包括日志时间、日志索引和目标日志记录内容;
总时长生成模块,用于确定时间换算单位,并基于所述时间换算单位将所述日志时间进行转换后生成总时长;
Flash存储地址计算模块,用于根据所述预设周期与所述总时长计算所述目标日志记录内容所在的目标Flash存储地址;
目标日志记录内容写入模块,用于当所述目标Flash存储地址所处的目标扇区中有数据且所述目标Flash存储地址不属于所述目标扇区的起始地址时,将所述目标扇区对应的下一个扇区确定为备份区,并基于所述备份区将所述目标日志记录内容写入所述目标Flash存储地址,以及擦除所述备份区的数据。
9.一种计算机存储介质,其特征在于,所述计算机存储介质存储有多条指令,所述指令适于由处理器加载并执行如权利要求1-7任意一项的方法步骤。
10.一种终端,其特征在于,包括:处理器和存储器;其中,所述存储器存储有计算机程序,所述计算机程序适于由所述处理器加载并执行如权利要求1-7任意一项的方法步骤。
CN202111425600.9A 2021-11-26 2021-11-26 一种基于Flash的日志存取方法、装置、存储介质及终端 Pending CN114328280A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111425600.9A CN114328280A (zh) 2021-11-26 2021-11-26 一种基于Flash的日志存取方法、装置、存储介质及终端

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111425600.9A CN114328280A (zh) 2021-11-26 2021-11-26 一种基于Flash的日志存取方法、装置、存储介质及终端

Publications (1)

Publication Number Publication Date
CN114328280A true CN114328280A (zh) 2022-04-12

Family

ID=81046288

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111425600.9A Pending CN114328280A (zh) 2021-11-26 2021-11-26 一种基于Flash的日志存取方法、装置、存储介质及终端

Country Status (1)

Country Link
CN (1) CN114328280A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117785073A (zh) * 2024-02-28 2024-03-29 深圳市智岩科技有限公司 物联网设备及其时序数据存取方法和相应的装置与介质

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117785073A (zh) * 2024-02-28 2024-03-29 深圳市智岩科技有限公司 物联网设备及其时序数据存取方法和相应的装置与介质

Similar Documents

Publication Publication Date Title
US11853549B2 (en) Index storage in shingled magnetic recording (SMR) storage system with non-shingled region
CN110018989B (zh) 一种快照比对的方法和装置
CN109496292B (zh) 一种磁盘管理方法、磁盘管理装置及电子设备
CN113111129A (zh) 数据同步方法、装置、设备及存储介质
CN113568582B (zh) 数据管理方法、装置和存储设备
CN113220239A (zh) 一种flash存储的擦写方法、装置、设备及可读存储介质
CN112199053B (zh) 一种应用于小容量存储区的日志记录方法、装置及介质
CN110825694A (zh) 数据处理方法、装置、设备和存储介质
CN115951839A (zh) 分区命名空间固态硬盘的数据写入方法、装置及电子设备
CN112182010B (zh) 脏页刷新方法和装置、存储介质和电子设备
CN111324303A (zh) Ssd垃圾回收方法、装置、计算机设备及存储介质
CN115639971B (zh) 数据写入方法、装置、电子设备、存储介质及程序产品
CN104021089A (zh) 快闪存储器控制芯片与存储装置以及快闪存储器控制方法
CN114328280A (zh) 一种基于Flash的日志存取方法、装置、存储介质及终端
CN115407943A (zh) 一种内存转储文件生成方法、装置、设备及可读存储介质
CN113467698A (zh) 基于文件系统的写方法、装置、计算机设备和存储介质
CN112286725A (zh) 数据处理方法、装置及电子设备
CN117033099A (zh) 一种系统硬盘的压力测试方法、系统、装置及存储介质
CN114924911B (zh) Windows操作系统有效数据备份方法、装置、设备和存储介质
CN115328696A (zh) 一种数据库中的数据备份方法
CN114756523A (zh) 一种分布式存储方法、装置以及介质
CN111399774B (zh) 分布式存储系统下基于快照的数据处理方法和装置
CN114063905A (zh) 日志存储方法、日志存储装置、存储设备和存储介质
CN109960611B (zh) 数据恢复的方法、装置、电子设备及机器可读存储介质
CN113051105A (zh) 数据处理方法、装置、设备及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination