一種nvram數(shù)據(jù)恢復(fù)方法和裝置制造方法
【專利摘要】本發(fā)明公開了一種NVRAM數(shù)據(jù)恢復(fù)方法和裝置,裝置包括數(shù)據(jù)獲取單元、解鎖單元、擦除單元、寫入單元和上鎖單元,方法包括:S1、若接收到恢復(fù)指令,則讀取終端出廠時的NVRAM默認(rèn)值;S2、設(shè)置NVRAM的讀寫屬性為可讀可寫;S3、擦除NVRAM中存儲的當(dāng)前BIOS配置參數(shù);S4、若擦除成功,則將讀取的NVRAM默認(rèn)值寫入NVRAM中存儲當(dāng)前BIOS配置參數(shù)的區(qū)域;S5、設(shè)置NVRAM的讀寫屬性為只讀。允許終端用戶根據(jù)實際需求決定是否清除NVRAM存儲的當(dāng)前BIOS配置參數(shù)并加載終端出廠時NVRAM默認(rèn)值,操作簡單,效率高,為終端用戶和生產(chǎn)廠家都節(jié)省了費用開支和人力成本。
【專利說明】—種NVRAM數(shù)據(jù)恢復(fù)方法和裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計算機領(lǐng)域,更具體地說,涉及一種NVRAM數(shù)據(jù)恢復(fù)方法和裝置。
【背景技術(shù)】
[0002]計算機開機后在POST (Power On Self-Test,上電自檢)階段用戶通過按特定的熱鍵(比如F2)可進入人機交互的界面-B1S (Basic Input&Output System,基本輸入輸出系統(tǒng))配置菜單。在B1S配置菜單中用戶可以根據(jù)實際需求修改當(dāng)前計算機的硬件參數(shù)(比如內(nèi)存頻率、處理器倍頻、處理器核數(shù)、主顯示設(shè)備類型、引導(dǎo)設(shè)備順序等),然后再按特定的熱鍵(比如F10)保存所做修改并退出B1S配置菜單。系統(tǒng)重啟后,將啟用新設(shè)置的硬件參數(shù)。
[0003]傳統(tǒng)的B1S是把用戶修改的參數(shù)存儲在由RTC (Real Time Clock,實時時鐘)電池供電的CMOS內(nèi),當(dāng)用戶設(shè)置錯誤造成系統(tǒng)不能開機或其它功能異常時,可以通過硬件跳線短接主板上特定的兩個針腳或者拔掉主板RTC電池,實現(xiàn)清除CMOS內(nèi)用戶設(shè)置的參數(shù)并加載機器出廠時CMOS的默認(rèn)值,解決因用戶設(shè)置錯誤而導(dǎo)致的無法正常開機的問題。
[0004]UEFI (Unified Extensible Firmware Interface,統(tǒng)一的可擴展固件接口)作為新一代的固件接口規(guī)范,以一種全新的B1S架構(gòu)逐漸取代了傳統(tǒng)的B1S。UEFI架構(gòu)下,絕大部分的硬件參數(shù)是存儲在NVRAM (Non-Volatile Random Access Memory,非易失性隨機訪問存儲器)中。NVRAM是存儲B1S內(nèi)容的Flash芯片(這種存儲B1S內(nèi)容的Flash芯片通常也被稱為B1S芯片)中特定的一段區(qū)域,是不需要RTC電池供電的。當(dāng)終端用戶修改了B1S選項,修改后的參數(shù)將被存儲在NVRAM中。對于硬件的一些重要參數(shù),例如內(nèi)存頻率、CPU主頻、主顯示設(shè)備類型等,一旦終端用戶的修改出錯,將導(dǎo)致系統(tǒng)不能正常開機、開機不能正常顯示或者鍵盤/鼠標(biāo)不能用等嚴(yán)重問題。由于NVRAM是不需要RTC電池供電的非易失性存儲器,傳統(tǒng)的通過硬件跳線或拔掉主板RTC電池清CMOS的方法將無法清除NVRAM中的錯誤設(shè)置。
[0005]當(dāng)出現(xiàn)上述狀況時,常見的處理方式是讓用戶把出問題的計算機寄回生產(chǎn)廠家,由生產(chǎn)廠家的專業(yè)人員把B1S芯片取下來,通過B1S燒錄器重新燒錄B10S,然后再把B1S芯片焊接到主板上,最后再把修好的計算機寄還給用戶。這無論對生產(chǎn)廠家還是用戶,都是一個麻煩、耗時長、效率低、浪費人力物力的事情。
【發(fā)明內(nèi)容】
[0006]本發(fā)明針對現(xiàn)有技術(shù)的上述缺陷,提供一種NVRAM數(shù)據(jù)恢復(fù)方法和裝置,能夠在接收到恢復(fù)指令時,自動將NVRAM中的數(shù)據(jù)恢復(fù)為正確配置的數(shù)據(jù)。
[0007]本發(fā)明解決其技術(shù)問題采用的技術(shù)方案是:提供一種非易失性隨機訪問存儲器(NVRAM)數(shù)據(jù)恢復(fù)方法,包括以下步驟:
[0008]S1、若接收到恢復(fù)指令,則讀取終端出廠時的NVRAM默認(rèn)值;
[0009]S2、設(shè)置NVRAM的讀寫屬性為可讀可寫;
[0010]S3、擦除NVRAM中存儲的當(dāng)前B1S配置參數(shù);
[0011]S4、若擦除成功,則將讀取的NVRAM默認(rèn)值寫入NVRAM中存儲當(dāng)前B1S配置參數(shù)的區(qū)域;
[0012]S5、設(shè)置NVRAM的讀寫屬性為只讀。
[0013]優(yōu)選地,本發(fā)明的NVRAM數(shù)據(jù)恢復(fù)方法還包括以下步驟:
[0014]S6、在步驟SI和S2之間,將讀取的NVRAM默認(rèn)值保存到第一內(nèi)存區(qū)間。
[0015]優(yōu)選地,本發(fā)明的NVRAM數(shù)據(jù)恢復(fù)方法還包括以下步驟:
[0016]S7、在步驟S4和S5之間,判斷寫入NVRAM中存儲當(dāng)前B1S配置參數(shù)的區(qū)域的NVRAM默認(rèn)值和存儲在所述第一內(nèi)存區(qū)間內(nèi)的NVRAM默認(rèn)值是否相同,若是則執(zhí)行步驟S5,若否則執(zhí)行S3。
[0017]優(yōu)選地,步驟SI包括以下子步驟:
[0018]S11、若接收到恢復(fù)指令,則判斷是否備份了上一次正常啟動時NVRAM中存儲的B1S配置參數(shù),若是則執(zhí)行步驟S13,若否則執(zhí)行步驟S12 ;
[0019]S12、讀取終端出廠時的NVRAM默認(rèn)值,執(zhí)行步驟S3 ;
[0020]S13、設(shè)置NVRAM的讀寫屬性為可讀可寫;
[0021]S14、擦除NVRAM中存儲的當(dāng)前B1S配置參數(shù);
[0022]S15、若擦除成功,則將備份的B1S配置參數(shù)寫入NVRAM中存儲當(dāng)前B1S配置參數(shù)的區(qū)域,執(zhí)行步驟S5。
[0023]優(yōu)選地,步驟SI還包括以下子步驟:
[0024]S16、若備份了上一次正常啟動時NVRAM中存儲的B1S配置參數(shù),則在步驟Sll和S13之間,將備份的B1S配置參數(shù)保存到第二內(nèi)存空間。
[0025]優(yōu)選地,子步驟S15包括以下次級子步驟:
[0026]S151、若擦除成功,則將備份的B1S配置參數(shù)寫入NVRAM中存儲當(dāng)前B1S配置參數(shù)的區(qū)域;
[0027]S152、判斷寫入NVRAM中存儲當(dāng)前B1S配置參數(shù)的區(qū)域的B1S配置參數(shù)和存儲在所述第二內(nèi)存區(qū)間內(nèi)的B1S配置參數(shù)是否相同,若是則執(zhí)行步驟S5,若否則執(zhí)行S14。
[0028]提供一種非易失性隨機訪問存儲器(NVRAM)數(shù)據(jù)恢復(fù)裝置,包括:
[0029]數(shù)據(jù)獲取單元,用于在接收到恢復(fù)指令時,讀取終端出廠時的NVRAM默認(rèn)值;
[0030]解鎖單元,用于設(shè)置NVRAM的讀寫屬性為可讀可寫;
[0031]擦除單元,用于擦除NVRAM中存儲的當(dāng)前B1S配置參數(shù);
[0032]寫入單元,用于在所述擦除單元擦除NVRAM中存儲的當(dāng)前B1S配置參數(shù)成功時,將讀取的NVRAM默認(rèn)值寫入NVRAM中存儲當(dāng)前B1S配置參數(shù)的區(qū)域;
[0033]上鎖單元,用于設(shè)置NVRAM的讀寫屬性為只讀。
[0034]優(yōu)選地,本發(fā)明的NVRAM數(shù)據(jù)恢復(fù)裝置,還包括:
[0035]存儲執(zhí)行單元,用于將讀取的NVRAM默認(rèn)值保存到第一內(nèi)存區(qū)間;
[0036]校驗單元,用于判斷寫入NVRAM中存儲當(dāng)前B1S配置參數(shù)的區(qū)域的NVRAM默認(rèn)值和存儲在所述第一內(nèi)存區(qū)間內(nèi)的NVRAM默認(rèn)值是否相同。
[0037]優(yōu)選地,所述數(shù)據(jù)獲取單元包括:
[0038]判斷模塊,用于在接收到恢復(fù)指令時,判斷是否備份了上一次正常啟動時NVRAM中存儲的B1S配置參數(shù);
[0039]默認(rèn)值獲取模塊,用于在未備份上一次正常啟動時NVRAM中存儲的B1S配置參數(shù)時,讀取終端出廠時的NVRAM默認(rèn)值;
[0040]解鎖模塊,用于在備份了上一次正常啟動時NVRAM中存儲的B1S配置參數(shù)時,設(shè)置NVRAM的讀寫屬性為可讀可寫;
[0041]擦除模塊,用于擦除NVRAM中存儲的當(dāng)前B1S配置參數(shù);
[0042]寫入模塊,用于在所述擦除模塊擦除NVRAM中存儲的當(dāng)前B1S配置參數(shù)成功時,將備份的B1S配置參數(shù)寫入NVRAM中存儲當(dāng)前B1S配置參數(shù)的區(qū)域。
[0043]優(yōu)選地,所述數(shù)據(jù)獲取單元還包括:
[0044]存儲執(zhí)行模塊,用于在備份了上一次正常啟動時NVRAM中存儲的B1S配置參數(shù)時,將備份的B1S配置參數(shù)保存到第二內(nèi)存空間;
[0045]所述寫入模塊包括:
[0046]寫入子模塊,用于在所述擦除模塊擦除NVRAM中存儲的當(dāng)前B1S配置參數(shù)若成功時,將備份的B1S配置參數(shù)寫入NVRAM中存儲當(dāng)前B1S配置參數(shù)的區(qū)域;
[0047]校驗子模塊,用于判斷寫入NVRAM中存儲當(dāng)前B1S配置參數(shù)的區(qū)域的B1S配置參數(shù)和存儲在所述第二內(nèi)存區(qū)間內(nèi)的B1S配置參數(shù)是否相同。
[0048]本發(fā)明的NVRAM數(shù)據(jù)恢復(fù)方法和裝置具有以下有益效果:終端用戶可以根據(jù)實際需求決定是否清除NVRAM存儲的當(dāng)前B1S配置參數(shù)并加載終端出廠時NVRAM默認(rèn)值,只需簡單的操作即可實現(xiàn),避免了終端用戶把出問題的機器寄給生產(chǎn)廠家,生產(chǎn)廠家專業(yè)人員維修好之后再把機器寄回給終端用戶,縮短了解決問題的時間,提高了效率,為終端用戶和生產(chǎn)廠家都節(jié)省了費用開支和人力成本。
[0049]另外,能夠在備份了上一次正常啟動時NVRAM中存儲的B1S配置參數(shù)的情況下,在接收到恢復(fù)指令時,將NVRAM中存儲的當(dāng)前B1S配置參數(shù)恢復(fù)為備份的B1S配置參數(shù)。并且,若恢復(fù)為備份的B1S配置參數(shù)后仍然無法正常啟動時,加載NVRAM默認(rèn)值,以實現(xiàn)正常啟動計算機。
【專利附圖】
【附圖說明】
[0050]圖1為本發(fā)明的NVRAM數(shù)據(jù)恢復(fù)方法第一實施例的流程圖;
[0051]圖2為本發(fā)明的NVRAM數(shù)據(jù)恢復(fù)方法第二實施例的流程圖;
[0052]圖3為本發(fā)明的NVRAM數(shù)據(jù)恢復(fù)裝置第一實施例的功能框圖;
[0053]圖4為本發(fā)明的NVRAM數(shù)據(jù)恢復(fù)裝置第一實施例的工作流程圖;
[0054]圖5為本發(fā)明的NVRAM數(shù)據(jù)恢復(fù)裝置第二實施例中數(shù)據(jù)獲取單元的功能框圖。
【具體實施方式】
[0055]以下結(jié)合附圖和實施例對本發(fā)明做進一步的解釋說明。
[0056]圖1為本發(fā)明的NVRAM數(shù)據(jù)恢復(fù)方法第一實施例的流程圖,如圖1所示,在本實施例中,本發(fā)明的方法包括以下步驟:
[0057]S1、若接收到恢復(fù)指令,則讀取終端出廠時的NVRAM默認(rèn)值;
[0058]S2、設(shè)置NVRAM的讀寫屬性為可讀可寫;
[0059]S3、擦除NVRAM中存儲的當(dāng)前B1S配置參數(shù);
[0060]S4、若擦除成功,則將讀取的NVRAM默認(rèn)值寫入NVRAM中存儲當(dāng)前B1S配置參數(shù)的區(qū)域;
[0061]S5、設(shè)置NVRAM的讀寫屬性為只讀。
[0062]NVRAM具有一定大小的存儲空間(常見的為64KB),存儲空間中的一些區(qū)域用于存儲當(dāng)前的B1S配置參數(shù),另一些區(qū)域用于存儲NVRAM默認(rèn)值和其他數(shù)據(jù)。終端出廠時,NVRAM默認(rèn)值就被存儲在NVRAM存儲空間的一特定區(qū)域中。
[0063]在本實施例中,本發(fā)明的方法是在B1S代碼中添加額外的功能模塊,當(dāng)用戶希望清除NVRAM時,只需觸發(fā)預(yù)定的事件,該事件被B1S偵測到后則會調(diào)用相應(yīng)的功能模塊,實現(xiàn)加載NVRAM默認(rèn)值功能。
[0064]具體的,在步驟SI中,用戶需要在斷掉交流電的狀態(tài)下,例如,用跳帽短接主板上特定的兩個針腳或者通過按下設(shè)置在終端殼體上預(yù)定義的鍵盤/按鍵(/按鈕),用戶的這個操作被終端捕獲,預(yù)定義的恢復(fù)狀態(tài)標(biāo)志位將被置起來。開機時B1S偵測到這個狀態(tài)標(biāo)志位的變化,認(rèn)為接收到了恢復(fù)指令,則從NVRAM的相應(yīng)區(qū)域中讀取NVRAM默認(rèn)值。
[0065]隨后,在步驟S2中,將NVRAM的讀寫屬性為可讀可寫,以解鎖NVRAM。接著,在步驟S3中,擦除NVRAM中存儲當(dāng)前B1S配置參數(shù)的區(qū)域,以清除NVRAM中存儲的當(dāng)前B1S配置參數(shù)。
[0066]在步驟S4中,校驗NVRAM中存儲當(dāng)前B1S配置參數(shù)的區(qū)域是否擦除成功,若成功,則將讀取的NVRAM默認(rèn)值寫入NVRAM中存儲當(dāng)前B1S配置參數(shù)的區(qū)域,從而將當(dāng)前B1S配置參數(shù)(錯誤的配置參數(shù))恢復(fù)為默認(rèn)值。如果未擦除成功,則返回步驟S3重新執(zhí)行擦除,在本發(fā)明的其他實施例當(dāng)中,如果未擦出成功,再返回步驟S3。
[0067]待將當(dāng)前B1S配置參數(shù)恢復(fù)為默認(rèn)值后,在步驟S5中將NVRAM的讀寫屬性設(shè)置為只讀,允許對NVRAM進行讀操作,禁止對NVRAM進行寫操作。
[0068]本發(fā)明的NVRAM數(shù)據(jù)恢復(fù)方法實現(xiàn)了用戶根據(jù)實際需求決定是否清除NVRAM中存儲的當(dāng)前B1S配置參數(shù),并加載NVRAM默認(rèn)值的功能,解決了用戶修改B1S選項或其它原因?qū)е孪到y(tǒng)不能開機、功能異常等問題時,用戶無法清除NVRAM并加載終端出廠時確定可以正常開機運行的NVRAM默認(rèn)值問題。實施本實施例中的NVRAM數(shù)據(jù)恢復(fù)方法,終端用戶可以根據(jù)實際需求決定是否清除NVRAM存儲的當(dāng)前B1S配置參數(shù)并加載終端出廠時NVRAM默認(rèn)值,只需簡單的操作即可實現(xiàn),避免了終端用戶把出問題的機器寄給生產(chǎn)廠家,生產(chǎn)廠家專業(yè)人員維修好之后再把機器寄回給終端用戶,縮短了解決問題的時間,提高了效率,為終端用戶和生產(chǎn)廠家都節(jié)省了費用開支和人力成本。
[0069]圖2為本發(fā)明的NVRAM數(shù)據(jù)恢復(fù)方法第二實施例的流程圖,如圖2所示,本實施例與本發(fā)明的方法的第一實施例的區(qū)別在于,本發(fā)明的方法還包括以下步驟:
[0070]S6、在步驟SI和S2之間,將讀取的NVRAM默認(rèn)值保存到第一內(nèi)存區(qū)間;
[0071]S7、在步驟S4和S5之間,判斷寫入NVRAM中存儲當(dāng)前B1S配置參數(shù)的區(qū)域的NVRAM默認(rèn)值和存儲在所述第一內(nèi)存區(qū)間內(nèi)的NVRAM默認(rèn)值是否相同,若是則執(zhí)行步驟S5,若否則執(zhí)行S3。
[0072]在該實施例中,將從NVRAM中的特定區(qū)域中讀取的NVRAM默認(rèn)值存儲到內(nèi)存中的一動態(tài)存儲區(qū)域(第一內(nèi)存區(qū)間),在加載了 NVRAM默認(rèn)值后,以及對NVRAM上鎖之間,校驗已經(jīng)寫入NVRAM的默認(rèn)值與第一內(nèi)存區(qū)間內(nèi)存儲的默認(rèn)值是否相同,若兩者相同則對NVRAM上鎖,若兩者不相同則回到步驟S3,重新執(zhí)行擦除。準(zhǔn)確地將NVRAM中存儲的當(dāng)前B1S配置參數(shù)恢復(fù)到默認(rèn)值,減少了錯誤的發(fā)生。
[0073]在本發(fā)明的NVRAM數(shù)據(jù)恢復(fù)方法的第三實施例中,該實施例與發(fā)明的方法的第二實施例的區(qū)別在于,步驟SI包括以下子步驟:
[0074]S11、若接收到恢復(fù)指令,則判斷是否備份了上一次正常啟動時NVRAM中存儲的B1S配置參數(shù),若是則執(zhí)行步驟S13,若否則執(zhí)行步驟S12 ;
[0075]S12、讀取終端出廠時的NVRAM默認(rèn)值,執(zhí)行步驟S3 ;
[0076]S13、設(shè)置NVRAM的讀寫屬性為可讀可寫;
[0077]S14、擦除NVRAM中存儲的當(dāng)前B1S配置參數(shù);
[0078]S15、若擦除成功,則將備份的B1S配置參數(shù)寫入NVRAM中存儲當(dāng)前B1S配置參數(shù)的區(qū)域,執(zhí)行步驟S5。
[0079]在本實施例中,在正常啟動計算機后,進入計算機操作系統(tǒng)之前,可以備份NVRAM中存儲的當(dāng)前的B1S配置參數(shù)到NVRAM中一個特定的區(qū)域(異于存儲當(dāng)前B1S配置參數(shù)的區(qū)域以及存儲NVRAM默認(rèn)值的區(qū)域),并將備份數(shù)據(jù)標(biāo)志位置為I。
[0080]在步驟Sll中,當(dāng)接收到恢復(fù)指令時,判斷備份數(shù)據(jù)標(biāo)志位的狀態(tài),若為1,則表示備份了上一次正常啟動時NVRAM中存儲的B1S配置參數(shù),若備份數(shù)據(jù)標(biāo)志位為0,則表示未備份B1S配置參數(shù)。當(dāng)未備份B1S配置參數(shù)時,讀取終端出廠時的NVRAM默認(rèn)值,執(zhí)行步驟 S3-S7。
[0081]考慮到加載備份的B1S配置參數(shù)的正確性,在判斷出備份了 B1S配置參數(shù)時,則執(zhí)行步驟S16,將備份的B1S配置參數(shù)保存到第二內(nèi)存空間,然后執(zhí)行步驟S13。在步驟S13中,將NVRAM的讀寫屬性設(shè)置為可讀可寫,以解鎖NVRAM。隨后,在步驟S14中,擦除NVRAM中存儲當(dāng)前B1S配置參數(shù)的區(qū)域,以清除存儲的當(dāng)前B1S配置參數(shù)。然后,在步驟S15中,校驗擦除是否成功,若不成功則回到步驟S13重新執(zhí)行擦除,若擦除成功,則將備份的B1S配置參數(shù)寫入NVRAM中存儲當(dāng)前B1S配置參數(shù)的區(qū)域,并判斷寫入NVRAM中存儲當(dāng)前B1S配置參數(shù)的區(qū)域的B1S配置參數(shù)和存儲在所述第二內(nèi)存區(qū)間內(nèi)的B1S配置參數(shù)是否相同,若是則執(zhí)行步驟S5以將NVRAM上鎖,若兩者不相同則返回步驟S14,從擦除的工作起重新執(zhí)行。
[0082]另外,經(jīng)過上述步驟在NVRAM中的特定區(qū)域?qū)懭雮浞莸腂1S配置參數(shù)后,計算機仍然無法正常啟動,則讀取終端出廠時的NVRAM默認(rèn)值,執(zhí)行步驟S3-S7。
[0083]本實施例中的NVRAM數(shù)據(jù)恢復(fù)方法,能夠在備份了上一次正常啟動B1S是NVRAM中存儲的B1S配置參數(shù)的情況下,在接收到恢復(fù)指令時,將NVRAM中存儲的當(dāng)前B1S配置參數(shù)恢復(fù)為備份的B1S配置參數(shù)。并且,若恢復(fù)為備份的B1S配置參數(shù)后仍然無法正常啟動時,加載NVRAM默認(rèn)值,以實現(xiàn)正常啟動計算機。
[0084]圖3為本發(fā)明的NVRAM數(shù)據(jù)恢復(fù)裝置300第一實施例的功能框圖,如圖3所示,在本實施例中,本發(fā)明的裝置300包括:
[0085]數(shù)據(jù)獲取單元310,用于在接收到恢復(fù)指令時,讀取終端出廠時的NVRAM默認(rèn)值;
[0086]解鎖單元320,用于設(shè)置NVRAM的讀寫屬性為可讀可寫;
[0087]擦除單元330,用于擦除NVRAM中存儲的當(dāng)前B1S配置參數(shù);
[0088]寫入單元340,用于在擦除單元330擦除NVRAM中存儲的當(dāng)前B1S配置參數(shù)成功時,將讀取的NVRAM默認(rèn)值寫入NVRAM中存儲當(dāng)前B1S配置參數(shù)的區(qū)域;
[0089]上鎖單元350,用于設(shè)置NVRAM的讀寫屬性為只讀;
[0090]存儲執(zhí)行單元360,用于將讀取的NVRAM默認(rèn)值保存到第一內(nèi)存區(qū)間;
[0091]校驗單元370,用于判斷寫入NVRAM中存儲當(dāng)前B1S配置參數(shù)的區(qū)域的NVRAM默認(rèn)值和存儲在所述第一內(nèi)存區(qū)間內(nèi)的NVRAM默認(rèn)值是否相同。
[0092]圖4為本發(fā)明的NVRAM數(shù)據(jù)恢復(fù)裝置300第一實施例的工作流程圖,如圖4所示,當(dāng)接收到恢復(fù)指令時,判斷需要加載NVRAM默認(rèn)值,調(diào)用數(shù)據(jù)獲取單元310從NVRAM的特定區(qū)域讀取終端出廠時的NVRAM默認(rèn)值,并調(diào)用存儲執(zhí)行單元360將讀取的NVRAM默認(rèn)值保存到第一內(nèi)存區(qū)間。然后調(diào)用解鎖單元320,將NVRAM的讀寫屬性設(shè)置為可讀可寫。接著調(diào)用擦除單元330,以擦除NVRAM中存儲當(dāng)前B1S配置參數(shù)的區(qū)域。然后裝置300判斷NVRAM中存儲當(dāng)前B1S配置參數(shù)的區(qū)域是否擦除成功,若是則調(diào)用寫入單元340將讀取的NVRAM默認(rèn)值寫入NVRAM中存儲當(dāng)前B1S配置參數(shù)的區(qū)域,以實現(xiàn)加載NVRAM默認(rèn)值,若擦除不成功再次調(diào)用擦除單元330進行擦除。之后調(diào)用校驗單元370判斷NVRAM中存儲當(dāng)前B1S配置參數(shù)的區(qū)域?qū)懭胧欠癯晒Γ唧w的,校驗單元370判斷寫入NVRAM中存儲當(dāng)前B1S配置參數(shù)的區(qū)域的NVRAM默認(rèn)值和存儲在所述第一內(nèi)存區(qū)間內(nèi)的NVRAM默認(rèn)值是否相同,若兩者相同則校驗成功,若兩者不相同則校驗不成功。若校驗不成功則調(diào)用擦除單元330進行擦除,并重復(fù)運行后續(xù)操作直到NVRAM區(qū)域?qū)懭氤晒?。最后,調(diào)用上鎖單元350,將NVRAM的讀寫屬性設(shè)置為只讀。
[0093]在本發(fā)明的NVRAM數(shù)據(jù)恢復(fù)裝置300第二實施例中,參見圖5,該實施例與本發(fā)明的裝置300第一實施例的區(qū)別在于,數(shù)據(jù)獲取單元310包括:
[0094]判斷模塊311,用于在接收到恢復(fù)指令時,判斷是否備份了上一次正常啟動時NVRAM中存儲的B1S配置參數(shù);
[0095]默認(rèn)值獲取模塊312,用于在未備份上一次正常啟動時NVRAM中存儲的B1S配置參數(shù)時,讀取終端出廠時的NVRAM默認(rèn)值;
[0096]解鎖模塊313,用于在備份了上一次正常啟動時NVRAM中存儲的B1S配置參數(shù)時,設(shè)置NVRAM的讀寫屬性為可讀可寫;
[0097]擦除模塊314,用于擦除NVRAM中存儲的當(dāng)前B1S配置參數(shù);
[0098]寫入模塊315,用于在擦除模塊314擦除NVRAM中存儲的當(dāng)前B1S配置參數(shù)成功時,將備份的B1S配置參數(shù)寫入NVRAM中存儲當(dāng)前B1S配置參數(shù)的區(qū)域。
[0099]在本實施例中,數(shù)據(jù)獲取單元310還包括:
[0100]存儲執(zhí)行模塊316,用于在備份了上一次正常啟動時NVRAM中存儲的B1S配置參數(shù)時,將備份的B1S配置參數(shù)保存到第二內(nèi)存空間;
[0101]寫入模塊315包括:
[0102]寫入子模塊3151,用于在擦除模塊314擦除NVRAM中存儲的當(dāng)前B1S配置參數(shù)若成功時,將備份的B1S配置參數(shù)寫入NVRAM中存儲當(dāng)前B1S配置參數(shù)的區(qū)域;
[0103]校驗子模塊3152,用于判斷寫入NVRAM中存儲當(dāng)前B1S配置參數(shù)的區(qū)域的B1S配置參數(shù)和存儲在第二內(nèi)存區(qū)間內(nèi)的B1S配置參數(shù)是否相同。
[0104]當(dāng)接收到恢復(fù)指令時,調(diào)用判斷模塊311判斷備份數(shù)據(jù)標(biāo)志位的狀態(tài),若為1,則表示備份了上一次正常啟動時NVRAM中存儲的B1S配置參數(shù),若備份數(shù)據(jù)標(biāo)志位為0,則表示未備份B1S配置參數(shù)。當(dāng)未備份B1S配置參數(shù)時,則調(diào)用默認(rèn)值獲取模塊312,讀取終端出廠時的NVRAM默認(rèn)值,裝置300執(zhí)行記載NVRAM默認(rèn)值的工作流程。當(dāng)備份了 B1S配置參數(shù)時,調(diào)用存儲執(zhí)行模塊316,將備份的B1S配置參數(shù)保存到第二內(nèi)存空間。然后調(diào)用解鎖模塊313,將NVRAM的讀寫屬性設(shè)置為可讀可寫。接著調(diào)用擦除模塊314,擦除NVRAM中存儲的當(dāng)前B1S配置參數(shù)。裝置300判斷擦除是否完成,若為完成則繼續(xù)調(diào)用擦除模塊314直到完成擦除工作。完成擦除后,調(diào)用寫入子模塊3151,將備份的B1S配置參數(shù)寫入NVRAM中存儲當(dāng)前B1S配置參數(shù)的區(qū)域。然后調(diào)用校驗子模塊3152,判斷寫入NVRAM中存儲當(dāng)前B1S配置參數(shù)的區(qū)域的B1S配置參數(shù)和存儲在第二內(nèi)存區(qū)間內(nèi)的B1S配置參數(shù)是否相同,若兩者不相同則調(diào)用擦除模塊314執(zhí)行擦除,并執(zhí)行后續(xù)工作直到校驗子模塊3152通過校驗。校驗子模塊3152通過校驗后調(diào)用上鎖單元350,將NVRAM的讀寫屬性設(shè)置為只讀。
[0105]以上所述僅為本發(fā)明的優(yōu)選實施例而已,并不用于限制本發(fā)明,對于本領(lǐng)域的技術(shù)人員來說,本發(fā)明可以有各種更改和變化。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進等,均應(yīng)包含在本發(fā)明的權(quán)利要求范圍之內(nèi)。
【權(quán)利要求】
1.一種非易失性隨機訪問存儲器(NVRAM)數(shù)據(jù)恢復(fù)方法,其特征在于,包括以下步驟: 51、若接收到恢復(fù)指令,則讀取終端出廠時的NVRAM默認(rèn)值; 52、設(shè)置NVRAM的讀寫屬性為可讀可寫; 53、擦除NVRAM中存儲的當(dāng)前B1S配置參數(shù); 54、若擦除成功,則將讀取的NVRAM默認(rèn)值寫入NVRAM中存儲當(dāng)前B1S配置參數(shù)的區(qū)域; 55、設(shè)置NVRAM的讀寫屬性為只讀。
2.根據(jù)權(quán)利要求1所述的NVRAM數(shù)據(jù)恢復(fù)方法,其特征在于,還包括以下步驟: 56、在步驟SI和S2之間,將讀取的NVRAM默認(rèn)值保存到第一內(nèi)存區(qū)間。
3.根據(jù)權(quán)利要求2所述的NVRAM數(shù)據(jù)恢復(fù)方法,其特征在于,還包括以下步驟: 57、在步驟S4和S5之間,判斷寫入NVRAM中存儲當(dāng)前B1S配置參數(shù)的區(qū)域的NVRAM默認(rèn)值和存儲在所述第一內(nèi)存區(qū)間內(nèi)的NVRAM默認(rèn)值是否相同,若是則執(zhí)行步驟S5,若否則執(zhí)行S3。
4.根據(jù)權(quán)利要求1所述的NVRAM數(shù)據(jù)恢復(fù)方法,其特征在于,步驟SI包括以下子步驟: 511、若接收到恢復(fù)指令,則判斷是否備份了上一次正常啟動時NVRAM中存儲的B1S配置參數(shù),若是則執(zhí)行步驟S13,若否則執(zhí)行步驟S12 ; 512、讀取終端出廠時的NVRAM默認(rèn)值,執(zhí)行步驟S3; 513、設(shè)置NVRAM的讀寫屬性為可讀可寫; 514、擦除NVRAM中存儲的當(dāng)前B1S配置參數(shù); 515、若擦除成功,則將備份的B1S配置參數(shù)寫入NVRAM中存儲當(dāng)前B1S配置參數(shù)的區(qū)域,執(zhí)行步驟S5。
5.根據(jù)權(quán)利要求4所述的NVRAM數(shù)據(jù)恢復(fù)方法,其特征在于,步驟SI還包括以下子步驟: 516、若備份了上一次正常啟動時NVRAM中存儲的B1S配置參數(shù),則在步驟Sll和S13之間,將備份的B1S配置參數(shù)保存到第二內(nèi)存空間。
6.根據(jù)權(quán)利要求5所述的NVRAM數(shù)據(jù)恢復(fù)方法,其特征在于,子步驟S15包括以下次級子步驟: 5151、若擦除成功,則將備份的B1S配置參數(shù)寫入NVRAM中存儲當(dāng)前B1S配置參數(shù)的區(qū)域; 5152、判斷寫入NVRAM中存儲當(dāng)前B1S配置參數(shù)的區(qū)域的B1S配置參數(shù)和存儲在所述第二內(nèi)存區(qū)間內(nèi)的B1S配置參數(shù)是否相同,若是則執(zhí)行步驟S5,若否則執(zhí)行S14。
7.一種非易失性隨機訪問存儲器(NVRAM)數(shù)據(jù)恢復(fù)裝置(300),其特征在于,包括: 數(shù)據(jù)獲取單元(310),用于在接收到恢復(fù)指令時,讀取終端出廠時的NVRAM默認(rèn)值; 解鎖單元(320),用于設(shè)置NVRAM的讀寫屬性為可讀可寫; 擦除單元(330),用于擦除NVRAM中存儲的當(dāng)前B1S配置參數(shù); 寫入單元(340),用于在所述擦除單元(330)擦除NVRAM中存儲的當(dāng)前B1S配置參數(shù)成功時,將讀取的NVRAM默認(rèn)值寫入NVRAM中存儲當(dāng)前B1S配置參數(shù)的區(qū)域; 上鎖單元(350),用于設(shè)置NVRAM的讀寫屬性為只讀。
8.根據(jù)權(quán)利要求7所述的NVRAM數(shù)據(jù)恢復(fù)裝置(300),其特征在于,還包括: 存儲執(zhí)行單元(360 ),用于將讀取的NVRAM默認(rèn)值保存到第一內(nèi)存區(qū)間; 校驗單元(370),用于判斷寫入NVRAM中存儲當(dāng)前B1S配置參數(shù)的區(qū)域的NVRAM默認(rèn)值和存儲在所述第一內(nèi)存區(qū)間內(nèi)的NVRAM默認(rèn)值是否相同。
9.根據(jù)權(quán)利要求7所述的NVRAM數(shù)據(jù)恢復(fù)裝置(300),其特征在于,所述數(shù)據(jù)獲取單元(310)包括: 判斷模塊(311),用于在接收到恢復(fù)指令時,判斷是否備份了上一次正常啟動時NVRAM中存儲的B1S配置參數(shù); 默認(rèn)值獲取模塊(312),用于在未備份上一次正常啟動時NVRAM中存儲的B1S配置參數(shù)時,讀取終端出廠時的NVRAM默認(rèn)值; 解鎖模塊(313 ),用于在備份了上一次正常啟動時NVRAM中存儲的B1S配置參數(shù)時,設(shè)置NVRAM的讀寫屬性為可讀可寫; 擦除模塊(314),用于擦除NVRAM中存儲的當(dāng)前B1S配置參數(shù); 寫入模塊(315 ),用于在所述擦除模塊(314 )擦除NVRAM中存儲的當(dāng)前BI OS配置參數(shù)成功時,將備份的B1S配置參數(shù)寫入NVRAM中存儲當(dāng)前B1S配置參數(shù)的區(qū)域。
10.根據(jù)權(quán)利要求9所述的NVRAM數(shù)據(jù)恢復(fù)裝置(300),其特征在于,所述數(shù)據(jù)獲取單元(310)還包括: 存儲執(zhí)行模塊(316),用于在備份了上一次正常啟動時NVRAM中存儲的B1S配置參數(shù)時,將備份的B1S配置參數(shù)保存到第二內(nèi)存空間; 所述寫入模塊(315)包括: 寫入子模塊(3151),用于在所述擦除模塊(314 )擦除NVRAM中存儲的當(dāng)前BI OS配置參數(shù)若成功時,將備份的B1S配置參數(shù)寫入NVRAM中存儲當(dāng)前B1S配置參數(shù)的區(qū)域; 校驗子模塊(3152),用于判斷寫入NVRAM中存儲當(dāng)前B1S配置參數(shù)的區(qū)域的B1S配置參數(shù)和存儲在所述第二內(nèi)存區(qū)間內(nèi)的B1S配置參數(shù)是否相同。
【文檔編號】G06F11/14GK104424047SQ201310364271
【公開日】2015年3月18日 申請日期:2013年8月20日 優(yōu)先權(quán)日:2013年8月20日
【發(fā)明者】郭齊運, 王志棟 申請人:研祥智能科技股份有限公司, 深圳市研祥通軟件有限公司