CN105183626A - 一种纸币识别模块的日志存储方法及系统 - Google Patents
一种纸币识别模块的日志存储方法及系统 Download PDFInfo
- Publication number
- CN105183626A CN105183626A CN201510638575.0A CN201510638575A CN105183626A CN 105183626 A CN105183626 A CN 105183626A CN 201510638575 A CN201510638575 A CN 201510638575A CN 105183626 A CN105183626 A CN 105183626A
- Authority
- CN
- China
- Prior art keywords
- log
- log information
- paper money
- write
- module
- 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.)
- Granted
Links
Landscapes
- Debugging And Monitoring (AREA)
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
Abstract
本发明公开了一种纸币识别模块的日志存储方法,其特征在于,包括:接收日志消息,把所述日志消息写入日志缓存区;获取当前纸币识别模块的状态;若所述当前纸币识别模块为空闲状态,则从日志缓存区中读取日志消息写入Nand?Flash中;若所述当前纸币识别模块为工作状态,且所述日志缓存区的日志消息大于等于最大预置字节,则从日志缓存区中读取日志消息写入Nand?Flash中。本发明提供的纸币识别模块的日志存储方法通过获取当前纸币识别模块的状态,根据不同的状态采取不同的方法从日志缓存区中读取日志消息写入Nand?Flash中,在不影响系统实时性的情况下,把日志消息完整记录在现金识别模块的Nand?Flash,实现简单、成本低、安全度高、资源利用率高。
Description
技术领域
本发明涉及数据存储技术领域,尤其涉及一种纸币识别模块的日志存储方法及系统。
背景技术
现金识别模块是循环存取款机芯等大型金融设备的核心模块,现金识别模块的所有工作信息都要完整的记录下来。
现有日志记录方案有:方案一、日志存储在如SRAM、DRAM等易失性的随机存储器中,由工控机端的应用发送命令实时的把日志读到工控机上,以文件的形式进行存储;方案二、存储在如MRAM等非易失性的随机存储器中,这种方案日志通常以二进制数据流的方式顺序存在存储器中,当达到一定的激活条件(如:容量、时间、或特定动作等),则把日志转存到NandFlash上;方案三、实时写入NandFlash。
但是,现有验钞识别模块的日志存储方案存在以下缺点:方案一:第一、日志容易丢失,这种方案日志存储在易失性的存储器中,一但出现异常掉电(没有掉电保护电流装置),通讯接口故障,程序BUG等,都会造成日志丢失;第二、信息安全度不高,现金识别模块是金融设备最核心的模块需要严格保密,原则上现金识别模块的日志也只能由公司具备一定权限客服人员通过专门的工具读取,所有日志直接存储在工控机上存在安全隐患;方案二:第一、提高了成本,增加了MRAM等非易失性存储器;第二、程序复杂度增加,涉及到日志转存以及在转存过程中故障(如:异常掉电)的处理;方案三:第三、影响系统实时性,日志实时写NandFlash中需要占用较多的系统资源。
发明内容
本发明提供了一种纸币识别模块的日志存储方法及系统,通过获取当前纸币识别模块的状态,根据不同的状态采取不同的方法从日志缓存区中读取日志消息写入NandFlash中,在不影响系统实时性的情况下,把日志消息完整记录在现金识别模块的NandFlash,实现简单、成本低、安全度高、资源利用率高。
为实现上述设计,本发明采用以下技术方案:
一方面,提供了一种纸币识别模块的日志存储方法,包括:
步骤B11,接收日志消息,把所述日志消息写入日志缓存区;
步骤B12,获取当前纸币识别模块的状态;
步骤B13,若所述当前纸币识别模块为空闲状态,则从日志缓存区中读取日志消息写入NandFlash中;若所述当前纸币识别模块为工作状态,且所述日志缓存区的日志消息大于等于最大预置字节,则从日志缓存区中读取日志消息写入NandFlash中。
优选地,所述若所述当前纸币识别模块为空闲状态,则从日志缓存区中读取日志消息写入NandFlash中,包括:若所述当前纸币识别模块为空闲状态,计算出写入日志空间,根据所述写入日志空间从日志缓存区中读取日志消息,把读取的日志消息写入NandFlash中,其中,所述计算出写入日志空间,包括:
通过命令状态机查询当前空闲状态持续时间T,单位为ms;
计算出写入日志空间:S=((T·X-Bt)/Pt)·Ps;
其中,S为写入日志空间,单位为Byte,X为空闲时间有效利用率调节变量,Bt为系统擦除一个BLOCK所需时间,单位为ms,Pt为系统写一个page所需时间,单位为ms,Ps为一个page的大小,为常量,单位为Byte,T·X为空闲状态的有效持续时间;
所述写入日志空间的大小小于等于一个BLOCK的大小;所述有效持续时间大于等于(Bt+Pt);
所述若所述当前纸币识别模块为工作状态,且确定所述日志缓存区的大小大于等于最大预置字节,则从日志缓存区中读取日志消息写入NandFlash中,包括:若所述当前纸币识别模块为工作状态,确定所述日志缓存区的日志消息大于等于最大预置字节,读取日志缓存区全部的日志消息,把读取的日志消息写入NandFlash中,其中,所述最大预置字节的取值满足:
最大预置字节小于等于一个BLOCK的大小;和
最大预置字节小于等于纸币识别模块异常掉电安全写入日志大小的1/2;和
最大预置字节大于等于一个工作状态到空闲状态周期产生的最大日志量。
优选地,所述接收日志消息之前,还包括:
步骤A11,打开日志文件,创建日志等待线程;
步骤A12,阻塞等待日志队列中的消息;
步骤A13,判断所述消息的类型,若所述消息为日志消息,则执行步骤B11;若所述消息为退出消息,则当前纸币识别模块的状态为退出状态,执行退出流程。
优选地,所述退出消息包括:异常掉电消息、复位消息和关机消息中的一种或多种;所述退出流程,包括:退出系统,并把所有日志缓存区中的日志消息同步到物理存储器中;
所述获取当前纸币识别模块的状态,包括,通过命令状态机获取当前现金识别模块的状态。
优选地,所述步骤B12之后,还包括,若所述当前纸币识别模块为工作状态,且所述日志缓存区的日志消息小于最大预置字节时,则返回执行步骤A12。
优选地,所述根据所述写入日志空间从日志缓存区中读取日志消息之后,还包括,把读取的日志消息同步写入到所述物理存储器中;
所述读取日志缓存区全部的日志消息之后,还包括,把读取的日志消息同步写入到所述物理存储器中。
优选地,所述步骤B13执行完毕之后,则返回执行步骤A12。
另一方面,提供了一种纸币识别模块的日志存储系统,所述日志存储系统包括:
接收模块,接收日志消息,把所述日志消息写入日志缓存区;
获取模块,获取当前纸币识别模块的状态;
写入模块,若所述当前纸币识别模块为空闲状态,则从日志缓存区中读取日志消息写入NandFlash中;若所述当前纸币识别模块为工作状态,且所述日志缓存区的日志消息大于等于最大预置字节,则从日志缓存区中读取日志消息写入NandFlash中。
优选地,所述获取当前纸币识别模块的状态,包括,通过命令状态机获取当前现金识别模块的状态;
所述若所述当前纸币识别模块为空闲状态,则从日志缓存区中读取日志消息写入NandFlash中,包括,若所述当前纸币识别模块为空闲状态,计算出写入日志空间,根据所述写入日志空间从日志缓存区中读取日志消息,把读取的日志消息写入NandFlash中,其中,所述计算出写入日志空间,包括:
通过命令状态机查询当前空闲状态持续时间T,单位为ms;
计算出写入日志空间:S=((T·X-Bt)/Pt)·Ps;
其中,S为写入日志空间,单位为Byte,X为空闲时间有效利用率调节变量,Bt为系统擦除一个BLOCK所需时间,单位为ms,Pt为系统写一个page所需时间,单位为ms,Ps为一个page的大小,为常量,单位为Byte,T·X为空闲状态的有效持续时间;
所述写入日志空间的大小小于等于一个BLOCK的大小;所述有效持续时间大于等于(Bt+Pt);
所述若所述当前纸币识别模块为工作状态,且确定所述日志缓存区的大小大于等于最大预置字节,则从日志缓存区中读取日志消息写入NandFlash中,包括,若所述当前纸币识别模块为工作状态,确定所述日志缓存区的日志消息大于等于最大预置字节,读取日志缓存区全部的日志消息,把读取的日志消息写入NandFlash中,其中,所述最大预置字节的取值满足:
最大预置字节小于等于一个BLOCK的大小;和
最大预置字节小于等于纸币识别模块异常掉电安全写入日志大小的1/2;和
最大预置字节大于等于一个工作状态到空闲状态周期产生的最大日志量。
优选地,所述日志存储系统,还包括:
打开模块,打开日志文件,创建日志等待线程;
阻塞模块,阻塞等待日志队列中的消息;
判断模块,判断所述消息的类型;
退出模块,若所述消息为退出消息,则当前纸币识别模块的状态为退出状态,执行退出流程,所述退出消息包括:异常掉电消息、复位消息和关机消息中的一种或多种;所述退出流程,包括:退出系统,并把所有日志缓存区中的日志消息同步到物理存储器中。
与现有技术相比,本发明的有益效果为:一种纸币识别模块的日志存储方法,包括:步骤B11,接收日志消息,把所述日志消息写入日志缓存区;步骤B12,获取当前纸币识别模块的状态;步骤B13,若所述当前纸币识别模块为空闲状态,则从日志缓存区中读取日志消息写入NandFlash中;若所述当前纸币识别模块为工作状态,且所述日志缓存区的日志消息大于等于最大预置字节,则从日志缓存区中读取日志消息写入NandFlash中。本发明通过获取当前纸币识别模块的状态,根据不同的状态采取不同的方法从日志缓存区中读取日志消息写入NandFlash中,在不影响系统实时性的情况下,把日志消息完整记录在现金识别模块的NandFlash,实现简单、成本低、安全度高、资源利用率高。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对本发明实施例描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据本发明实施例的内容和这些附图获得其他的附图。
图1是本发明具体实施方式中提供的一种现金识别模块的日志存储方法的第一实施例的方法流程图。
图2是本发明具体实施方式中提供的一种现金识别模块的日志存储方法的第二实施例的方法流程图。
图3是本发明具体实施方式中提供的一种现金识别模块的日志存储方法的第三实施例的方法流程图。
图4是本发明具体实施方式中提供的一种现金识别模块的日志存储系统的第一实施例的结构方框图。
图5是本发明具体实施方式中提供的一种现金识别模块的日志存储系统的第二实施例的结构方框图。
具体实施方式
为使本发明解决的技术问题、采用的技术方案和达到的技术效果更加清楚,下面将结合附图对本发明实施例的技术方案作进一步的详细描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参考图1,其是本发明具体实施方式中提供的一种现金识别模块的日志存储方法的第一实施例的方法流程图。如图所示,该日志存储方法,包括:
步骤S11:接收日志消息,把所述日志消息写入日志缓存区。
步骤S12,获取当前纸币识别模块的状态。
优选地,所述获取当前纸币识别模块的状态,包括,通过命令状态机或其他命令获取当前现金识别模块的状态。
步骤S13,若所述当前纸币识别模块为空闲状态,从日志缓存区中读取日志消息写入NandFlash中;若所述当前纸币识别模块为工作状态,则确定所述日志缓存区的日志消息大于等于最大预置字节,从日志缓存区中读取日志消息写入NandFlash中。
优选地,所述若所述当前纸币识别模块为空闲状态,则从日志缓存区中读取日志消息写入NandFlash中,包括:若所述当前纸币识别模块为空闲状态,计算出写入日志空间,根据所述写入日志空间从日志缓存区中读取日志消息,把读取的日志消息写入NandFlash中,其中,所述计算出写入日志空间,包括:
通过命令状态机查询当前空闲状态持续时间T,单位为ms;
计算出写入日志空间:S=((T·X-Bt)/Pt)·Ps;
其中,S为写入日志空间,单位为Byte,X为空闲时间有效利用率调节变量,Bt为系统擦除一个BLOCK所需时间,单位为ms,Pt为系统写一个page所需时间,单位为ms,Ps为一个page的大小,为常量,单位为Byte,T·X为空闲状态的有效持续时间,综上所述,上述公式可以求出空闲状态有效持续时间最多可写入的日志消息。
通过命令状态机查询当前空闲状态持续时间T。X为空闲时间有效利用率调节变量,0<X≤1,具体值根据系统差异进行调节。Ps为一个page的大小,为常量,单位为Byte,系统不同Ps的值也可能有所差异。根据设计,一次写入NandFlash的日志数据量一定小于等于一个BLOCK的空间大小,NandFlash的一个BLOCK的大小通常都在几十K以上,一百多K也非常常见,根据设计,一个工作状态到空闲状态周期不可能产生那么多日志,通常都在1K之内,所以一个BLOCK能充分满足一次写入NandFlash的日志消息。
所述写入日志空间的大小小于等于一个BLOCK的大小;所述有效持续时间大于等于(Bt+Pt),以保证在空闲状态最少可以写入一个page。
所述若所述当前纸币识别模块为工作状态,且确定所述日志缓存区的大小大于等于最大预置字节,则从日志缓存区中读取日志消息写入NandFlash中,包括,若所述当前纸币识别模块为工作状态,确定所述日志缓存区的日志消息大于等于最大预置字节,读取日志缓存区全部的日志消息,把读取的日志消息写入NandFlash中,其中,所述最大预置字节的取值满足:
最大预置字节小于等于一个BLOCK的大小;和
最大预置字节小于等于纸币识别模块异常掉电安全写入日志大小的1/2;和
最大预置字节大于等于一个工作状态到空闲状态周期产生的最大日志量。
根据设计,最大预置字节要同时满足这三个相互制约的条件。
原则上根据设计,工作状态不可能出现日志缓存区大于最大预置字节的情况,如果出现则说明系统设计还不够完善,因为在工作状态写入日志可能会影响到系统的实时性,这里设计这种情况是为程序添加保护流程。最大预置字节小于等于纸币识别模块异常掉电安全写入日志大小的1/2,是因为退出流程与空闲状态、工作状态、写日志流程,处于同一日志处理流程,当正在写日志时,产生了异常掉电、复位或关机等退出事件,这时需要写完日志才能执行退出流程,又因为退出流程也要写日志,所以为保证安全写入所有日志,必须对工作状态和空闲状态写入的日志量做出限制,又因为,最大预置字节大于等于一个工作状态到空闲状态周期产生的最大日志量,所以限制工作状态写入日志的量。此外,这里不考虑外部电源设备的情况,例如UPS(不间断电源)等情况,这里要保证出现异常掉电情况时日志消息能完整安全的写入。
综上所述,本实施例通过获取当前纸币识别模块的状态,根据不同的状态采取不同的方法从日志缓存区中读取日志消息写入NandFlash中,若所述当前纸币识别模块为空闲状态,计算出写入日志空间,根据所述写入日志空间从日志缓存区中读取日志消息,把读取的日志消息写入NandFlash中;若所述当前纸币识别模块为工作状态,且所述日志缓存区的日志消息大于等于最大预置字节,读取日志缓存区全部的日志消息,把读取的日志消息写入NandFlash中,在不影响系统实时性的情况下,把日志消息完整记录在现金识别模块的NandFlash,实现简单、成本低、安全度高、资源利用率高。
请参考图2,其是本发明具体实施方式中提供的一种现金识别模块的日志存储方法的第二实施例的方法流程图。如图所示,在日志存储方法的第一实施例的基础上,该日志存储方法,包括:
步骤S21:打开日志文件,创建日志等待线程。
ATM机启动,加载日志模块,创建当天日志文件,如果日志文件存在就打开日志文件,创建日志等待线程,然后执行步骤S22。
步骤S22:阻塞等待日志队列中的消息。
步骤S23:判断所述消息的类型,若所述消息为日志消息,执行步骤S25;若所述消息为退出消息,执行步骤S24。
步骤S24:当前纸币识别模块的状态为退出状态,执行退出流程。
优选地,所述退出消息包括:异常掉电消息、复位消息和关机消息中的一种或多种;所述退出流程,包括:退出系统,并把所有日志缓存区中的日志消息同步到物理存储器中。若所述消息为日志消息,则当前纸币识别模块的状态为退出状态,执行退出流程,退出系统,并把所有日志缓存区中的日志消息同步到屋里存储器中,防止日志消息的丢失。
步骤S25:接收日志消息,把所述日志消息写入日志缓存区。
步骤S26:获取当前纸币识别模块的状态。
优选地,所述获取当前纸币识别模块的状态,包括,通过命令状态机或其他命令获取当前现金识别模块的状态。
优选地,所述步骤S26之后,还包括,若所述当前纸币识别模块为工作状态,且所述日志缓存区的日志消息小于最大预置字节时,则返回执行步骤S22。
步骤S27:若所述当前纸币识别模块为空闲状态,则从日志缓存区中读取日志消息写入NandFlash中;若所述当前纸币识别模块为工作状态,且所述日志缓存区的日志消息大于等于最大预置字节,则从日志缓存区中读取日志消息写入NandFlash中。
优选地,所述步骤S27执行完毕之后,则返回执行步骤S22。
请参考图3,其是本发明具体实施方式中提供的一种现金识别模块的日志存储方法的第三实施例的方法流程图。如图所示,在日志存储方法的第二实施例的基础上,该日志存储方法,包括:
步骤S31:打开日志文件,创建日志等待线程。
ATM机启动,加载日志模块,创建当天日志文件,如果日志文件存在就打开日志文件,然后执行步骤S32。
步骤S32:阻塞等待日志队列中的消息。
步骤S33:判断所述消息的类型,若所述消息为日志消息,执行步骤S35;若所述消息为退出消息,执行步骤S34。
步骤S34:当前纸币识别模块的状态为退出状态,执行退出流程。
优选地,所述退出消息包括:异常掉电消息、复位消息和关机消息中的一种或多种;所述退出流程,包括:退出系统,并把所有日志缓存区中的日志消息同步到物理存储器中。
步骤S35:接收日志消息,把所述日志消息写入日志缓存区。
步骤S36:获取当前纸币识别模块的状态。
优选地,所述获取当前纸币识别模块的状态,包括,通过命令状态机或其他命令获取当前现金识别模块的状态。若所述当前纸币识别模块为空闲状态,则执行步骤S37;若所述当前纸币识别模块为工作状态,则执行步骤S38。
优选地,所述步骤S36之后,还包括,若所述当前纸币识别模块为工作状态,且所述日志缓存区的日志消息小于最大预置字节时,则返回执行步骤S32。
步骤S37:若所述当前纸币识别模块为空闲状态,计算出写入日志空间,根据所述写入日志空间从日志缓存区中读取日志消息。
步骤S37执行完毕之后,执行步骤S39。
步骤S38:若所述当前纸币识别模块为工作状态,且所述日志缓存区的日志消息大于等于最大预置字节,读取日志缓存区全部的日志消息。
步骤S38执行完毕之后,执行步骤S39。
步骤S39:把读取的日志消息同步写入到所述物理存储器中。
步骤S40:把读取的日志消息写入NandFlash中。
优选地,步骤S39与步骤S40没有先后顺序,也可以先执行步骤S40,再执行步骤S39,或者是步骤S39与步骤S40同时进行。
步骤S40执行完毕之后,返回执行步骤S32。
优选地,若在写入日志的过程中出现退出消息,如异常掉电消息、复位消息或关机消息等,系统将继续写入日志消息,阻塞等待日志队列中的退出消息,待日志消息写入完毕之后,进入退出流程,退出系统,并把所有日志缓存区中的日志消息同步到物理存储器中,防止日志消息的丢失。
本实施例,通过获取当前纸币识别模块的状态,根据不同的状态采取不同的方法从日志缓存区中读取日志消息写入NandFlash中,在不影响系统实时性的情况下,把日志消息完整记录在现金识别模块的NandFlash,并把日志消息同步写入到所述物理存储器中,只使用NandFlash作为日志存储单元,实现简单、成本低;日志消息只存储在NandFlash,避免了通讯和转存的风险,安全度高;从设计原则上来讲,只在空闲状态和退出状态进行日志存储,不影响系统实时性,资源利用率高。
以下是本发明具体实施方式中提供的一种现金识别模块的日志存储系统的实施例,日志存储系统的实施例基于上述的日志存储方法的实施例实现,在日志存储系统中未尽的描述,请参考前述日志存储方法的实施例。
请参考图4,本发明具体实施方式中提供的一种现金识别模块的日志存储系统的第一实施例的结构方框图。如图所示,该日志存储系统,包括:
接收模块41,接收日志消息,把所述日志消息写入日志缓存区;
获取模块42,获取当前纸币识别模块的状态;
写入模块43,若所述当前纸币识别模块为空闲状态,则从日志缓存区中读取日志消息写入NandFlash中;若所述当前纸币识别模块为工作状态,且所述日志缓存区的日志消息大于等于最大预置字节,则从日志缓存区中读取日志消息写入NandFlash中。
优选地,所述获取当前纸币识别模块的状态,包括,通过命令状态机获取当前现金识别模块的状态;
所述若所述当前纸币识别模块为空闲状态,则从日志缓存区中读取日志消息写入NandFlash中,包括:若所述当前纸币识别模块为空闲状态,计算出写入日志空间,根据所述写入日志空间从日志缓存区中读取日志消息,把读取的日志消息写入NandFlash中,其中,所述计算出写入日志空间,包括:
通过命令状态机查询当前空闲状态持续时间T,单位为ms;
计算出写入日志空间:S=((T·X-Bt)/Pt)·Ps;
其中,S为写入日志空间,单位为Byte,X为空闲时间有效利用率调节变量,Bt为系统擦除一个BLOCK所需时间,单位为ms,Pt为系统写一个page所需时间,单位为ms,Ps为一个page的大小,为常量,单位为Byte,T·X为空闲状态的有效持续时间,综上所述,上述公式可以求出空闲状态有效持续时间最多可写入的日志消息。
通过命令状态机查询当前空闲状态持续时间T。X为空闲时间有效利用率调节变量,0<X≤1,具体值根据系统差异进行调节。Ps为一个page的大小,为常量,单位为Byte,系统不同Ps的值也可能有所差异。根据设计,一次写入NandFlash的日志数据量一定小于等于一个BLOCK的空间大小,NandFlash的一个BLOCK的大小通常都在几十K以上,一百多K也非常常见,根据设计,一个工作状态到空闲状态周期不可能产生那么多日志,通常都在1K之内,所以一个BLOCK能充分满足一次写入NandFlash的日志消息。
所述写入日志空间的大小小于等于一个BLOCK的大小;所述有效持续时间大于等于(Bt+Pt),以保证在空闲状态最少可以写入一个page。
所述若所述当前纸币识别模块为工作状态,且确定所述日志缓存区的大小大于等于最大预置字节,则从日志缓存区中读取日志消息写入NandFlash中,包括,若所述当前纸币识别模块为工作状态,确定所述日志缓存区的日志消息大于等于最大预置字节,读取日志缓存区全部的日志消息,把读取的日志消息写入NandFlash中,其中,所述最大预置字节的取值满足:
最大预置字节小于等于一个BLOCK的大小;和
最大预置字节小于等于纸币识别模块异常掉电安全写入日志大小的1/2;和
最大预置字节大于等于一个工作状态到空闲状态周期产生的最大日志量。
根据设计,最大预置字节要同时满足这三个相互制约的条件。
原则上根据设计,工作状态不可能出现日志缓存区大于最大预置字节的情况,如果出现则说明系统设计还不够完善,因为在工作状态写入日志可能会影响到系统的实时性,这里设计这种情况是为程序添加保护流程。最大预置字节小于等于纸币识别模块异常掉电安全写入日志大小的1/2,是因为退出流程与空闲状态、工作状态、写日志流程,处于同一日志处理流程,当正在写日志时,产生了异常掉电、复位或关机等退出事件,这时需要写完日志才能执行退出流程,又因为退出流程也要写日志,所以为保证安全写入所有日志,必须对工作状态和空闲状态写入的日志量做出限制,又因为,最大预置字节大于等于一个工作状态到空闲状态周期产生的最大日志量,所以限制工作状态写入日志的量。此外,这里不考虑外部电源设备的情况,例如UPS(不间断电源)等情况,这里要保证出现异常掉电情况时日志消息能完整安全的写入。
综上所述,本实施例提供的日志存储系统通过接收模块41接收日志消息,把所述日志消息写入日志缓存区;获取模块42获取当前纸币识别模块的状态;写入模块43,若所述当前纸币识别模块为空闲状态,从日志缓存区中读取日志消息写入NandFlash中;若所述当前纸币识别模块为工作状态,则确定所述日志缓存区的日志消息大于等于最大预置字节,从日志缓存区中读取日志消息写入NandFlash中。本实施例提供的日志系统在不影响系统实时性的情况下,把日志消息完整记录在现金识别模块的NandFlash,实现简单、成本低、安全度高、资源利用率高。
请参考图5,本发明具体实施方式中提供的一种现金识别模块的日志存储系统的第二实施例的结构方框图。如图所示,该日志存储系统,包括:
打开模块51,打开日志文件,创建日志等待线程;
阻塞模块52,阻塞等待日志队列中的消息;
优选地,所述阻塞模块52,具体用于检测系统是否有消息生成,并阻塞所述消息在等待日志队列中。
判断模块53,判断所述消息的类型;
退出模块54,若所述消息为退出消息,则当前纸币识别模块的状态为退出状态,执行退出流程;
优选地,所述退出消息包括:异常掉电消息、复位消息和关机消息中的一种或多种;所述退出流程,包括:退出系统,并把所有日志缓存区中的日志消息同步到物理存储器中。
若当前纸币识别模块的状态为退出状态,则退出系统,并把所有日志缓存区中的日志消息同步到物理存储器中,防止日志消息的丢失。
接收模块55,接收日志消息,把所述日志消息写入日志缓存区;
优选地,若判断模块53判断出所述消息为日志消息,则接收模块55接收所述日志消息,并把所述日志消息写入日志缓存区。
获取模块56,获取当前纸币识别模块的状态;
写入模块57,若所述当前纸币识别模块为空闲状态,则从日志缓存区中读取日志消息写入NandFlash中;若所述当前纸币识别模块为工作状态,且所述日志缓存区的日志消息大于等于最大预置字节,则从日志缓存区中读取日志消息写入NandFlash中。
优选地,所述写入模块57把从日志缓存区中读取的日志消息写入NandFlash中,之后,则由阻塞模块52阻塞等待日志队列中的消息,判断模块53判断所述消息的类型,及执行之后的操作。
优选地,若所述当前纸币识别模块为工作状态,且所述日志缓存区的日志消息小于最大预置字节时,则由阻塞模块52阻塞等待日志队列中的消息,判断模块53判断所述消息的类型,及执行之后的操作。
综上所述,本实施例提供的日志存储系统只使用NandFlash作为日志存储单元,实现简单、成本低;日志消息只存储在NandFlash,避免了通讯和转存的风险,安全度高;从设计原则上来讲,只在空闲状态和退出状态进行日志存储,不影响系统实时性,资源利用率高。
以上结合具体实施例描述了本发明的技术原理。这些描述只是为了解释本发明的原理,而不能以任何方式解释为对本发明保护范围的限制。基于此处的解释,本领域的技术人员不需要付出创造性的劳动即可联想到本发明的其它具体实施方式,这些方式都将落入本发明的保护范围之内。
Claims (10)
1.一种纸币识别模块的日志存储方法,其特征在于,包括:
步骤B11,接收日志消息,把所述日志消息写入日志缓存区;
步骤B12,获取当前纸币识别模块的状态;
步骤B13,若所述当前纸币识别模块为空闲状态,则从日志缓存区中读取日志消息写入NandFlash中;若所述当前纸币识别模块为工作状态,且所述日志缓存区的日志消息大于等于最大预置字节,则从日志缓存区中读取日志消息写入NandFlash中。
2.根据权利要求1所述的日志存储方法,其特征在于:
所述若所述当前纸币识别模块为空闲状态,则从日志缓存区中读取日志消息写入NandFlash中,包括:若所述当前纸币识别模块为空闲状态,计算出写入日志空间,根据所述写入日志空间从日志缓存区中读取日志消息,把读取的日志消息写入NandFlash中,其中,所述计算出写入日志空间,包括:
通过命令状态机查询当前空闲状态持续时间T,单位为ms;
计算出写入日志空间:S=((T·X-Bt)/Pt)·Ps;
其中,S为写入日志空间,单位为Byte,X为空闲时间有效利用率调节变量,Bt为系统擦除一个BLOCK所需时间,单位为ms,Pt为系统写一个page所需时间,单位为ms,Ps为一个page的大小,为常量,单位为Byte,T·X为空闲状态的有效持续时间;
所述写入日志空间的大小小于等于一个BLOCK的大小;所述有效持续时间大于等于(Bt+Pt);
所述若所述当前纸币识别模块为工作状态,且确定所述日志缓存区的大小大于等于最大预置字节,则从日志缓存区中读取日志消息写入NandFlash中,包括:若所述当前纸币识别模块为工作状态,确定所述日志缓存区的日志消息大于等于最大预置字节,读取日志缓存区全部的日志消息,把读取的日志消息写入NandFlash中,其中,所述最大预置字节的取值满足:
最大预置字节小于等于一个BLOCK的大小;和
最大预置字节小于等于纸币识别模块异常掉电安全写入日志大小的1/2;和
最大预置字节大于等于一个工作状态到空闲状态周期产生的最大日志量。
3.根据权利要求1所述的日志存储方法,其特征在于,所述接收日志消息之前,还包括:
步骤A11,打开日志文件,创建日志等待线程;
步骤A12,阻塞等待日志队列中的消息;
步骤A13,判断所述消息的类型,若所述消息为日志消息,则执行步骤B11;若所述消息为退出消息,则当前纸币识别模块的状态为退出状态,执行退出流程。
4.根据权利要求3所述的日志存储方法,其特征在于,所述退出消息包括:异常掉电消息、复位消息和关机消息中的一种或多种;所述退出流程,包括:退出系统,并把所有日志缓存区中的日志消息同步到物理存储器中;
所述获取当前纸币识别模块的状态,包括,通过命令状态机获取当前现金识别模块的状态。
5.根据权利要求3所述的日志存储方法,其特征在于,所述步骤B12之后,还包括,若所述当前纸币识别模块为工作状态,且所述日志缓存区的日志消息小于最大预置字节时,则返回执行步骤A12。
6.根据权利要求2所述的日志存储方法,其特征在于,所述根据所述写入日志空间从日志缓存区中读取日志消息之后,还包括,把读取的日志消息同步写入到所述物理存储器中;
所述读取日志缓存区全部的日志消息之后,还包括,把读取的日志消息同步写入到所述物理存储器中。
7.根据权利要求4所述的日志存储方法,其特征在于,所述步骤B13执行完毕之后,则返回执行步骤A12。
8.一种纸币识别模块的日志存储系统,其特征在于,所述日志存储系统包括:
接收模块,接收日志消息,把所述日志消息写入日志缓存区;
获取模块,获取当前纸币识别模块的状态;
写入模块,若所述当前纸币识别模块为空闲状态,则从日志缓存区中读取日志消息写入NandFlash中;若所述当前纸币识别模块为工作状态,且所述日志缓存区的日志消息大于等于最大预置字节,则从日志缓存区中读取日志消息写入NandFlash中。
9.根据权利要求8所述的日志存储系统,其特征在于,所述获取当前纸币识别模块的状态,包括,通过命令状态机获取当前现金识别模块的状态;
所述若所述当前纸币识别模块为空闲状态,则从日志缓存区中读取日志消息写入NandFlash中,包括,若所述当前纸币识别模块为空闲状态,计算出写入日志空间,根据所述写入日志空间从日志缓存区中读取日志消息,把读取的日志消息写入NandFlash中,其中,所述计算出写入日志空间,包括:
通过命令状态机查询当前空闲状态持续时间T,单位为ms;
计算出写入日志空间:S=((T·X-Bt)/Pt)·Ps;
其中,S为写入日志空间,单位为Byte,X为空闲时间有效利用率调节变量,Bt为系统擦除一个BLOCK所需时间,单位为ms,Pt为系统写一个page所需时间,单位为ms,Ps为一个page的大小,为常量,单位为Byte,T·X为空闲状态的有效持续时间;
所述写入日志空间的大小小于等于一个BLOCK的大小;所述有效持续时间大于等于(Bt+Pt);
所述若所述当前纸币识别模块为工作状态,且确定所述日志缓存区的大小大于等于最大预置字节,则从日志缓存区中读取日志消息写入NandFlash中,包括,若所述当前纸币识别模块为工作状态,确定所述日志缓存区的日志消息大于等于最大预置字节,读取日志缓存区全部的日志消息,把读取的日志消息写入NandFlash中,其中,所述最大预置字节的取值满足:
最大预置字节小于等于一个BLOCK的大小;和
最大预置字节小于等于纸币识别模块异常掉电安全写入日志大小的1/2;和
最大预置字节大于等于一个工作状态到空闲状态周期产生的最大日志量。
10.根据权利要求8所述的日志存储系统,其特征在于,所述日志存储系统,还包括:
打开模块,打开日志文件,创建日志等待线程;
阻塞模块,阻塞等待日志队列中的消息;
判断模块,判断所述消息的类型;
退出模块,若所述消息为退出消息,则当前纸币识别模块的状态为退出状态,执行退出流程,所述退出消息包括:异常掉电消息、复位消息和关机消息中的一种或多种;所述退出流程,包括:退出系统,并把所有日志缓存区中的日志消息同步到物理存储器中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510638575.0A CN105183626B (zh) | 2015-09-30 | 2015-09-30 | 一种纸币识别模块的日志存储方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510638575.0A CN105183626B (zh) | 2015-09-30 | 2015-09-30 | 一种纸币识别模块的日志存储方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105183626A true CN105183626A (zh) | 2015-12-23 |
CN105183626B CN105183626B (zh) | 2018-03-02 |
Family
ID=54905718
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510638575.0A Expired - Fee Related CN105183626B (zh) | 2015-09-30 | 2015-09-30 | 一种纸币识别模块的日志存储方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105183626B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106504402A (zh) * | 2016-11-08 | 2017-03-15 | 深圳怡化电脑股份有限公司 | 日志信息记录方法及装置 |
CN108205422A (zh) * | 2016-12-19 | 2018-06-26 | 北京君正集成电路股份有限公司 | 一种存储方法及装置 |
CN108804295A (zh) * | 2017-04-28 | 2018-11-13 | 北京京东尚科信息技术有限公司 | 日志信息记录方法和装置 |
CN109117339A (zh) * | 2017-06-26 | 2019-01-01 | 北京京东尚科信息技术有限公司 | 一种日志数据保存的方法和系统 |
CN114973500A (zh) * | 2021-02-26 | 2022-08-30 | 深圳怡化电脑股份有限公司 | 金融终端机芯日志传输方法、装置、电子设备和介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101788948A (zh) * | 2010-02-05 | 2010-07-28 | 瑞斯康达科技发展股份有限公司 | 一种日志信息的动态存储系统及方法 |
JP2011059874A (ja) * | 2009-09-08 | 2011-03-24 | Ricoh Co Ltd | 情報処理装置 |
CN103176888A (zh) * | 2011-12-22 | 2013-06-26 | 阿里巴巴集团控股有限公司 | 一种日志记录的方法和系统 |
CN103544097A (zh) * | 2013-10-21 | 2014-01-29 | 广东威创视讯科技股份有限公司 | 嵌入式系统的日志存储方法、系统及日志读取方法和系统 |
-
2015
- 2015-09-30 CN CN201510638575.0A patent/CN105183626B/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2011059874A (ja) * | 2009-09-08 | 2011-03-24 | Ricoh Co Ltd | 情報処理装置 |
CN101788948A (zh) * | 2010-02-05 | 2010-07-28 | 瑞斯康达科技发展股份有限公司 | 一种日志信息的动态存储系统及方法 |
CN103176888A (zh) * | 2011-12-22 | 2013-06-26 | 阿里巴巴集团控股有限公司 | 一种日志记录的方法和系统 |
CN103544097A (zh) * | 2013-10-21 | 2014-01-29 | 广东威创视讯科技股份有限公司 | 嵌入式系统的日志存储方法、系统及日志读取方法和系统 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106504402A (zh) * | 2016-11-08 | 2017-03-15 | 深圳怡化电脑股份有限公司 | 日志信息记录方法及装置 |
CN108205422A (zh) * | 2016-12-19 | 2018-06-26 | 北京君正集成电路股份有限公司 | 一种存储方法及装置 |
CN108804295A (zh) * | 2017-04-28 | 2018-11-13 | 北京京东尚科信息技术有限公司 | 日志信息记录方法和装置 |
CN109117339A (zh) * | 2017-06-26 | 2019-01-01 | 北京京东尚科信息技术有限公司 | 一种日志数据保存的方法和系统 |
CN114973500A (zh) * | 2021-02-26 | 2022-08-30 | 深圳怡化电脑股份有限公司 | 金融终端机芯日志传输方法、装置、电子设备和介质 |
CN114973500B (zh) * | 2021-02-26 | 2023-12-22 | 深圳怡化电脑股份有限公司 | 金融终端机芯日志传输方法、装置、电子设备和介质 |
Also Published As
Publication number | Publication date |
---|---|
CN105183626B (zh) | 2018-03-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105183626A (zh) | 一种纸币识别模块的日志存储方法及系统 | |
CN104541256B (zh) | 智能远存储器带宽缩放 | |
KR102249416B1 (ko) | 메모리 시스템 및 메모리 시스템의 구동 방법 | |
CN103810112B (zh) | 一种非易失性内存系统及其管理方法 | |
KR102430209B1 (ko) | 저장 장치 및 저장 장치에 포함된 컨트롤러들 | |
CN105302478B (zh) | 一种数据存储方法及电子设备 | |
US11010056B2 (en) | Data operating method, device, and system | |
KR20130002046A (ko) | 멀티 코어를 포함하는 저장 장치의 전력 관리 방법 | |
CN105512056A (zh) | 数据保存方法、装置及终端 | |
CN106708578A (zh) | 基于双线程的日志输出方法及装置 | |
CN103631624A (zh) | 读写请求的处理方法和装置 | |
RU2014126884A (ru) | Запись данных в энергонезависимое запоминающее устройство смарт-карты | |
CN102289414A (zh) | 内存数据保护装置及方法 | |
US10318205B2 (en) | Managing data using a number of non-volatile memory arrays | |
CN105446848B (zh) | 电子设备的数据处理性能的测试方法及装置 | |
CN104199729A (zh) | 一种资源管理方法及系统 | |
US9971522B2 (en) | Memory system and method | |
CN105264608A (zh) | 存储数据的方法、内存控制器和中央处理器 | |
CN103984645A (zh) | 一种基于双控的缓存一致性数据刷写方法 | |
CN105531681A (zh) | 存储装置、存储系统以及存储装置控制方法 | |
CN109871337A (zh) | 一种ssd存储媒介切换方法及其系统 | |
CN105589912A (zh) | 一种利用mram处理频写文件的方法及存储结构 | |
CN102402464A (zh) | 一种智能卡中的存储器的数据擦写方法及智能卡 | |
CN103049221A (zh) | 磁盘阵列缓存刷写处理方法和装置 | |
CN103049218A (zh) | 数据存储方法和控制器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20180302 Termination date: 20210930 |
|
CF01 | Termination of patent right due to non-payment of annual fee |