專利名稱:一種嵌入式系統(tǒng)的數(shù)據(jù)收集和還原方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種嵌入式系統(tǒng)的數(shù)據(jù)收集和還原方法,尤其涉及通訊領(lǐng)域中嵌入式網(wǎng)元設(shè)備的配置數(shù)據(jù)以及主備系統(tǒng)的主備同步數(shù)據(jù)的收集和還原方法。
背景技術(shù):
通訊設(shè)備通常都需要有數(shù)據(jù)存儲功能,以保存特定的配置數(shù)據(jù),并在必要的時候把保存的數(shù)據(jù)加載到系統(tǒng)中;而對通信設(shè)備中常見的主備系統(tǒng)來說,其主備數(shù)據(jù)同步功能也需要一種高效可靠的方法將主用設(shè)備上需要同步的數(shù)據(jù)收集起來以便發(fā)送到備用設(shè)備,而備用設(shè)備在收到同步數(shù)據(jù)后要將其還原到系統(tǒng)中。復(fù)雜的系統(tǒng)中往往有多個應(yīng)用模塊,各模塊都有自己的數(shù)據(jù)需要保存或同步;而同一模塊用來保存和用來同步的數(shù)據(jù)也可能不同。而且在部分系統(tǒng)中,各應(yīng)用模塊自己管理自己的內(nèi)部數(shù)據(jù),不希望與提供數(shù)據(jù)收集還原功能的模塊(下稱數(shù)據(jù)收集還原模塊)有過多耦合。
對于數(shù)據(jù)收集、組織及還原,可以有多種方案,需要針對系統(tǒng)的特點,采用最合適的方案,這將直接影響到系統(tǒng)的穩(wěn)定性、性能及可維護性等。
TMS(Tornado for Managed Switches,常用的通信設(shè)備開發(fā)軟件包,WindRiver公司產(chǎn)品)中實現(xiàn)數(shù)據(jù)存儲功能的模塊是NVM+(Non-Volatile Memory,非易失性存儲器)。其實現(xiàn)方式的特點是,待存儲的數(shù)據(jù)作為對象,按照二級鏈表結(jié)構(gòu)進行組織,存放在NVM+模塊緩存中。寫盤的時候一次性的將緩存內(nèi)容寫入flash等存取介質(zhì)中,讀取的時候也是一次性的更新NVM+模塊緩存。NVM+的數(shù)據(jù)存儲格式類似于XML的自解釋型。借以達到數(shù)據(jù)文件在所有的TMS系統(tǒng)中都是適用的目的。NVM+功能強大,通用性好,但是它龐大復(fù)雜且效率低。對于部分嵌入式系統(tǒng),需要的往往是一種輕便的數(shù)據(jù)收集還原模塊,為各應(yīng)用模塊提供一種簡單、高效的方法來實現(xiàn)數(shù)據(jù)收集、還原功能。
針對上述要求,本專利申請?zhí)岢隽艘环N簡潔高效的的數(shù)據(jù)收集和還原方法。由于數(shù)據(jù)的存儲/加載與主備同步數(shù)據(jù)的收集/還原其原理與過程基本相同,因此都可作為本方法的典型應(yīng)用。用本方法實現(xiàn)的數(shù)據(jù)收集還原模塊輕便、高效,可以有效改善系統(tǒng)在數(shù)據(jù)存儲/同步方面的性能。
發(fā)明內(nèi)容
本發(fā)明的目的在于公開一種嵌入式系統(tǒng)的數(shù)據(jù)收集和還原方法,解決使用復(fù)雜的數(shù)據(jù)存儲系統(tǒng)對系統(tǒng)性能造成的不良影響,為系統(tǒng)各應(yīng)用模塊提供簡潔高效、靈活便捷的數(shù)據(jù)配置以及主備同步數(shù)據(jù)的收集、還原功能。
為了實現(xiàn)上述目的,本發(fā)明所述的數(shù)據(jù)收集和還原方法如下數(shù)據(jù)收集還原模塊為使用該模塊的其他應(yīng)用模塊提供數(shù)據(jù)讀寫接口,同時規(guī)定好需要由各應(yīng)用模塊提供的數(shù)據(jù)收集和還原接口的統(tǒng)一形式。各應(yīng)用模塊利用數(shù)據(jù)收集還原模塊提供的數(shù)據(jù)讀寫接口編寫自己的數(shù)據(jù)收集和還原接口函數(shù),并將它們注冊到數(shù)據(jù)收集還原模塊中。數(shù)據(jù)收集還原模塊在收到操作請求時執(zhí)行數(shù)據(jù)收集或還原操作。
具體地講,本發(fā)明公開了一種嵌入式系統(tǒng)的數(shù)據(jù)收集和還原方法,用于嵌入式系統(tǒng)的數(shù)據(jù)收集和還原,該嵌入式系統(tǒng)至少包括數(shù)據(jù)收集還原模塊,為使用該數(shù)據(jù)收集還原模塊的應(yīng)用模塊提供數(shù)據(jù)讀寫接口,并使用該數(shù)據(jù)收集還原模塊的應(yīng)用模塊在數(shù)據(jù)收集還原模塊中注冊自己的收集、還原接口,該方法具體包括(1)該應(yīng)用模塊在該數(shù)據(jù)收集還原模塊的注冊表中注冊;(2)初始化該收集還原模塊的緩沖區(qū);(3)根據(jù)注冊表中的信息,依次調(diào)用各應(yīng)用模塊的數(shù)據(jù)收集函數(shù),將數(shù)據(jù)寫入該收集還原模塊的緩沖區(qū),形成數(shù)據(jù)塊,同時記錄數(shù)據(jù)塊的信息;(4)初始化緩沖區(qū);(5)將數(shù)據(jù)塊的數(shù)據(jù)還原到緩沖區(qū);(6)根據(jù)數(shù)據(jù)中的模塊索引和模塊注冊表中的信息,依次調(diào)用各應(yīng)用模塊的數(shù)據(jù)加載函數(shù),從緩沖區(qū)加載數(shù)據(jù)到應(yīng)用模塊。
所述步驟(2)還包括初始化用來控制讀寫操作的操作控制器。
所述步驟(4)還包括初始化用來控制讀寫操作的操作控制器。
所述步驟(3)之后還包括對數(shù)據(jù)進行數(shù)據(jù)壓縮放入緩沖區(qū)中的壓縮緩沖區(qū),所述步驟(6)之前還包括解壓縮數(shù)據(jù),將壓縮緩沖區(qū)的數(shù)據(jù)解壓縮至數(shù)據(jù)緩沖區(qū)。
所述的嵌入式系統(tǒng)的數(shù)據(jù)收集和還原方法,所述步驟(3)之后還包括保存數(shù)據(jù)到數(shù)據(jù)文件,其中數(shù)據(jù)文件分為兩部分,前面是文件頭,后面是數(shù)據(jù)區(qū),文件頭里包括版本號、校驗和、數(shù)據(jù)區(qū)數(shù)據(jù)長度和壓縮標(biāo)志信息。
所述步驟(5)之后還包括(61)打開數(shù)據(jù)文件;(62)根據(jù)文件頭中的壓縮標(biāo)志,確定將文件數(shù)據(jù)區(qū)的數(shù)據(jù)讀入內(nèi)部數(shù)據(jù)緩沖區(qū)或是壓縮緩沖區(qū);(63)根據(jù)模塊索引及數(shù)據(jù)對象中記錄的信息,對數(shù)據(jù)合法性進行校驗。
所述步驟(3)之后還包括將數(shù)據(jù)交給主備同步模塊,步驟(5)中,由主備同步模塊執(zhí)行將數(shù)據(jù)塊的數(shù)據(jù)還原到緩沖區(qū)。
所述的嵌入式系統(tǒng)的數(shù)據(jù)收集和還原方法,還包括根據(jù)模塊索引及數(shù)據(jù)對象中記錄的信息,對數(shù)據(jù)合法性進行校驗。
本發(fā)明的有益效果在實際使用中,采用本發(fā)明所述方法取代NVM+實現(xiàn)數(shù)據(jù)存儲與主備同步,系統(tǒng)資源占用量有所下降,數(shù)據(jù)存取效率明顯提高,特別是系統(tǒng)啟動(含加載數(shù)據(jù)的過程)比原先快了數(shù)倍。而且由于模塊內(nèi)部對數(shù)據(jù)存取過程增加了校驗,使一些編碼錯誤在開發(fā)中得以及時發(fā)現(xiàn)和避免。
圖1是應(yīng)用模塊的數(shù)據(jù)收集/還原功能的注冊示意圖;圖2是數(shù)據(jù)緩沖區(qū)的數(shù)據(jù)格式;圖3是壓縮緩沖區(qū)的數(shù)據(jù)格式;圖4是數(shù)據(jù)文件存儲格式;圖5是數(shù)據(jù)存儲這種典型應(yīng)用中數(shù)據(jù)保存過程的流程圖;圖6是數(shù)據(jù)存儲這種典型應(yīng)用中數(shù)據(jù)加載過程的流程圖;圖7是數(shù)據(jù)同步這種典型應(yīng)用中數(shù)據(jù)收集過程的流程圖;圖8是數(shù)據(jù)同步這種典型應(yīng)用中數(shù)據(jù)還原過程的流程圖;圖9是本發(fā)明的流程圖。
具體實施例方式
本發(fā)明所述的數(shù)據(jù)收集和還原方法如下,見圖9,首先該應(yīng)用模塊在該數(shù)據(jù)收集還原模塊的注冊表中注冊(901);然后進行收集和還原過程。
其中收集數(shù)據(jù)的過程1.初始化緩沖區(qū)(902);2.根據(jù)注冊表中的信息,依次調(diào)用各應(yīng)用模塊的數(shù)據(jù)收集函數(shù),將數(shù)據(jù)按特定方式寫入緩沖區(qū),同時記錄數(shù)據(jù)塊的信息,最終在緩沖區(qū)中形成非壓縮格式的數(shù)據(jù)塊(903)3.對上一步處理得到的數(shù)據(jù)塊進行壓縮并放到壓縮緩沖區(qū)形成壓縮格式的數(shù)據(jù)塊(若為非壓縮模式,則沒有這個步驟)。
還原數(shù)據(jù)的過程1.初始化緩沖區(qū);2.將待還原數(shù)據(jù)讀到緩沖區(qū)中(若待還原數(shù)據(jù)為壓縮格式,則讀入壓縮緩沖區(qū);若未非壓縮格式,則讀入數(shù)據(jù)緩沖區(qū))(904);3.解壓縮數(shù)據(jù)到數(shù)據(jù)緩沖區(qū)(若為非壓縮模式,則沒有這個步驟)4.根據(jù)數(shù)據(jù)中的模塊索引和模塊注冊表中的信息,依次調(diào)用各應(yīng)用模塊的數(shù)據(jù)加載函數(shù),將數(shù)據(jù)還原到應(yīng)用模塊(905)。
上述方法在不同的場合可以有不同的應(yīng)用,如應(yīng)用到配置數(shù)據(jù)存儲時,是將數(shù)據(jù)收集得到的數(shù)據(jù)塊存儲到文件中,在數(shù)據(jù)加載時從文件中取出該數(shù)據(jù)塊進行還原操作;而應(yīng)用到主備同步時,是將數(shù)據(jù)收集得到的數(shù)據(jù)塊發(fā)送到備機,在備機上進行還原操作。數(shù)據(jù)收集還原模塊為使用該模塊的其他應(yīng)用模塊提供的讀寫接口,說明如下由數(shù)據(jù)收集還原模塊提供讀寫接口,一方面是為了給其他使用者提供基本的數(shù)據(jù)讀寫功能,另一方面是為了對這種數(shù)據(jù)讀寫行為進行規(guī)范,防止各應(yīng)用模塊隨意按自己的方式操作數(shù)據(jù)。這套讀寫接口至少應(yīng)包括以下幾方面的功能1)將一段數(shù)據(jù)寫入數(shù)據(jù)收集還原模塊的緩沖區(qū)。
2)從數(shù)據(jù)收集模塊的緩沖區(qū)讀取一段數(shù)據(jù)。
3)將當(dāng)前作寫入數(shù)據(jù)操作的模塊的相關(guān)信息記錄到緩沖區(qū)中4)獲取當(dāng)前作讀取數(shù)據(jù)操作的模塊的相關(guān)信息每個使用數(shù)據(jù)收集還原模塊的應(yīng)用模塊都要提供一個數(shù)據(jù)收集函數(shù)和一個數(shù)據(jù)還原函數(shù)。數(shù)據(jù)收集還原模塊對這兩個函數(shù)的形式作明確的規(guī)定。在數(shù)據(jù)收集和數(shù)據(jù)還原函數(shù)中調(diào)用數(shù)據(jù)收集還原模塊提供的讀寫接口進行數(shù)據(jù)的讀寫操作。
使用數(shù)據(jù)收集還原模塊的應(yīng)用模塊需要在數(shù)據(jù)收集還原模塊中注冊,注冊時必須提供模塊標(biāo)識、數(shù)據(jù)收集和還原函數(shù)的指針;另外還可以根據(jù)實際需要提供其他信息。圖1為數(shù)據(jù)收集還原模塊注冊功能的一個示例。該例中,每個應(yīng)用模塊的注冊項包含模塊標(biāo)示、模塊名、數(shù)據(jù)收集函數(shù)指針和數(shù)據(jù)還原函數(shù)指針?biāo)捻棥?br>
圖2說明了數(shù)據(jù)收集還原模塊內(nèi)部數(shù)據(jù)緩沖區(qū)的數(shù)據(jù)格式,這也是未壓縮類型的數(shù)據(jù)區(qū)格式。數(shù)據(jù)緩沖區(qū)也分成前后兩部分,前面是模塊索引表,后面是數(shù)據(jù)區(qū)。模塊索引表中存放著模塊總數(shù)和各模塊存儲數(shù)據(jù)的信息,這些信息包括模塊標(biāo)識,模塊名稱,模塊數(shù)據(jù)塊的在文件中的相對偏移量,模塊中數(shù)據(jù)對象的數(shù)量以及模塊數(shù)據(jù)的長度。在保存數(shù)據(jù)過程中,程序調(diào)用各模塊的數(shù)據(jù)收集函數(shù),這個過程也就是在模塊索引中填寫模塊信息以及將數(shù)據(jù)寫入模塊數(shù)據(jù)塊的過程。而在數(shù)據(jù)加載操作時,會根據(jù)模塊索引表中的信息,將各應(yīng)用模塊的數(shù)據(jù)取出的。模塊數(shù)據(jù)區(qū)中存放各模塊的數(shù)據(jù)塊。模塊數(shù)據(jù)塊由一個個數(shù)據(jù)對象組成,每個數(shù)據(jù)對象是一個基本的記錄單元。數(shù)據(jù)對象中可以保存任意內(nèi)容,可以是一個變量,也可以是一組數(shù)據(jù),這由應(yīng)用模塊決定,所謂“記錄單元”是從存儲角度講的,而數(shù)據(jù)對象中的記錄數(shù)字段也正是提供給應(yīng)用模塊用來記錄有關(guān)數(shù)據(jù)對象的額外信息的。
圖3是數(shù)據(jù)收集還原模塊內(nèi)部壓縮緩沖區(qū)的數(shù)據(jù)格式。壓縮緩沖區(qū)由壓縮數(shù)據(jù)信息頭和壓縮數(shù)據(jù)區(qū)組成,信息頭是未經(jīng)壓縮的,里面保存著壓縮數(shù)據(jù)區(qū)的數(shù)據(jù)長度,數(shù)據(jù)屬性以及所使用的壓縮算法標(biāo)志和CRC校驗值;根據(jù)實際應(yīng)用的需要,壓縮數(shù)據(jù)信息頭中還可以增加其他字段以提供更多的信息。數(shù)據(jù)屬性表明當(dāng)前數(shù)據(jù)區(qū)的數(shù)據(jù)種類,通過不同的數(shù)據(jù)屬性代表不同的應(yīng)用場合,比如用數(shù)據(jù)收集還原模塊實現(xiàn)配置數(shù)據(jù)和主備同步兩種應(yīng)用時,可以用兩種不同的數(shù)據(jù)屬性來區(qū)別數(shù)據(jù)塊的類型。之所以有壓縮算法這一字段,是基于可擴展性的考慮,數(shù)據(jù)收集還原模塊可以提供多種壓縮/解壓縮算法供選擇使用,解壓縮時可以根據(jù)壓縮數(shù)據(jù)信息頭中的這個壓縮算法標(biāo)志采用相應(yīng)的解壓縮算法。CRC校驗用來確保壓縮數(shù)據(jù)區(qū)數(shù)據(jù)的正確性和完整性。
數(shù)據(jù)收集還原模塊的一個典型應(yīng)用是數(shù)據(jù)存儲,通常包含數(shù)據(jù)保存和數(shù)據(jù)加載兩種過程。
保存數(shù)據(jù)的過程1)初始化數(shù)據(jù)緩沖區(qū)2)根據(jù)注冊表中的信息,依次調(diào)用各應(yīng)用模塊的數(shù)據(jù)收集函數(shù),將數(shù)據(jù)讀入緩沖區(qū)同時記錄數(shù)據(jù)塊的信息3)壓縮數(shù)據(jù)(若為不壓縮模式,則沒有這個步驟)4)保存數(shù)據(jù)到文件從數(shù)據(jù)文件加載數(shù)據(jù)到應(yīng)用模塊的過程1)初始化數(shù)據(jù)緩沖區(qū)2)從數(shù)據(jù)文件中讀取數(shù)據(jù)到緩沖區(qū)3)解壓縮數(shù)據(jù)(若為不壓縮模式,則沒有這個步驟)4)根據(jù)數(shù)據(jù)區(qū)的模塊索引和模塊注冊表中的信息,依次調(diào)用各應(yīng)用模塊的數(shù)據(jù)加載函數(shù),從緩沖區(qū)加載數(shù)據(jù)到應(yīng)用模塊圖4說明了在數(shù)據(jù)存儲這種典型應(yīng)用中,將數(shù)據(jù)存儲到文件系統(tǒng)時的文件格式。數(shù)據(jù)文件包括兩大部分,前面是文件頭,后面是數(shù)據(jù)區(qū)。文件頭里有版本號,校驗和,數(shù)據(jù)區(qū)數(shù)據(jù)長度和壓縮標(biāo)志等信息。版本號表明數(shù)據(jù)文件的版本,是兼容性方面的考慮,以便將來數(shù)據(jù)文件升級時程序能夠區(qū)分是哪種文件格式;校驗和使程序能夠檢驗數(shù)據(jù)文件是否受損;壓縮標(biāo)志表明后面數(shù)據(jù)區(qū)的數(shù)據(jù)是否經(jīng)過壓縮,壓縮和未壓縮兩種情況下數(shù)據(jù)區(qū)的數(shù)據(jù)存放方式不同(參考圖2和圖3的說明)。
圖5描述了在數(shù)據(jù)存儲這種典型應(yīng)用中,數(shù)據(jù)保存的處理流程。數(shù)據(jù)收集還原模塊首先初始化其內(nèi)部數(shù)據(jù)緩沖區(qū)及用來控制讀寫操作的操作控制器(步驟501);然后遍歷模塊注冊表(圖1),依次調(diào)用各模塊注冊的數(shù)據(jù)收集函數(shù),每個模塊的數(shù)據(jù)收集函數(shù)都會利用數(shù)據(jù)收集還原模塊提供的數(shù)據(jù)讀寫接口將數(shù)據(jù)寫入數(shù)據(jù)緩沖區(qū)(步驟502,503)。接下來,根據(jù)數(shù)據(jù)收集還原模塊的工作模式,對數(shù)據(jù)緩沖區(qū)的數(shù)據(jù)進行處理,如果要求壓縮,則調(diào)用壓縮算法,壓縮數(shù)據(jù)放入壓縮緩沖區(qū)(步驟504)。最后將數(shù)據(jù)緩沖區(qū)或壓縮緩沖區(qū)的數(shù)據(jù)存入文件(步驟505)。
圖6描述了在數(shù)據(jù)存儲這種典型應(yīng)用中,數(shù)據(jù)加載的處理流程。數(shù)據(jù)收集還原模塊首先初始化其內(nèi)部數(shù)據(jù)緩沖區(qū)及用來控制讀寫操作的操作控制器(步驟601);然后打開數(shù)據(jù)文件,根據(jù)文件頭中的壓縮標(biāo)志,確定將文件數(shù)據(jù)區(qū)的數(shù)據(jù)讀入內(nèi)部數(shù)據(jù)緩沖區(qū)或是壓縮緩沖區(qū);對放入壓縮緩沖區(qū)的壓縮數(shù)據(jù),還要執(zhí)行解壓縮操作將數(shù)據(jù)解壓至內(nèi)部數(shù)據(jù)緩沖區(qū),解壓縮算法由壓縮信息頭中的壓縮算法指明(步驟603)。接下來,數(shù)據(jù)收集還原模塊根據(jù)數(shù)據(jù)緩沖區(qū)模塊索引表中的模塊信息,調(diào)用模塊注冊表(圖1)中相應(yīng)模塊的數(shù)據(jù)還原函數(shù),加載本模塊數(shù)據(jù)。在加載數(shù)據(jù)過程中,會根據(jù)模塊索引及數(shù)據(jù)對象中記錄的信息,對數(shù)據(jù)合法性進行校驗,如發(fā)現(xiàn)異常,則給出警告。當(dāng)索引表中所有模塊的數(shù)據(jù)都已加載完成時,這個數(shù)據(jù)加載過程結(jié)束。
數(shù)據(jù)收集還原模塊的另一個典型應(yīng)用是主備數(shù)據(jù)同步,通常包含主機數(shù)據(jù)收集和備機數(shù)據(jù)還原兩個過程。
收集主備同步數(shù)據(jù)的過程(主機上進行)1)初始化數(shù)據(jù)緩沖區(qū)2)根據(jù)模塊注冊表中的信息,依次調(diào)用各應(yīng)用模塊的數(shù)據(jù)收集函數(shù),將數(shù)據(jù)讀入緩沖區(qū)同時記錄數(shù)據(jù)塊的信息3)壓縮數(shù)據(jù)(若為不壓縮模式,則沒有這個步驟)4)將準(zhǔn)備好的同步數(shù)據(jù)交給主備同步模塊同步數(shù)據(jù)還原過程(備機上進行)1)初始化數(shù)據(jù)緩沖區(qū)2)由主備同步模塊將同步數(shù)據(jù)寫入緩沖區(qū)3)解壓縮數(shù)據(jù)(若設(shè)為不壓縮模式,則沒有這個步驟)4)根據(jù)數(shù)據(jù)區(qū)的模塊索引和和注冊表中的信息,依次調(diào)用各應(yīng)用模塊的數(shù)據(jù)還原函數(shù),從緩沖區(qū)加載同步數(shù)據(jù)到應(yīng)用模塊圖7描述了在主備數(shù)據(jù)同步這種典型應(yīng)用中,主機收集同步數(shù)據(jù)的處理流程。數(shù)據(jù)收集還原模塊首先初始化其內(nèi)部數(shù)據(jù)緩沖區(qū)及用來控制讀寫操作的操作控制器(步驟701);然后遍歷模塊注冊表(圖1),依次調(diào)用各模塊注冊的數(shù)據(jù)收集函數(shù),每個模塊的數(shù)據(jù)收集函數(shù)都會利用數(shù)據(jù)收集還原模塊提供的數(shù)據(jù)讀寫接口將數(shù)據(jù)寫入數(shù)據(jù)緩沖區(qū)(步驟702,703)。接下來,根據(jù)數(shù)據(jù)收集還原模塊的工作模式,對數(shù)據(jù)緩沖區(qū)的數(shù)據(jù)進行處理,如果要求壓縮,則調(diào)用壓縮算法,壓縮數(shù)據(jù)放入壓縮緩沖區(qū)(步驟704)。最后將數(shù)據(jù)緩沖區(qū)或壓縮緩沖區(qū)的數(shù)據(jù)交給主備同步模塊(步驟705)。
圖8描述了在主備數(shù)據(jù)同步這種典型應(yīng)用中,備機還原同步數(shù)據(jù)的處理流程。數(shù)據(jù)收集還原模塊首先初始化其內(nèi)部數(shù)據(jù)緩沖區(qū)及用來控制讀寫操作的操作控制器(步驟801);備機主備同步模塊通過數(shù)據(jù)收集還原模塊提供的接口獲得其緩沖區(qū)指針,根據(jù)同步數(shù)據(jù)的壓縮標(biāo)志,確定將文件數(shù)據(jù)區(qū)的數(shù)據(jù)讀入內(nèi)部數(shù)據(jù)緩沖區(qū)或是壓縮緩沖區(qū);對放入壓縮緩沖區(qū)的壓縮數(shù)據(jù),還要執(zhí)行解壓縮操作將數(shù)據(jù)解壓至內(nèi)部數(shù)據(jù)緩沖區(qū),解壓縮算法由壓縮信息頭中的壓縮算法指明(步驟803)。接下來,數(shù)據(jù)收集還原模塊根據(jù)數(shù)據(jù)緩沖區(qū)模塊索引表中的模塊信息,調(diào)用模塊注冊表(圖1)中相應(yīng)模塊的數(shù)據(jù)還原函數(shù),還原本模塊數(shù)據(jù)。在還原數(shù)據(jù)過程中,會根據(jù)模塊索引及數(shù)據(jù)對象中記錄的信息,對數(shù)據(jù)合法性進行校驗,如發(fā)現(xiàn)異常,則給出警告。當(dāng)索引表中所有模塊的數(shù)據(jù)都已還原完成時,備機同步數(shù)據(jù)還原過程結(jié)束。
權(quán)利要求
1.一種嵌入式系統(tǒng)的數(shù)據(jù)收集和還原方法,用于嵌入式系統(tǒng)的數(shù)據(jù)收集和還原,其特征在于,該嵌入式系統(tǒng)至少包括數(shù)據(jù)收集還原模塊,為使用該數(shù)據(jù)收集還原模塊的應(yīng)用模塊提供數(shù)據(jù)讀寫接口,并使用該數(shù)據(jù)收集還原模塊的應(yīng)用模塊在數(shù)據(jù)收集還原模塊中注冊自己的收集、還原接口,該方法包括收集和還原兩大步驟,其中收集步驟包括(1)該應(yīng)用模塊在該數(shù)據(jù)收集還原模塊的注冊表中注冊;(2)初始化該收集還原模塊的緩沖區(qū);(3)根據(jù)注冊表中的信息,依次調(diào)用各應(yīng)用模塊的數(shù)據(jù)收集函數(shù),將數(shù)據(jù)寫入該收集還原模塊的緩沖區(qū),形成數(shù)據(jù)塊,同時記錄數(shù)據(jù)塊的信息;還原步驟包括(4)初始化緩沖區(qū);(5)將數(shù)據(jù)塊的數(shù)據(jù)還原到緩沖區(qū);(6)根據(jù)數(shù)據(jù)中的模塊索引和模塊注冊表中的信息,依次調(diào)用各應(yīng)用模塊的數(shù)據(jù)加載函數(shù),從緩沖區(qū)加載數(shù)據(jù)到應(yīng)用模塊。
2.如權(quán)利要求1所述的嵌入式系統(tǒng)的數(shù)據(jù)收集和還原方法,其特征在于,所述步驟(2)還包括初始化用來控制讀寫操作的操作控制器。
3.如權(quán)利要求2所述的嵌入式系統(tǒng)的數(shù)據(jù)收集和還原方法,其特征在于,所述步驟(4)還包括初始化用來控制讀寫操作的操作控制器。
4.如權(quán)利要求1所述的嵌入式系統(tǒng)的數(shù)據(jù)收集和還原方法,其特征在于,所述步驟(3)之后還包括對數(shù)據(jù)進行數(shù)據(jù)壓縮放入緩沖區(qū)中的壓縮緩沖區(qū),所述步驟(6)之前還包括解壓縮數(shù)據(jù),將壓縮緩沖區(qū)的數(shù)據(jù)解壓縮至數(shù)據(jù)緩沖區(qū)。
5.如權(quán)利要求1或4所述的嵌入式系統(tǒng)的數(shù)據(jù)收集和還原方法,其特征在于,所述步驟(3)之后還包括保存數(shù)據(jù)到數(shù)據(jù)文件,其中數(shù)據(jù)文件分為兩部分,前面是文件頭,后面是數(shù)據(jù)區(qū),文件頭里包括版本號、校驗和、數(shù)據(jù)區(qū)數(shù)據(jù)長度和壓縮標(biāo)志信息。
6.如權(quán)利要求5所述的嵌入式系統(tǒng)的數(shù)據(jù)收集和還原方法,其特征在于,所述步驟(5)之后還包括(61)打開數(shù)據(jù)文件;(62)根據(jù)文件頭中的壓縮標(biāo)志,確定將文件數(shù)據(jù)區(qū)的數(shù)據(jù)讀入內(nèi)部數(shù)據(jù)緩沖區(qū)或是壓縮緩沖區(qū);(63)根據(jù)模塊索引及數(shù)據(jù)對象中記錄的信息,對數(shù)據(jù)合法性進行校驗。
7.如權(quán)利要求1或4所述的嵌入式系統(tǒng)的數(shù)據(jù)收集和還原方法,其特征在于,所述步驟(3)之后還包括將數(shù)據(jù)交給主備同步模塊,步驟(5)中,由主備同步模塊執(zhí)行將數(shù)據(jù)塊的數(shù)據(jù)還原到緩沖區(qū)。
8.如權(quán)利要求7所述的嵌入式系統(tǒng)的數(shù)據(jù)收集和還原方法,其特征在于,還包括根據(jù)模塊索引及數(shù)據(jù)對象中記錄的信息,對數(shù)據(jù)合法性進行校驗。
全文摘要
本發(fā)明涉及一種嵌入式系統(tǒng)的數(shù)據(jù)收集和還原方法,該嵌入式系統(tǒng)至少包括數(shù)據(jù)收集還原模塊,為使用該數(shù)據(jù)收集還原模塊的應(yīng)用模塊提供數(shù)據(jù)讀寫接口,并使用該數(shù)據(jù)收集還原模塊的應(yīng)用模塊在數(shù)據(jù)收集還原模塊中注冊自己的收集、還原接口,該方法具體包括該應(yīng)用模塊在該數(shù)據(jù)收集還原模塊的注冊表中注冊;初始化該收集還原模塊的緩沖區(qū);根據(jù)注冊表中的信息,依次調(diào)用各應(yīng)用模塊的數(shù)據(jù)收集函數(shù),將數(shù)據(jù)寫入該收集還原模塊的緩沖區(qū),形成數(shù)據(jù)塊,同時記錄數(shù)據(jù)塊的信息;初始化緩沖區(qū);將數(shù)據(jù)塊的數(shù)據(jù)還原到緩沖區(qū);根據(jù)數(shù)據(jù)中的模塊索引和模塊注冊表中的信息,依次調(diào)用各應(yīng)用模塊的數(shù)據(jù)加載函數(shù),從緩沖區(qū)加載數(shù)據(jù)到應(yīng)用模塊。
文檔編號G06F12/00GK1790280SQ200410098939
公開日2006年6月21日 申請日期2004年12月16日 優(yōu)先權(quán)日2004年12月16日
發(fā)明者謝衍, 馮青峰 申請人:中興通訊股份有限公司