一種紙幣識別模塊的日志存儲方法及系統(tǒng)的制作方法
【技術(shù)領域】
[0001]本發(fā)明涉及數(shù)據(jù)存儲技術(shù)領域,尤其涉及一種紙幣識別模塊的日志存儲方法及系統(tǒng)。
【背景技術(shù)】
[0002]現(xiàn)金識別模塊是循環(huán)存取款機芯等大型金融設備的核心模塊,現(xiàn)金識別模塊的所有工作信息都要完整的記錄下來。
[0003]現(xiàn)有日志記錄方案有??方案一、日志存儲在如SRAM、DRAM等易失性的隨機存儲器中,由工控機端的應用發(fā)送命令實時的把日志讀到工控機上,以文件的形式進行存儲;方案二、存儲在如MRAM等非易失性的隨機存儲器中,這種方案日志通常以二進制數(shù)據(jù)流的方式順序存在存儲器中,當達到一定的激活條件(如:容量、時間、或特定動作等),則把日志轉(zhuǎn)存到Nand Flash上;方案三、實時寫入Nand Flash。
[0004]但是,現(xiàn)有驗鈔識別模塊的日志存儲方案存在以下缺點:方案一:第一、日志容易丟失,這種方案日志存儲在易失性的存儲器中,一但出現(xiàn)異常掉電(沒有掉電保護電流裝置),通訊接口故障,程序BUG等,都會造成日志丟失;第二、信息安全度不高,現(xiàn)金識別模塊是金融設備最核心的模塊需要嚴格保密,原則上現(xiàn)金識別模塊的日志也只能由公司具備一定權(quán)限客服人員通過專門的工具讀取,所有日志直接存儲在工控機上存在安全隱患;方案二:第一、提高了成本,增加了 MRAM等非易失性存儲器;第二、程序復雜度增加,涉及到日志轉(zhuǎn)存以及在轉(zhuǎn)存過程中故障(如:異常掉電)的處理?’方案三:第三、影響系統(tǒng)實時性,日志實時寫Nand Flash中需要占用較多的系統(tǒng)資源。
【發(fā)明內(nèi)容】
[0005]本發(fā)明提供了一種紙幣識別模塊的日志存儲方法及系統(tǒng),通過獲取當前紙幣識別模塊的狀態(tài),根據(jù)不同的狀態(tài)采取不同的方法從日志緩存區(qū)中讀取日志消息寫入NandFlash中,在不影響系統(tǒng)實時性的情況下,把日志消息完整記錄在現(xiàn)金識別模塊的NandFlash,實現(xiàn)簡單、成本低、安全度高、資源利用率高。
[0006]為實現(xiàn)上述設計,本發(fā)明采用以下技術(shù)方案:
[0007]—方面,提供了一種紙幣識別模塊的日志存儲方法,包括:
[0008]步驟Bll,接收日志消息,把所述日志消息寫入日志緩存區(qū);
[0009]步驟B12,獲取當前紙幣識別模塊的狀態(tài);
[0010]步驟B13,若所述當前紙幣識別模塊為空閑狀態(tài),則從日志緩存區(qū)中讀取日志消息寫入Nand Flash中;若所述當前紙幣識別模塊為工作狀態(tài),且所述日志緩存區(qū)的日志消息大于等于最大預置字節(jié),則從日志緩存區(qū)中讀取日志消息寫入Nand Flash中。
[0011]優(yōu)選地,所述若所述當前紙幣識別模塊為空閑狀態(tài),則從日志緩存區(qū)中讀取日志消息寫入Nand Flash中,包括:若所述當前紙幣識別模塊為空閑狀態(tài),計算出寫入日志空間,根據(jù)所述寫入日志空間從日志緩存區(qū)中讀取日志消息,把讀取的日志消息寫入NandFlash中,其中,所述計算出寫入日志空間,包括:
[0012]通過命令狀態(tài)機查詢當前空閑狀態(tài)持續(xù)時間T,單位為ms ;
[0013]計算出寫入日志空間:S = ((T.X-Bt)/Pt).Ps ;
[0014]其中,S為寫入日志空間,單位為Byte,X為空閑時間有效利用率調(diào)節(jié)變量,Bt為系統(tǒng)擦除一個BLOCK所需時間,單位為ms,Pt為系統(tǒng)寫一個page所需時間,單位為ms,Ps為一個page的大小,為常量,單位為Byte,T.X為空閑狀態(tài)的有效持續(xù)時間;
[0015]所述寫入日志空間的大小小于等于一個BLOCK的大??;所述有效持續(xù)時間大于等于(Bt+Pt);
[0016]所述若所述當前紙幣識別模塊為工作狀態(tài),且確定所述日志緩存區(qū)的大小大于等于最大預置字節(jié),則從日志緩存區(qū)中讀取日志消息寫入Nand Flash中,包括:若所述當前紙幣識別模塊為工作狀態(tài),確定所述日志緩存區(qū)的日志消息大于等于最大預置字節(jié),讀取日志緩存區(qū)全部的日志消息,把讀取的日志消息寫入Nand Flash中,其中,所述最大預置字節(jié)的取值滿足:
[0017]最大預置字節(jié)小于等于一個BLOCK的大??;和
[0018]最大預置字節(jié)小于等于紙幣識別模塊異常掉電安全寫入日志大小的1/2 ;和
[0019]最大預置字節(jié)大于等于一個工作狀態(tài)到空閑狀態(tài)周期產(chǎn)生的最大日志量。
[0020]優(yōu)選地,所述接收日志消息之前,還包括:
[0021]步驟All,打開日志文件,創(chuàng)建日志等待線程;
[0022]步驟A12,阻塞等待日志隊列中的消息;
[0023]步驟A13,判斷所述消息的類型,若所述消息為日志消息,則執(zhí)行步驟Bll ;若所述消息為退出消息,則當前紙幣識別模塊的狀態(tài)為退出狀態(tài),執(zhí)行退出流程。
[0024]優(yōu)選地,所述退出消息包括:異常掉電消息、復位消息和關機消息中的一種或多種;所述退出流程,包括:退出系統(tǒng),并把所有日志緩存區(qū)中的日志消息同步到物理存儲器中;
[0025]所述獲取當前紙幣識別模塊的狀態(tài),包括,通過命令狀態(tài)機獲取當前現(xiàn)金識別模塊的狀態(tài)。
[0026]優(yōu)選地,所述步驟B12之后,還包括,若所述當前紙幣識別模塊為工作狀態(tài),且所述日志緩存區(qū)的日志消息小于最大預置字節(jié)時,則返回執(zhí)行步驟A12。
[0027]優(yōu)選地,所述根據(jù)所述寫入日志空間從日志緩存區(qū)中讀取日志消息之后,還包括,把讀取的日志消息同步寫入到所述物理存儲器中;
[0028]所述讀取日志緩存區(qū)全部的日志消息之后,還包括,把讀取的日志消息同步寫入到所述物理存儲器中。
[0029]優(yōu)選地,所述步驟B13執(zhí)行完畢之后,則返回執(zhí)行步驟A12。
[0030]另一方面,提供了一種紙幣識別模塊的日志存儲系統(tǒng),所述日志存儲系統(tǒng)包括:[0031 ] 接收模塊,接收日志消息,把所述日志消息寫入日志緩存區(qū);
[0032]獲取模塊,獲取當前紙幣識別模塊的狀態(tài);
[0033]寫入模塊,若所述當前紙幣識別模塊為空閑狀態(tài),則從日志緩存區(qū)中讀取日志消息寫入Nand Flash中;若所述當前紙幣識別模塊為工作狀態(tài),且所述日志緩存區(qū)的日志消息大于等于最大預置字節(jié),則從日志緩存區(qū)中讀取日志消息寫入Nand Flash中。
[0034]優(yōu)選地,所述獲取當前紙幣識別模塊的狀態(tài),包括,通過命令狀態(tài)機獲取當前現(xiàn)金識別模塊的狀態(tài);
[0035]所述若所述當前紙幣識別模塊為空閑狀態(tài),則從日志緩存區(qū)中讀取日志消息寫入Nand Flash中,包括,若所述當前紙幣識別模塊為空閑狀態(tài),計算出寫入日志空間,根據(jù)所述寫入日志空間從日志緩存區(qū)中讀取日志消息,把讀取的日志消息寫入Nand Flash中,其中,所述計算出寫入日志空間,包括:
[0036]通過命令狀態(tài)機查詢當前空閑狀態(tài)持續(xù)時間T,單位為ms ;
[0037]計算出寫入日志空間:S = ((T.X-Bt)/Pt).Ps ;
[0038]其中,S為寫入日志空間,單位為Byte,X為空閑時間有效利用率調(diào)節(jié)變量,Bt為系統(tǒng)擦除一個BLOCK所需時間,單位為ms,Pt為系統(tǒng)寫一個page所需時間,單位為ms,Ps為一個page的大小,為常量,單位為Byte,T.X為空閑狀態(tài)的有效持續(xù)時間;
[0039]所述寫入日志空間的大小小于等于一個BLOCK的大??;所述有效持續(xù)時間大于等于(Bt+Pt);
[0040]所述若所述當前紙幣識別模塊為工作狀態(tài),且確定所述日志緩存區(qū)的大小大于等于最大預置字節(jié),則從日志緩存區(qū)中讀取日志消息寫入Nand Flash中,包括,若所述當前紙幣識別模塊為工作狀態(tài),確定所述日志緩存區(qū)的日志消息大于等于最大預置字節(jié),讀取日志緩存區(qū)全部的日志消息,把讀取的日志消息寫入Nand Flash中,其中,所述最大預置字節(jié)的取值滿足:
[0041]最大預置字節(jié)小于等于一個BLOCK的大??;和
[0042]最大預置字節(jié)小于等于紙幣識別模塊異常掉電安全寫入日志大小的1/2 ;和
[0043]最大預置字節(jié)大于等于一個工作狀態(tài)到空閑狀態(tài)周期產(chǎn)生的最大日志量。
[0044]優(yōu)選地,所述日志存儲系統(tǒng),還包括:
[0045]打開模塊,打開日志文件,創(chuàng)建日志等待線程;
[0046]阻塞模塊,阻塞等待日志隊列中的消息;
[0047]判斷模塊,判斷所述消息的類型;
[0048]退出模塊,若所述消息為退出消息,則當前紙幣識別模塊的狀態(tài)為退出狀態(tài),執(zhí)行退出流程,所述退出消息包括:異常掉電消息、復位消息和關機消息中的一種或多種;所述退出流程,包括:退出系統(tǒng),并把所有日志緩存區(qū)中的日志消息同步到物理存儲器中。
[0049]與現(xiàn)有技術(shù)相比,本發(fā)明的有益效果為:一種紙幣識別模塊的日志存儲方法,包括:步驟B11,接收日志消息,把所述日志消息寫入日志緩存區(qū);步驟B12,獲取當前紙幣識別模塊的狀態(tài);步驟B13,若所述當前紙幣識別模塊為空閑狀態(tài),則從日志緩存區(qū)中讀取日志消息寫入Nand Flash中;若所述當前紙幣識別模塊為工作狀態(tài),且所述日志緩存區(qū)的日志消息大于等于最大預置字節(jié),則從日志緩存區(qū)中讀取日志消息