本發(fā)明涉及數(shù)據(jù)保護(hù)和恢復(fù)領(lǐng)域,具體涉及一種掉電保護(hù)的控制方法及系統(tǒng)。
背景技術(shù):在國家“金稅工程”的大背景下,幾年來全國各地都在陸續(xù)推廣稅控收款機(jī)、網(wǎng)絡(luò)開票機(jī)等稅控裝置,以實現(xiàn)發(fā)票開具的機(jī)打和電子化管理。此類產(chǎn)品涉及國家稅收,對機(jī)器內(nèi)數(shù)據(jù)、IC卡內(nèi)數(shù)據(jù)、發(fā)票打印數(shù)據(jù)等的完整性都有很嚴(yán)格的要求。稅控收款機(jī)的國家標(biāo)準(zhǔn)也明確規(guī)定了對發(fā)票數(shù)據(jù)、稅控數(shù)據(jù)需要進(jìn)行掉電保護(hù),并需要實現(xiàn)發(fā)票的斷電續(xù)打。稅控收款機(jī)是一個復(fù)雜的嵌入式計算機(jī)系統(tǒng),通過灌裝了加密算法的稅控IC卡實現(xiàn)數(shù)據(jù)的安全存儲和開票權(quán)限的控制,稅控相關(guān)的業(yè)務(wù)操作都需要與IC卡進(jìn)行相互校驗才能完成,并需要IC卡對數(shù)據(jù)進(jìn)行數(shù)字簽名。所以,所有的稅控業(yè)務(wù)操作都需要進(jìn)行掉電保護(hù),保證機(jī)器與IC卡內(nèi)數(shù)據(jù)的一致性和完整性。網(wǎng)絡(luò)開票機(jī)是稅控收款機(jī)的一類衍生產(chǎn)品,它不使用稅控IC卡,而使用USBKey實現(xiàn)數(shù)據(jù)加密、簽名等安全控制。從上可以看出,稅控收款機(jī)、網(wǎng)絡(luò)開票機(jī)等稅控機(jī)具在發(fā)票分發(fā)、導(dǎo)入,發(fā)票開機(jī)、數(shù)據(jù)申報等業(yè)務(wù)過程中所產(chǎn)生的數(shù)據(jù),需要經(jīng)過稅控IC卡或USBKey內(nèi)置算法的加密或簽名,同時數(shù)據(jù)需要在稅控機(jī)具和IC卡/USBKey中各存儲一份。這些業(yè)務(wù)過程中如果發(fā)生系統(tǒng)突然掉電,若沒有一個完善的保護(hù)和恢復(fù)的技術(shù)方案,很容易出現(xiàn)機(jī)器和IC卡(或USBKey)中數(shù)據(jù)不一致的情況,或者導(dǎo)致機(jī)器數(shù)據(jù)不完整。
技術(shù)實現(xiàn)要素:本發(fā)明所要解決的技術(shù)問題在于提供一種掉電保護(hù)的控制方法及系統(tǒng),以解決機(jī)器突然掉電導(dǎo)致機(jī)器數(shù)據(jù)不完整的問題。為了解決上述問題,本發(fā)明提供了一種掉電保護(hù)的控制方法,包括:系統(tǒng)判斷若主電源掉電,則置位掉電標(biāo)識,并通過備用電源的供電進(jìn)行存儲現(xiàn)場數(shù)據(jù),所述現(xiàn)場數(shù)據(jù)中包括掉電的數(shù)據(jù)、當(dāng)前過程標(biāo)識和掉電標(biāo)識;系統(tǒng)通過存儲的所述現(xiàn)場數(shù)據(jù),對系統(tǒng)進(jìn)行恢復(fù)。進(jìn)一步地,上述方法還可包括:所述當(dāng)前過程標(biāo)識包括當(dāng)前主過程標(biāo)識和該主過程中已經(jīng)完成的子過程標(biāo)識。進(jìn)一步地,上述方法還可包括:所述系統(tǒng)通過存儲的所述現(xiàn)場數(shù)據(jù),對系統(tǒng)進(jìn)行恢復(fù)的步驟,包括:所述系統(tǒng)讀取存儲的所述現(xiàn)場數(shù)據(jù),判斷若掉電標(biāo)識已置位。則提取所述現(xiàn)場數(shù)據(jù)中掉電的數(shù)據(jù)、當(dāng)前主過程標(biāo)識和該主過程中已經(jīng)完成的子過程標(biāo)識,執(zhí)行該當(dāng)前主過程中未完成的子過程,完成對系統(tǒng)進(jìn)行恢復(fù)后,清除掉電標(biāo)識。進(jìn)一步地,上述方法還可包括:所述系統(tǒng)完成存儲現(xiàn)場數(shù)據(jù)和掉電標(biāo)識后,還包括關(guān)斷備用電源的供電。本發(fā)明還提供了一種掉電保護(hù)的控制系統(tǒng),包括:主控制模塊、存儲模塊和備用電源模塊,其中,所述主控制模塊,用于判斷若主電源掉電,則置位掉電標(biāo)識,并通過所述備用電源模塊的供電進(jìn)行存儲現(xiàn)場數(shù)據(jù);通過存儲的所述現(xiàn)場數(shù)據(jù),對系統(tǒng)進(jìn)行恢復(fù);所述存儲模塊,用于存儲現(xiàn)場數(shù)據(jù),所述現(xiàn)場數(shù)據(jù)中包括掉電的數(shù)據(jù)、當(dāng)前過程標(biāo)識和掉電標(biāo)識;所述備用電源模塊,用于提供掉電保護(hù)過程所需的電能。進(jìn)一步地,上述系統(tǒng)還可包括:所述存儲模塊存儲的現(xiàn)場數(shù)據(jù)中所述當(dāng)前過程標(biāo)識包括當(dāng)前主過程標(biāo)識和該主過程中已經(jīng)完成的子過程標(biāo)識。進(jìn)一步地,上述系統(tǒng)還可包括:所述主控制模塊通過存儲的所述現(xiàn)場數(shù)據(jù),對系統(tǒng)進(jìn)行恢復(fù),是指:所述主控制模塊讀取存儲的所述現(xiàn)場數(shù)據(jù),判斷若掉電標(biāo)識已置位。則提取所述現(xiàn)場數(shù)據(jù)中掉電的數(shù)據(jù)、當(dāng)前主過程標(biāo)識和該主過程中已經(jīng)完成的子過程標(biāo)識,執(zhí)行該當(dāng)前主過程中未完成的子過程,完成對系統(tǒng)進(jìn)行恢復(fù)后,清除掉電標(biāo)識。進(jìn)一步地,上述系統(tǒng)還可包括:所述主控制模塊,還用于完成存儲現(xiàn)場數(shù)據(jù)和掉電標(biāo)識后,關(guān)斷備用電源的供電。進(jìn)一步地,上述系統(tǒng)還可包括:所述備用電源模塊為電容元件。與現(xiàn)有技術(shù)相比,應(yīng)用本發(fā)明,解決了機(jī)器突然掉電導(dǎo)致機(jī)器數(shù)據(jù)不完整的問題。本發(fā)明的控制方法不但很好的實現(xiàn)了稅控業(yè)務(wù)的掉電數(shù)據(jù)保護(hù)和開機(jī)恢復(fù),保證了業(yè)務(wù)操作的完整性和機(jī)卡數(shù)據(jù)的一致性,還能很好的實現(xiàn)發(fā)票的斷電續(xù)打。該方法實現(xiàn)簡單、可靠,同時具有較強(qiáng)的通用性,可以應(yīng)用在其他類似的需要做數(shù)據(jù)和過程保護(hù)的系統(tǒng)中。附圖說明圖1為本發(fā)明的掉電保護(hù)的控制方法的流程圖。圖2為本發(fā)明的掉電保護(hù)的控制系統(tǒng)的結(jié)構(gòu)示意圖。具體實施方式下面結(jié)合附圖和具體實施方式對本發(fā)明作進(jìn)一步說明。本發(fā)明的方法可用于稅控裝置的掉電保護(hù),但不限于稅控領(lǐng)域,也可用于其他類似的需要掉電數(shù)據(jù)保護(hù)和恢復(fù)的系統(tǒng)(例如需要現(xiàn)場保護(hù)與開機(jī)恢復(fù)的嵌入式系統(tǒng))中。該控制方法由兩大部分組成:掉電保護(hù)過程和開機(jī)恢復(fù)過程。掉電保護(hù)過程,是在系統(tǒng)發(fā)生斷電時觸發(fā)掉電中斷,在備份電源提供的短時間供電時間內(nèi),將需要保護(hù)的現(xiàn)場信息和數(shù)據(jù)存儲到非易失存儲器如Flash中,之后關(guān)斷備份電源。開機(jī)恢復(fù)過程,是在系統(tǒng)開機(jī)過程中檢測掉電存儲區(qū)的掉電標(biāo)識和現(xiàn)場數(shù)據(jù),根據(jù)掉電保護(hù)過程存儲的現(xiàn)場信息(斷電現(xiàn)場位置、關(guān)鍵數(shù)據(jù)等),跳轉(zhuǎn)到斷電現(xiàn)場用關(guān)鍵數(shù)據(jù)繼續(xù)執(zhí)行,從而使發(fā)生掉電的數(shù)據(jù)操作過程能夠恢復(fù)并正常執(zhí)行完畢,保證了數(shù)據(jù)操作的完整性?;謴?fù)過程中若再次發(fā)生掉電,能再次執(zhí)行保護(hù)過程,即該機(jī)制支持多層嵌套保護(hù)。開機(jī)恢復(fù)過程執(zhí)行完畢后退出,繼續(xù)正常啟動系統(tǒng)。本發(fā)明的控制方法不但很好的實現(xiàn)了稅控業(yè)務(wù)的掉電數(shù)據(jù)保護(hù)和開機(jī)恢復(fù),保證了業(yè)務(wù)操作的完整性和機(jī)卡數(shù)據(jù)的一致性,還能很好的實現(xiàn)發(fā)票的斷電續(xù)打。該方法實現(xiàn)簡單、可靠,同時具有較強(qiáng)的通用性,可以應(yīng)用在其他類似的需要做數(shù)據(jù)和過程保護(hù)的系統(tǒng)中。如圖1所示,本發(fā)明的一種掉電保護(hù)的控制方法,包括:步驟110、系統(tǒng)判斷若主電源掉電,則置位掉電標(biāo)識,并通過備用電源的供電進(jìn)行存儲現(xiàn)場數(shù)據(jù),所述現(xiàn)場數(shù)據(jù)中包括掉電的數(shù)據(jù)、當(dāng)前過程標(biāo)識和掉電標(biāo)識;所述當(dāng)前過程標(biāo)識包括當(dāng)前主過程標(biāo)識和該主過程中已經(jīng)完成的子過程標(biāo)識,其中一個主過程可包括多個子過程。主過程對應(yīng)大的業(yè)務(wù)操作,如初始化、發(fā)票分發(fā)、發(fā)票導(dǎo)入、發(fā)票開具、申報、完稅等,子過程則是主過程具體實現(xiàn)步驟進(jìn)一步的細(xì)分。一個主過程包含多個子過程,每一個子過程是一個最小的原子操作。所謂原子操作就是其執(zhí)行一旦開始就必須完整結(jié)束,不允許被中斷。由“關(guān)掉電中斷”和“開掉電中斷”一對操作包圍起來的一段操作就是原子操作。由此可見,組成一個主過程的各子過程之間才可以響應(yīng)掉電中斷。為保證中斷響應(yīng)的實時性,原子操作越短越好。所述掉電的數(shù)據(jù)為關(guān)鍵數(shù)據(jù),即所處主過程所需的輸入數(shù)據(jù)。步驟120、系統(tǒng)通過存儲的所述現(xiàn)場數(shù)據(jù),對系統(tǒng)進(jìn)行恢復(fù)。所述系統(tǒng)通過存儲的所述現(xiàn)場數(shù)據(jù),對系統(tǒng)進(jìn)行恢復(fù)的步驟,包括:所述系統(tǒng)讀取存儲的所述現(xiàn)場數(shù)據(jù),判斷若掉電標(biāo)識已置位。則提取所述現(xiàn)場數(shù)據(jù)中掉電的數(shù)據(jù)、當(dāng)前主過程標(biāo)識和該主過程中已經(jīng)完成的子過程標(biāo)識,執(zhí)行該當(dāng)前主過程中未完成的子過程,完成對系統(tǒng)進(jìn)行恢復(fù)后,清除掉電標(biāo)識。通過系統(tǒng)恢復(fù)保證了業(yè)務(wù)操作的完整性和機(jī)卡數(shù)據(jù)的一致性,還能很好的實現(xiàn)發(fā)票的斷電續(xù)打。還包括:所述系統(tǒng)完成存儲現(xiàn)場數(shù)據(jù)和掉電標(biāo)識后,還包括關(guān)斷備用電源的供電,以保持其電量。如圖2所示,本發(fā)明還提供了一種掉電保護(hù)的控制系統(tǒng),包括主控制模塊21、存儲模塊22和備用電源模塊23,其中,所述主控制模塊21,用于判斷若主電源掉電,則置位掉電標(biāo)識,并通過所述備用電源模塊23的供電進(jìn)行存儲現(xiàn)場數(shù)據(jù);通過存儲的所述現(xiàn)場數(shù)據(jù),對系統(tǒng)進(jìn)行恢復(fù);所述存儲模塊22,用于存儲現(xiàn)場數(shù)據(jù),所述現(xiàn)場數(shù)據(jù)中包括掉電的數(shù)據(jù)、當(dāng)前過程標(biāo)識和掉電標(biāo)識;所述備用電源模塊23,用于提供掉電保護(hù)過程所需的電能。所述存儲模塊22存儲的現(xiàn)場數(shù)據(jù)中所述當(dāng)前過程標(biāo)識包括當(dāng)前主過程標(biāo)識和該主過程中已經(jīng)完成的子過程標(biāo)識,所述存儲模塊可以包括內(nèi)存RAM和非易失存儲器Flash等。所述主控制模塊通過存儲的所述現(xiàn)場數(shù)據(jù),對系統(tǒng)進(jìn)行恢復(fù),是指:所述主控制模塊讀取存儲的所述現(xiàn)場數(shù)據(jù),判斷若掉電標(biāo)識已置位。則提取所述現(xiàn)場數(shù)據(jù)中掉電的數(shù)據(jù)、當(dāng)前主過程標(biāo)識和該主過程中已經(jīng)完成的子過程標(biāo)識,執(zhí)行該當(dāng)前主過程中未完成的子過程,完成對系統(tǒng)進(jìn)行恢復(fù)后,清除掉電標(biāo)識。所述主控制模塊21,還用于完成存儲現(xiàn)場數(shù)據(jù)和掉電標(biāo)識后,關(guān)斷備用電源的供電。所述備用電源模塊為電容元件,電容元件可以為1-3F的法拉電容(可提供2-3秒的供電)或KuF級別的電解電容(能夠提供待保護(hù)電路穩(wěn)定供電0.5秒以上)等。下面結(jié)合實例對本方法的使用流程進(jìn)行說明。本發(fā)明的實施主要在于所保護(hù)的系統(tǒng)的業(yè)務(wù)軟件的設(shè)計,但也依賴于硬件上的一個備份電源電路,提供掉電保護(hù)過程所需的電能。備用電源電路充放電可以控制,典型的可用1-3F的法拉電容做儲能器件,根據(jù)待保護(hù)的電路的功耗,儲能器件提供2-3秒的供電,即可滿足掉電保護(hù)的需要,并留有較大的余量。待保護(hù)的電路包括CPU、內(nèi)存RAM、非易失存儲器Flash等。一般來說,能夠提供待保護(hù)電路穩(wěn)定供電0.5秒以上(甚至可以更短時間)即可保證掉電保護(hù)功能的正常工作,故儲能器件也可使用KuF級別的電解電容。該電路實現(xiàn)簡單,成本低廉。系統(tǒng)正常工作過程中,主電源給備用電源充電的同時,經(jīng)過備用電源電路后提供CPU、RAM等使用,同時主電源也受CPU監(jiān)控。系統(tǒng)意外斷電時,電源檢測電路給出掉電中斷信號給CPU,同時主電源轉(zhuǎn)由備用電源提供。CPU收到中斷請求后,在備用電源提供的時間內(nèi)完成掉電保護(hù)的現(xiàn)場數(shù)據(jù)存儲等工作。完成現(xiàn)場保護(hù)后,CPU還可以主動關(guān)斷備用電源的供電,以保持其電量。掉電保護(hù)和恢復(fù)過程需要軟件來實現(xiàn)。軟件上,將需要保護(hù)的一個獨立的業(yè)務(wù)操作定義為一個主過程,如發(fā)票分發(fā)主過程、發(fā)票開具主過程、數(shù)據(jù)申報主過程等。每個主過程又根據(jù)其所包含的若干操作步驟,劃分為若干個子過程。給每個主過程、子過程賦予一個唯一的過程編號,如:主過程1,2,..N,1號主過程的子過程11,12,1N等。掉電保護(hù)過程,包括:若干個子過程的順序執(zhí)行構(gòu)成了一個主過程。一個子過程開始時,首先檢查是否已將所處主過程所需的輸入數(shù)據(jù)(關(guān)鍵數(shù)據(jù))保存至掉電數(shù)據(jù)結(jié)構(gòu)體中,如未保存則執(zhí)行保存。之后屏蔽掉電中斷,以保證其原子性;然后將當(dāng)前所處主過程標(biāo)識和子過程標(biāo)識寫入掉電數(shù)據(jù)結(jié)構(gòu)體,并置位掉電標(biāo)識;接下來執(zhí)行子過程操作,操作完畢后打開掉電中斷。這樣,一個完整的子過程操作就執(zhí)行完畢。由于只能在一個子過程的尾部響應(yīng)掉電中斷,故系統(tǒng)發(fā)生掉電進(jìn)行中斷處理時,掉電數(shù)據(jù)結(jié)構(gòu)體中總是已經(jīng)存儲了掉電的關(guān)鍵數(shù)據(jù)、當(dāng)前主過程標(biāo)識、已經(jīng)完成的子過程標(biāo)識以及掉電標(biāo)識,中斷處理可以將掉電數(shù)據(jù)存儲到掉電文件或非易失存儲器Flash的掉電分區(qū),以供開機(jī)恢復(fù)過程使用。如在所有子過程執(zhí)行過程中,未發(fā)生掉電的話,在主過程末尾會清除掉電標(biāo)識,以防止執(zhí)行開機(jī)恢復(fù)。至此,一個完整的主業(yè)務(wù)過程處理完畢。正常執(zhí)行未發(fā)生掉電時,掉電標(biāo)識不會置位,正常操作不受掉電影響;一旦中間環(huán)節(jié)發(fā)生掉電,可以將該時刻的現(xiàn)場信息(關(guān)鍵數(shù)據(jù)、主子過程標(biāo)識、掉電標(biāo)識等)在中斷處理時寫入掉電文件或掉電數(shù)據(jù)區(qū),從而實現(xiàn)完整的掉電現(xiàn)場記錄。開機(jī)恢復(fù)過程,包括:系統(tǒng)開機(jī)初始化過程中,有一步掉電檢查和恢復(fù)的子過程。首先讀取掉電文件或掉電數(shù)據(jù)區(qū)信息,檢查掉電標(biāo)識是否置位。如未置位則跳出該子過程,繼續(xù)執(zhí)行其他初始化步驟;如置位,則繼續(xù)提取掉電的主過程標(biāo)識和子過程標(biāo)識,跳轉(zhuǎn)到相應(yīng)的現(xiàn)場位置,使用關(guān)鍵數(shù)據(jù)完成該主過程剩余子過程的執(zhí)行,從而保證主過程數(shù)據(jù)和操作的完整性,最終保證機(jī)器、IC卡、USBKey內(nèi)數(shù)據(jù)的一致性和完整性。恢復(fù)子過程完成后,繼續(xù)執(zhí)行其他初始化步驟,完成系統(tǒng)正常啟動。以上所述,僅為本發(fā)明較佳的具體實施方式,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉該技術(shù)的人在本發(fā)明所揭露的技術(shù)范圍內(nèi),可輕易想到的變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)該以權(quán)利要求的保護(hù)范圍為準(zhǔn)。