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