專利名稱:一種在不斷電下保存系統(tǒng)數(shù)據(jù)的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及嵌入式設(shè)計(jì)領(lǐng)域,特別涉及一種利用軟件和硬件結(jié)合,實(shí)現(xiàn) 在不斷電下保存系統(tǒng)數(shù)據(jù)的方法。
背景技術(shù):
在嵌入式系統(tǒng)中,基本上以嵌入式硬件系統(tǒng)和嵌入式軟件系統(tǒng)組成。嵌 入式系統(tǒng)的運(yùn)行時長是系統(tǒng)穩(wěn)定性的重要指標(biāo),但即使可靠性再高的嵌入式 系統(tǒng),在實(shí)際運(yùn)行中也會出現(xiàn)一些環(huán)境的問題、設(shè)計(jì)上的缺陷,導(dǎo)致系統(tǒng)復(fù) 位。嵌入式系統(tǒng)一般屬于無人值守的系統(tǒng),出現(xiàn)復(fù)位就需要提供有效的手段, 能夠從相關(guān)信息中分析出來系統(tǒng)屬于哪種復(fù)位、系統(tǒng)復(fù)位前的狀態(tài)如何,進(jìn) 而進(jìn)一步分析,改進(jìn)"&計(jì)。系統(tǒng)復(fù)位的原因多種多樣,有軟件地址異常復(fù)位,無效指令復(fù)位、人工復(fù)位、WATCHDOG溢出復(fù)位、硬件電路異常復(fù)位、電壓異常復(fù)位和斷電復(fù) 位等。絕大部分的復(fù)位是在不斷電情況下進(jìn)行的。為識別和分析復(fù)位原因, 需要在不斷電情況下保存系統(tǒng)狀態(tài)數(shù)據(jù)。在目前的嵌入式系統(tǒng)中, 一般使用同步動態(tài)隨機(jī)存儲器(SDRAM), 這種內(nèi)存在不斷電情況下,短時間內(nèi)不刷新也不會丟失數(shù)據(jù)。因而,可在 SDRAM中劃分出一塊保留內(nèi)存,做信息記錄區(qū),用于保存系統(tǒng)狀態(tài)數(shù)據(jù)。中國專利申請"保持同步動態(tài)隨機(jī)存取存儲器存儲信息的方法"(申請 號03146159.X)是一種不斷電下保存數(shù)據(jù)的方法,但是由于BOOT或BIOS 程序空間有限,功能也比較簡單,故只能輸出比較原始的信息,輸出手段也 比較簡單且可能不可靠, 一般只用串口或網(wǎng)口把重啟前的系統(tǒng)數(shù)據(jù)打印出 來,無法保存。 發(fā)明內(nèi)容本發(fā)明所要解決的技術(shù)問題是提供一種不斷電下保存系統(tǒng)數(shù)據(jù)的方法, 在實(shí)際應(yīng)用系統(tǒng)不斷電重啟后,可以在應(yīng)用系統(tǒng)程序運(yùn)行正常后,可靠地輸 出系統(tǒng)重啟前的系統(tǒng)數(shù)據(jù)。為了解決上述技術(shù)問題,本發(fā)明提供了一種不斷電下保存系統(tǒng)數(shù)椐的方法,應(yīng)用于使用同步動態(tài)隨機(jī)存儲器的嵌入式系統(tǒng),所述同步動態(tài)隨4;u^儲器以下簡稱SDRAM,包括以下步驟(a) 在SDRAM中劃分一塊存儲空間作為信息記錄區(qū);(b) 由應(yīng)用系統(tǒng)程序中的系統(tǒng)數(shù)據(jù)操作程序?qū)⑿枰4娴南到y(tǒng)數(shù)據(jù)存 儲于所述信息記錄區(qū),并對信息記錄區(qū)的進(jìn)行數(shù)據(jù)緩存處理,使系統(tǒng)數(shù)據(jù)能 夠?qū)懭胛锢韮?nèi)存中;(c) 配置所述系統(tǒng)的BOOT程序和應(yīng)用系統(tǒng)程序的內(nèi)存地址范圍,保 證只有所述應(yīng)用系統(tǒng)程序中的系統(tǒng)數(shù)據(jù)操作程序可以對所述信息記錄區(qū)進(jìn)行寫操作;(d) 系統(tǒng)重啟后,在應(yīng)用系統(tǒng)程序正常運(yùn)行后,輸出信息記錄區(qū)的系 統(tǒng)數(shù)據(jù)。進(jìn)一步地,上述方法還可具有以下特點(diǎn)所述步驟(a)中,所述作為 信息記錄區(qū)的存儲空間為 一段物理地址編址最大的物理內(nèi)存。進(jìn)一步地,上述方法還可具有以下特點(diǎn)所述步驟(b)中,所述對信 息記錄區(qū)數(shù)據(jù)緩存的處理采用以下兩種方法之一將所述信息記錄區(qū)的內(nèi)存 屬性配置為不進(jìn)行數(shù)據(jù)緩存,使程序中的寫操作語句可直接操作所述信息記 錄區(qū)的物理內(nèi)存;將所述信息記錄區(qū)的內(nèi)存屬性配置為進(jìn)行數(shù)據(jù)緩存,在所 述信息記錄區(qū)寫入數(shù)據(jù)后,對所述信息記錄區(qū)進(jìn)行數(shù)據(jù)緩存的刷新,強(qiáng)制地 將緩存中的數(shù)據(jù)寫入物理內(nèi)存中。進(jìn)一步地,上述方法還可具有以下特點(diǎn)所述步驟(c)進(jìn)一步包括(cl)配置所述BOOT程序中操作系統(tǒng)管理的內(nèi)存地址范圍,使BOOT 程序中的操作系統(tǒng)不對所述信息記錄區(qū)進(jìn)行寫操作; (c2)配置應(yīng)用系統(tǒng)程序中搡作系統(tǒng)管理的內(nèi)存地址范圍,使應(yīng)用系統(tǒng) 程序中的操作系統(tǒng)不對高端的信息記錄區(qū)進(jìn)行寫操作。進(jìn)一步地,上述方法還可具有以下特點(diǎn)在所述步驟(cl)和(c2)中, 所述配置操作系統(tǒng)管理的內(nèi)存地址范圍分別通過改寫所述BOOT程序和所 述應(yīng)用系統(tǒng)程序中操作系統(tǒng)內(nèi)存管理的相應(yīng)配置程序來完成。進(jìn)一步地,上述方法還可具有以下特點(diǎn)所述步驟(cl)還包括配置 所述BOOT程序中操作系統(tǒng)之外的其它程序,使其不對所述信息記錄區(qū)進(jìn) 行寫操作。進(jìn)一步地,上述方法還可具有以下特點(diǎn)所述步驟(c2)還包括配置 所述應(yīng)用系統(tǒng)程序中操作系統(tǒng)之外的程序,保證只有所述應(yīng)用系統(tǒng)程序中的 系統(tǒng)數(shù)據(jù)操作程序可以對所述信息記錄區(qū)進(jìn)行寫操作。進(jìn)一步地,上述方法還可具有以下特點(diǎn)所述步驟(d)中,在系統(tǒng)正 常運(yùn)行后,將所述信息記錄區(qū)的系統(tǒng)數(shù)據(jù)輸出到操作維護(hù)后臺或輸出設(shè)備。本方法在充分分析嵌入式系統(tǒng)的基礎(chǔ)上,提出了軟件和硬件結(jié)合,實(shí)現(xiàn) 在不斷電下保存系統(tǒng)數(shù)據(jù)的方法,用于無人值守嵌入式系統(tǒng)復(fù)位前的系統(tǒng)數(shù) 據(jù)輸出,以識別和分析復(fù)位原因。本方法可實(shí)現(xiàn)在應(yīng)用系統(tǒng)程序運(yùn)行正常后, 可靠地輸出重啟前的信息。同時本方法也是提高嵌入式系統(tǒng)復(fù)位可測試性設(shè) 計(jì)的一個重要方法。
具體實(shí)施方式
本實(shí)施例通過對實(shí)際運(yùn)行的應(yīng)用系統(tǒng)程序進(jìn)行信息記錄區(qū)的劃分設(shè)置, 使實(shí)際應(yīng)用系統(tǒng)不斷電重啟后,系統(tǒng)正常運(yùn)行后也能輸出系統(tǒng)重啟前的系統(tǒng)數(shù)據(jù)。3G系統(tǒng)由多個嵌入式系統(tǒng)組成,這里以其中一個單板系統(tǒng)為例說明。本實(shí)施例中,這個單板系統(tǒng)有兩個程序BOOT程序和應(yīng)用系統(tǒng)程序。 其中BOOT程序?qū)伟逑到y(tǒng)進(jìn)行部分初始化,并引導(dǎo)應(yīng)用系統(tǒng)程序運(yùn)行, 即通常所述的BOOT版本;應(yīng)用系統(tǒng)程序則是單板系統(tǒng)真正運(yùn)行的程序, 承載著所有的應(yīng)用和功能,即通常所說的系統(tǒng)運(yùn)行版本。這兩個程序都包含 了 VX WORKS操作系統(tǒng)。具體步驟如下步驟110,在SDRAM中劃分一塊存儲空間作為信息記錄區(qū);在本實(shí)施例中劃分了一塊最高端的存儲空間,即物理地址編址最大的物 理內(nèi)存,存儲空間的大小為128K字節(jié)。步驟120,由應(yīng)用系統(tǒng)程序中的系統(tǒng)數(shù)據(jù)操作程序?qū)⑿枰4娴南到y(tǒng)數(shù) 據(jù)存儲于上述信息記錄區(qū)、并對信息記錄區(qū)的進(jìn)行數(shù)據(jù)緩存處理;信息記錄區(qū)數(shù)據(jù)緩存(CACHE)處理,可用下面兩種方法之一(1) 劃分信息記錄區(qū)后,把該記錄區(qū)的內(nèi)存屬性配置為不進(jìn)行數(shù)據(jù)緩 存,使得對于這個記錄區(qū),程序中的寫搡作語句可直接操作記錄區(qū)的物理內(nèi) 存,而不是通常情況下的僅僅操作CACHE。經(jīng)過上述措施,在信息記錄區(qū) 寫入數(shù)據(jù)后,能保證數(shù)據(jù)能夠真正寫入信息記錄區(qū)。(2) 在一般情況下,進(jìn)行數(shù)據(jù)緩存有助于提高CPU效率。對信息記錄 區(qū)進(jìn)行一般的、通用的內(nèi)存屬性配置,即對信息記錄區(qū)進(jìn)行數(shù)據(jù)緩存,在信 息記錄區(qū)寫入數(shù)據(jù)后,對信息記錄區(qū)進(jìn)行數(shù)據(jù)緩存的刷新(只需要一次刷新, 不需要定時刷新),強(qiáng)制地把CACHE中的數(shù)據(jù)轉(zhuǎn)移入(即寫入)物理內(nèi)存 中,保證數(shù)據(jù)能夠真正寫入信息記錄區(qū)?,F(xiàn)代的CPU動態(tài)內(nèi)存系統(tǒng), 一般由高速緩存CACHE和低速主存 SDRAM組成,想要把數(shù)據(jù)寫入SDRAM, 一定需要考慮上述的兩種緩存的 處理方法,才能保證系統(tǒng)數(shù)據(jù)能夠真正寫入SDRAM中的信息記錄區(qū),即確 實(shí)寫入物理內(nèi)存,而不是像程序中的寫操作語句僅僅是操作CACHE。采用將數(shù)據(jù)寫入物理內(nèi)存的處理可以保證物理內(nèi)存中有"要寫入的數(shù) 據(jù)",而SDRAM本身具有的暫態(tài)保持特性(即在不斷電情況下,短時間內(nèi) 不刷新也不會丟失數(shù)據(jù))可以保證SDRAM中的內(nèi)存數(shù)據(jù)在重啟前后保持不 變,因此在系統(tǒng)不斷電重啟時物理內(nèi)存中的系統(tǒng)數(shù)據(jù)不會丟失。步驟130 ,在BOOT程序中配置操作系統(tǒng)管理的內(nèi)存地址范圍,使BOOT 程序中的操作系統(tǒng)不對高端的信息記錄區(qū)進(jìn)行寫操作;配置操作系統(tǒng)管理的內(nèi)存地址范圍通過改寫B(tài)OOT程序中搡作系統(tǒng)內(nèi) 存管理的相應(yīng)配置程序來完成。同時也需要保證BOOT程序中除操作系統(tǒng)外的其它部分不對上述信息 記錄區(qū)進(jìn)行寫操作,所述其它部分通常指板支撐包程序。 一般來說,其它部 分的程序不會操作內(nèi)存管理沒有配置的內(nèi)存,但根據(jù)實(shí)際的情況可能有不 同,比如這些程序有可能不是從操作系統(tǒng)內(nèi)存管理中去獲得內(nèi)存地址段,而 直接獲得一個絕對的內(nèi)存地址段,這樣的絕對內(nèi)存地址段可能會在信息記錄 區(qū),為了避免這一點(diǎn),因此需要改寫程序。步驟140,在應(yīng)用系統(tǒng)程序中配置操作系統(tǒng)管理的內(nèi)存地址范圍,保證 只有應(yīng)用系統(tǒng)程序中的系統(tǒng)數(shù)據(jù)操作程序可以對設(shè)定好的信息記錄區(qū)進(jìn)行 寫操作;配置操作系統(tǒng)管理的內(nèi)存地址范圍是通過改寫應(yīng)用系統(tǒng)程序中操作系 統(tǒng)內(nèi)存管理的相應(yīng)配置程序來完成的。對應(yīng)用系統(tǒng)程序中操作系統(tǒng)以外的程序(這部分程序通常是板支撐包、 驅(qū)動)也需要配置,使其不對所述信息記錄區(qū)進(jìn)行寫搡作,以保證只有應(yīng)用 系統(tǒng)程序中的系統(tǒng)數(shù)據(jù)操作程序可以對設(shè)定好的信息記錄區(qū)進(jìn)行寫操作。步驟150,系統(tǒng)重啟后,在應(yīng)用系統(tǒng)程序正常運(yùn)行后,系統(tǒng)數(shù)據(jù)操作程 序把信息記錄區(qū)的系統(tǒng)數(shù)據(jù)輸出到操作維護(hù)后臺或輸出設(shè)備。在應(yīng)用系統(tǒng)程序正常運(yùn)行后,可以通過各種手段可靠地輸出重啟前的系 統(tǒng)數(shù)據(jù),包括送往嵌入式系統(tǒng)的操作維護(hù)后臺,并在后臺保存,這一點(diǎn)對于 無人值守的嵌入式系統(tǒng)特別有用。
當(dāng)然,本發(fā)明還可有其他多種實(shí)施例,在不背離本發(fā)明精神及其實(shí)質(zhì)的 情況下,熟悉本領(lǐng)域的技術(shù)人員當(dāng)可根據(jù)本發(fā)明作出各種相應(yīng)的改變和變形,比如應(yīng)用于所有使用SDRAM的嵌入式系統(tǒng)中,也可以應(yīng)用以上流程; 比如劃分的信息記錄區(qū)的范圍在物理地址中的位置不限于本實(shí)施例中物理 地址編址最大的物理內(nèi)存。這些相應(yīng)的改變和變形都應(yīng)屬于本發(fā)明所附的權(quán) 利要求的保護(hù)范圍。
權(quán)利要求
1、 一種不斷電下保存系統(tǒng)數(shù)據(jù)的方法,應(yīng)用于使用同步動態(tài)隨機(jī)存儲器的嵌入式系統(tǒng),所迷同步動態(tài)隨機(jī)存儲器以下簡稱SDRAM,包括以下歩 驟(a) 在SDRAM中劃分一塊存儲空間作為信息記錄區(qū);(b) 由應(yīng)用系統(tǒng)程序中的系統(tǒng)數(shù)據(jù)操作程序?qū)⑿枰4娴南到y(tǒng)數(shù)據(jù)存 儲于所述信息記錄區(qū),并對信息記錄區(qū)的進(jìn)行數(shù)據(jù)緩存處理,使系統(tǒng)數(shù)據(jù)能 夠?qū)懭胛锢韮?nèi)存中;(c) 配置所迷系統(tǒng)的BOOT程序和應(yīng)用系統(tǒng)程序的內(nèi)存地址范圍,保 證只有所述應(yīng)用系統(tǒng)程序中的系統(tǒng)數(shù)據(jù)操作程序可以對所述信息記錄區(qū)進(jìn) 行寫操作;(d) 系統(tǒng)重啟后,在應(yīng)用系統(tǒng)程序正常運(yùn)行后,輸出信息記錄區(qū)的系 統(tǒng)數(shù)據(jù)。
2、 如權(quán)利要求l所述的方法,其特征在于,所述步驟(a)中,所述作 為信息記錄區(qū)的存儲空間為一段物理地址編址最大的物理內(nèi)存。
3、 如權(quán)利要求l所述的方法,其特征在于,所述步驟(b)中,所述對 信息記錄區(qū)數(shù)據(jù)緩存的處理采用以下兩種方法之一 將所述信息記錄區(qū)的內(nèi)存屬性配置為不進(jìn)行數(shù)據(jù)緩存,使程序中的寫操 作語句可直接操作所述信息記錄區(qū)的物理內(nèi)存;將所述信息記錄區(qū)的內(nèi)存屬性配置為進(jìn)行數(shù)據(jù)緩存,在所述信息記錄區(qū) 寫入數(shù)據(jù)后,對所述信息記錄區(qū)進(jìn)行數(shù)據(jù)緩存的刷新,強(qiáng)制地將緩存中的數(shù) 據(jù)寫入物理內(nèi)存中。
4、 如權(quán)利要求l所述的方法,其特征在于,所述步驟(c)進(jìn)一步包括(cl )配置所述BOOT程序中操作系統(tǒng)管理的內(nèi)存地址范圍,使BOOT 程序中的操作系統(tǒng)不對所述信息記錄區(qū)進(jìn)行寫操作;(c2)配置應(yīng)用系統(tǒng)程序中操作系統(tǒng)管理的內(nèi)存地址范圍,使應(yīng)用系統(tǒng) 程序中的操作系統(tǒng)不對所述信息記錄區(qū)進(jìn)行寫操作。
5、 如權(quán)利要求5所述的方法,其特征在子,在所述步驟(cl )和(c2) 中,所述配置操作系統(tǒng)管理的內(nèi)存地址范圍分別通過改寫所述BOOT程序 和所述應(yīng)用系統(tǒng)程序中操作系統(tǒng)內(nèi)存管理的相應(yīng)配置程序來完成。
6、 如權(quán)利要求5所述的方法,其特征在于,所述步驟(cl)還包括 配置所述BOOT程序中操作系統(tǒng)之外的其它程序,使其不對所述信息記錄 區(qū)進(jìn)行寫操作。
7、 如權(quán)利要求5所述的方法,其特征在于,所述步驟(c2)還包括 配置所述應(yīng)用系統(tǒng)程序中操作系統(tǒng)之外的程序,保證只有所述應(yīng)用系統(tǒng)程序 中的系統(tǒng)數(shù)據(jù)操作程序可以對所述信息記錄區(qū)進(jìn)行寫操作。
8、 如權(quán)利要求l所述的方法,其特征在于,所述步驟(d)中,在系統(tǒng) 正常運(yùn)行后,將所述信息記錄區(qū)的系統(tǒng)數(shù)據(jù)輸出到操作維護(hù)后臺或輸出設(shè)備。
全文摘要
本發(fā)明公開了一種在不斷電下保存系統(tǒng)數(shù)據(jù)的方法,在系統(tǒng)不斷電重啟后,可在應(yīng)用系統(tǒng)程序運(yùn)行正常后,可靠地輸出系統(tǒng)重啟前的系統(tǒng)數(shù)據(jù)。應(yīng)用于使用SDRAM的嵌入式系統(tǒng),包括以下步驟(a)在SDRAM中劃分一塊存儲空間作為信息記錄區(qū);(b)由應(yīng)用系統(tǒng)程序中的系統(tǒng)數(shù)據(jù)操作程序?qū)⑿枰4娴南到y(tǒng)數(shù)據(jù)存儲于所述信息記錄區(qū),并對信息記錄區(qū)的進(jìn)行數(shù)據(jù)緩存處理,使系統(tǒng)數(shù)據(jù)能夠?qū)懭胛锢韮?nèi)存中;(c)配置所述系統(tǒng)的BOOT程序和應(yīng)用系統(tǒng)程序的內(nèi)存地址范圍,保證只有所述應(yīng)用系統(tǒng)程序中的系統(tǒng)數(shù)據(jù)操作程序可以對所述信息記錄區(qū)進(jìn)行寫操作;(d)系統(tǒng)重啟后,在應(yīng)用系統(tǒng)程序正常運(yùn)行后,輸出信息記錄區(qū)的系統(tǒng)數(shù)據(jù)。
文檔編號G06F9/445GK101122874SQ200610109800
公開日2008年2月13日 申請日期2006年8月11日 優(yōu)先權(quán)日2006年8月11日
發(fā)明者傅仁武, 李雙全 申請人:中興通訊股份有限公司