本發(fā)明涉及flash技術(shù)領域,尤其涉及一種flash數(shù)據(jù)備份的使用方法及系統(tǒng)。
背景技術(shù):
在spi(serial peripheral interface,串行外接口)flash寫入速度慢,讀寫過程中存在異常斷電可能會導致使用者重要數(shù)據(jù)損壞。如果損壞的是系統(tǒng)啟動相關的重要數(shù)據(jù)就會出現(xiàn)系統(tǒng)無法啟動。
現(xiàn)有的flash備份技術(shù)包括:方案1:一級備份機制,flash存儲器自身設計或flash使用者采用增加備份數(shù)據(jù)區(qū)的方法,原始數(shù)據(jù)區(qū)損壞就用備份數(shù)據(jù)區(qū),同樣備份數(shù)據(jù)區(qū)損壞就用原始數(shù)據(jù)區(qū);方案2:二級備份機制,flash存儲器自身采用二級備份設計,使用原始數(shù)據(jù)區(qū)、備份數(shù)據(jù)區(qū)以及交換區(qū)三者來進一步保證重要數(shù)據(jù)不被損壞。
但是,現(xiàn)在flash備份技術(shù)具有以下缺點:缺點1:flash存儲器自身采用一級或二級備份機制的自備份技術(shù),在flash總?cè)萘坎蛔兊那闆r下,使用者實際可操作容量必定會減小,可能是成倍甚至是三倍減少,因為每增加一個原始數(shù)據(jù)區(qū)就要增加一個備份數(shù)據(jù)區(qū)甚至再增加一個交換區(qū),而備份數(shù)據(jù)區(qū)和交換區(qū),使用者實際并無法直接操作使用;另外由于spi flash寫入速度慢,這樣每更新一次數(shù)據(jù)都會比普通無自備份技術(shù)的flash耗費兩倍甚至三倍的時間;缺點2:flash使用者采用一級備份機制,有可能flash自身或flash驅(qū)動存在潛在的缺陷導致極小概率的寫入或數(shù)據(jù)校驗異常導致原始和備份數(shù)據(jù)均損壞,在靜電或電壓不穩(wěn)條件下,生產(chǎn)/使用時向flash中寫數(shù)據(jù),也可能會出現(xiàn)寫入的數(shù)據(jù)異常而被破壞;缺點3:目前,市面上的flash存儲器大多是沒有做自備份技術(shù)的,雖有一些flash做過自備份技術(shù),但自備份技術(shù)一般是針對整個flash做的,且由于增加自備份數(shù)據(jù)區(qū)(flash使用者無法直接操作到)無疑會增加使用者成本,基于目前消費類電子價格戰(zhàn)日趨激烈,低成本高利潤無疑是最佳生存之道。
技術(shù)實現(xiàn)要素:
本發(fā)明針對無自備份技術(shù)的flash提供了一種flash數(shù)據(jù)備份的使用方法及系統(tǒng),使用者自行設計分區(qū)規(guī)劃,通過保存在其他分區(qū)中的默認數(shù)據(jù)來保證系統(tǒng)的正常啟動,默認數(shù)據(jù)既不用多占用扇區(qū)又能保證在原始數(shù)據(jù)區(qū)和備份數(shù)據(jù)區(qū)中的數(shù)據(jù)均異常時系統(tǒng)能正常啟動。
為實現(xiàn)上述設計,本發(fā)明采用以下技術(shù)方案:
一方面,提供了一種flash數(shù)據(jù)備份的使用方法,該方法,包括:
判斷原始數(shù)據(jù)區(qū)是否損壞;
若所述原始數(shù)據(jù)區(qū)已損壞,判斷備份數(shù)據(jù)區(qū)是否損壞,若所述備份數(shù)據(jù)區(qū)已損壞,將保存在flash規(guī)劃的其他分區(qū)中的默認數(shù)據(jù)拷貝到所述原始數(shù)據(jù)區(qū)和所述備份數(shù)據(jù)區(qū)中,使用所述默認數(shù)據(jù)啟動系統(tǒng);
所述默認數(shù)據(jù)包括flash的整個或者重要分區(qū)的分區(qū)規(guī)劃、和系統(tǒng)啟動所需的必要數(shù)據(jù);
所述原始數(shù)據(jù)區(qū)、所述備份數(shù)據(jù)區(qū)、及所述flash規(guī)劃的其他分區(qū)所占用的扇區(qū)由使用者預先設計。
其中:
所述判斷原始數(shù)據(jù)區(qū)是否損壞之后,還包括:若所述原始數(shù)據(jù)區(qū)沒有損壞,判斷所述備份數(shù)據(jù)區(qū)是否損壞,若所述備份數(shù)據(jù)區(qū)沒有損壞,使用所述原始數(shù)據(jù)區(qū)中的數(shù)據(jù)啟動系統(tǒng);若所述備份數(shù)據(jù)區(qū)已損壞,將所述原始數(shù)據(jù)區(qū)中的數(shù)據(jù)拷貝到所述備份數(shù)據(jù)區(qū),使用所述原始數(shù)據(jù)區(qū)中的數(shù)據(jù)啟動系統(tǒng);
所述若所述原始數(shù)據(jù)區(qū)已損壞,判斷備份數(shù)據(jù)區(qū)是否損壞之后,還包括:若所述備份數(shù)據(jù)區(qū)沒有損壞,將所述備份數(shù)據(jù)區(qū)中的數(shù)據(jù)拷貝到所述原始數(shù)據(jù)區(qū),使用所述備份數(shù)據(jù)區(qū)中的數(shù)據(jù)啟動系統(tǒng)。
其中,所述其他分區(qū)為啟動數(shù)據(jù)區(qū),所述啟動數(shù)據(jù)區(qū)還保存有設備正常啟動自身所需要的數(shù)據(jù)。
其中:
所述原始數(shù)據(jù)區(qū)中的數(shù)據(jù)包括flash的整個分區(qū)規(guī)劃、和與系統(tǒng)啟動相關的重要數(shù)據(jù);
所述備份數(shù)據(jù)區(qū)中的數(shù)據(jù)包括flash的整個分區(qū)規(guī)劃、和與系統(tǒng)啟動相關的重要數(shù)據(jù)。
其中,所述判斷原始數(shù)據(jù)區(qū)是否損壞之前,還包括:
將所述flash的整個分區(qū)規(guī)劃、和與系統(tǒng)啟動相關的重要數(shù)據(jù)寫入所述原始數(shù)據(jù)區(qū)中;
將所述flash的整個分區(qū)規(guī)劃、和與系統(tǒng)啟動相關的重要數(shù)據(jù)寫入備份數(shù)據(jù)區(qū)中;
將所述flash的整個或者重要分區(qū)的分區(qū)規(guī)劃、和默認數(shù)據(jù)寫入啟動數(shù)據(jù)區(qū)中。
其中,所述判斷原始數(shù)據(jù)區(qū)是否損壞之前,還包括:預先設計flash的整個分區(qū)規(guī)劃,以確定所述原始數(shù)據(jù)區(qū)、所述備份數(shù)據(jù)區(qū)、及所述flash規(guī)劃的其他分區(qū)所占用的扇區(qū)。
其中,所述判斷原始數(shù)據(jù)區(qū)是否損壞之前,還包括:驅(qū)動flash。
第二方面,提供了一種flash數(shù)據(jù)備份的使用系統(tǒng),該系統(tǒng),包括:
第一判斷模塊,用于判斷原始數(shù)據(jù)區(qū)是否損壞;
第二判斷模塊,用于若所述第一判斷模塊判斷出所述原始數(shù)據(jù)區(qū)已損壞,判斷所述備份數(shù)據(jù)區(qū)是否損壞;
第一啟動模塊,用于若所述第二判斷模塊判斷出所述備份數(shù)據(jù)區(qū)已損壞,將保存在flash規(guī)劃的其他分區(qū)中的默認數(shù)據(jù)拷貝到所述原始數(shù)據(jù)區(qū)和所述備份數(shù)據(jù)區(qū)中,使用所述默認數(shù)據(jù)啟動系統(tǒng);
所述默認數(shù)據(jù)包括flash的整個或者重要分區(qū)的分區(qū)規(guī)劃、和系統(tǒng)啟動所需的必要數(shù)據(jù);
所述原始數(shù)據(jù)區(qū)、所述備份數(shù)據(jù)區(qū)、及所述flash規(guī)劃的其他分區(qū)所占用的扇區(qū)由使用者預先設計。
其中,所述系統(tǒng)還包括:
第三判斷模塊,用于若所述第一判斷模塊判斷出所述原始數(shù)據(jù)區(qū)沒有損壞,判斷備份數(shù)據(jù)區(qū)是否損壞;
第二啟動模塊,用于若所述第三判斷模塊判斷出所述備份數(shù)據(jù)區(qū)沒有損壞,使用所述原始數(shù)據(jù)區(qū)中的數(shù)據(jù)啟動系統(tǒng);若所述第三判斷模塊判斷出所述備份數(shù)據(jù)區(qū)已損壞,將所述原始數(shù)據(jù)區(qū)中的數(shù)據(jù)拷貝到所述備份數(shù)據(jù)區(qū),使用所述原始數(shù)據(jù)區(qū)中的數(shù)據(jù)啟動系統(tǒng);
所述第一啟動模塊,還用于若所述第二判斷模塊判斷出所述備份數(shù)據(jù)區(qū)沒有損壞,將所述備份數(shù)據(jù)區(qū)中的數(shù)據(jù)拷貝到所述原始數(shù)據(jù)區(qū),使用所述備份數(shù)據(jù)區(qū)中的數(shù)據(jù)啟動系統(tǒng)。
其中,所述其他分區(qū)為啟動數(shù)據(jù)區(qū),所述啟動數(shù)據(jù)區(qū)還保存有設備正常啟動自身所需要的數(shù)據(jù);
所述原始數(shù)據(jù)區(qū)中的數(shù)據(jù)包括flash的整個分區(qū)規(guī)劃、和與系統(tǒng)啟動相關的重要數(shù)據(jù);
所述備份數(shù)據(jù)區(qū)中的數(shù)據(jù)包括flash的整個分區(qū)規(guī)劃、和與系統(tǒng)啟動相關的重要數(shù)據(jù);
所述系統(tǒng)還包括,寫入模塊;所述寫入模塊用于:
將所述flash的整個分區(qū)規(guī)劃、和與系統(tǒng)啟動相關的重要數(shù)據(jù)寫入所述原始數(shù)據(jù)區(qū)中;
將所述flash的整個分區(qū)規(guī)劃、和與系統(tǒng)啟動相關的重要數(shù)據(jù)寫入備份數(shù)據(jù)區(qū)中;
將所述flash的整個或者重要分區(qū)的分區(qū)規(guī)劃、和默認數(shù)據(jù)寫入啟動數(shù)據(jù)區(qū)中;
所述系統(tǒng)還包括:
設計模塊,用于預先設計flash的整個分區(qū)規(guī)劃,以確定所述原始數(shù)據(jù)區(qū)、所述備份數(shù)據(jù)區(qū)、及所述flash規(guī)劃的其他分區(qū)所占用的扇區(qū);
驅(qū)動模塊,用于驅(qū)動flash。
與現(xiàn)有技術(shù)相比,本發(fā)明的有益效果為:判斷原始數(shù)據(jù)區(qū)是否損壞;若所述原始數(shù)據(jù)區(qū)已損壞,判斷備份數(shù)據(jù)區(qū)是否損壞,若所述備份數(shù)據(jù)區(qū)已損壞,將保存在flash規(guī)劃的其他分區(qū)中的默認數(shù)據(jù)拷貝到所述原始數(shù)據(jù)區(qū)和所述備份數(shù)據(jù)區(qū)中,使用所述默認數(shù)據(jù)啟動系統(tǒng);所述默認數(shù)據(jù)包括flash的整個或者重要分區(qū)的分區(qū)規(guī)劃、和系統(tǒng)啟動所需的必要數(shù)據(jù);所述原始數(shù)據(jù)區(qū)、所述備份數(shù)據(jù)區(qū)、及所述flash規(guī)劃的其他分區(qū)所占用的扇區(qū)由使用者預先設計。本發(fā)明使用者自行設計分區(qū)規(guī)劃,通過使用原始數(shù)據(jù)區(qū)、備份數(shù)據(jù)區(qū)以及保存在其他分區(qū)中的默認數(shù)據(jù)來保證系統(tǒng)的正常啟動,默認數(shù)據(jù)既不用多占用扇區(qū)又能保證在原始數(shù)據(jù)區(qū)和備份數(shù)據(jù)區(qū)中的數(shù)據(jù)均異常時系統(tǒng)能正常啟動,解決了現(xiàn)有技術(shù)中因flash的重要數(shù)據(jù)被損壞而導致系統(tǒng)無法正常啟動從而給flash生產(chǎn)和使用帶來極大不便的問題。
附圖說明
為了更清楚地說明本發(fā)明實施例中的技術(shù)方案,下面將對本發(fā)明實施例描述中所需要使用的附圖作簡單的介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)本發(fā)明實施例的內(nèi)容和這些附圖獲得其他的附圖。
圖1是本發(fā)明具體實施方式中提供的一種flash數(shù)據(jù)備份的使用方法的第一實施例的方法流程圖。
圖2是本發(fā)明具體實施方式中提供的一種flash數(shù)據(jù)備份的使用方法的第二實施例的方法流程圖。
圖3是本發(fā)明具體實施方式中提供的一種flash數(shù)據(jù)備份的使用系統(tǒng)的第一實施例的結(jié)構(gòu)方框圖。
圖4是本發(fā)明具體實施方式中提供的一種flash數(shù)據(jù)備份的使用系統(tǒng)的第二實施例的結(jié)構(gòu)方框圖。
具體實施方式
為使本發(fā)明解決的技術(shù)問題、采用的技術(shù)方案和達到的技術(shù)效果更加清楚,下面將結(jié)合附圖對本發(fā)明實施例的技術(shù)方案作進一步的詳細描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領域技術(shù)人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
請參考圖1,其是本發(fā)明具體實施方式中提供的一種flash數(shù)據(jù)備份的使用方法的第一實施例的方法流程圖。如圖所示,該方法,包括:
步驟S101:判斷原始數(shù)據(jù)區(qū)是否損壞;若所述原始數(shù)據(jù)區(qū)沒有損壞,則繼續(xù)執(zhí)行步驟S102;若所述原始數(shù)據(jù)區(qū)已損壞,則執(zhí)行步驟S105。
進入系統(tǒng)之前,先判斷原始數(shù)據(jù)區(qū)是否損壞,以根據(jù)判斷結(jié)果及進一步的操作決定使用哪個區(qū)的數(shù)據(jù)啟動系統(tǒng)。本實施例針對無自備份技術(shù)的flash,使用者自行設計原始數(shù)據(jù)區(qū)所占用的扇區(qū),所述原始數(shù)據(jù)區(qū)中的數(shù)據(jù)包括flash的整個分區(qū)規(guī)劃、和與系統(tǒng)啟動相關的重要數(shù)據(jù)。原始數(shù)據(jù)區(qū)中的數(shù)據(jù)還可以包括一些環(huán)境相關數(shù)據(jù),具體數(shù)據(jù)由使用者決定。
步驟S102:判斷備份數(shù)據(jù)區(qū)是否損壞,若所述備份數(shù)據(jù)區(qū)沒有損壞,則執(zhí)行步驟S103;若所述備份數(shù)據(jù)區(qū)已損壞,則執(zhí)行步驟S104。
若原始數(shù)據(jù)區(qū)沒有損壞,繼續(xù)判斷備份數(shù)據(jù)區(qū)是否損壞,因為原始數(shù)據(jù)區(qū)與備份數(shù)據(jù)區(qū)互為備份,不管原始數(shù)據(jù)區(qū)是否損壞都需要判斷備份數(shù)據(jù)區(qū)是否損壞,以決定是否需要把原始數(shù)據(jù)區(qū)中的數(shù)據(jù)拷貝到備份數(shù)據(jù)區(qū),或把備份數(shù)據(jù)區(qū)中的數(shù)據(jù)拷貝到原始數(shù)據(jù)區(qū)。
使用者自行設計備份數(shù)據(jù)區(qū)所占用的扇區(qū),所述備份數(shù)據(jù)區(qū)中的數(shù)據(jù)包括flash的整個分區(qū)規(guī)劃、和與系統(tǒng)啟動相關的重要數(shù)據(jù)。原則上,備份數(shù)據(jù)區(qū)中的數(shù)據(jù)與原始數(shù)據(jù)區(qū)中的數(shù)據(jù)相同,備份數(shù)據(jù)區(qū)與原始數(shù)據(jù)區(qū)互為備份。
步驟S103:使用所述原始數(shù)據(jù)區(qū)中的數(shù)據(jù)啟動系統(tǒng)。
若原始數(shù)據(jù)區(qū)沒有損壞,備份數(shù)據(jù)區(qū)也沒有損壞,則使用原始數(shù)據(jù)區(qū)中的數(shù)據(jù)啟動系統(tǒng)。
步驟S104:將所述原始數(shù)據(jù)區(qū)中的數(shù)據(jù)拷貝到所述備份數(shù)據(jù)區(qū),使用所述原始數(shù)據(jù)區(qū)中的數(shù)據(jù)啟動系統(tǒng)。
若原始數(shù)據(jù)區(qū)沒有損壞,但是備份數(shù)據(jù)區(qū)已損壞,則將所述原始數(shù)據(jù)區(qū)中的數(shù)據(jù)拷貝到所述備份數(shù)據(jù)區(qū),使用所述原始數(shù)據(jù)區(qū)中的數(shù)據(jù)啟動系統(tǒng)。備份數(shù)據(jù)區(qū)與原始數(shù)據(jù)區(qū)互為備份,在寫入flash過程中若出現(xiàn)突然掉電等情況,導致備份數(shù)據(jù)區(qū)與原始數(shù)據(jù)區(qū)其中一區(qū)數(shù)據(jù)損壞時仍能正常啟動系統(tǒng)。
步驟S105:判斷所述備份數(shù)據(jù)區(qū)是否損壞,若所述備份數(shù)據(jù)區(qū)沒有損壞,則執(zhí)行步驟S106;若所述備份數(shù)據(jù)區(qū)已損壞,則執(zhí)行步驟S107。若原始備份數(shù)據(jù)區(qū)已損壞,繼續(xù)判斷所述備份數(shù)據(jù)區(qū)是否損壞。
步驟S106:將所述備份數(shù)據(jù)區(qū)中的數(shù)據(jù)拷貝到所述原始數(shù)據(jù)區(qū),使用所述備份數(shù)據(jù)區(qū)中的數(shù)據(jù)啟動系統(tǒng)。
若原始備份數(shù)據(jù)區(qū)已損壞,備份數(shù)據(jù)區(qū)沒有損壞,則將所述備份數(shù)據(jù)區(qū)中的數(shù)據(jù)拷貝到所述原始數(shù)據(jù)區(qū),使用所述備份數(shù)據(jù)區(qū)中的數(shù)據(jù)啟動系統(tǒng)。備份數(shù)據(jù)區(qū)與原始數(shù)據(jù)區(qū)互為備份,在寫入flash過程中若出現(xiàn)突然掉電等情況,導致備份數(shù)據(jù)區(qū)與原始數(shù)據(jù)區(qū)其中一區(qū)數(shù)據(jù)損壞時仍能正常啟動系統(tǒng)。
步驟S107:將保存在flash規(guī)劃的其他分區(qū)中的默認數(shù)據(jù)拷貝到所述原始數(shù)據(jù)區(qū)和所述備份數(shù)據(jù)區(qū)中,使用所述默認數(shù)據(jù)啟動系統(tǒng)。保存在flash規(guī)劃的其他分區(qū)中的默認數(shù)據(jù)保證了在原始數(shù)據(jù)區(qū)和備份數(shù)據(jù)區(qū)中的數(shù)據(jù)均異常時能正常啟動系統(tǒng)。
若原始備份數(shù)據(jù)區(qū)已損壞,備份數(shù)據(jù)區(qū)也已損壞,則將保存在flash規(guī)劃的其他分區(qū)中的默認數(shù)據(jù)拷貝到所述原始數(shù)據(jù)區(qū)和所述備份數(shù)據(jù)區(qū)中,使用所述默認數(shù)據(jù)啟動系統(tǒng),其中,所述默認數(shù)據(jù)包括flash的整個或者重要分區(qū)的分區(qū)規(guī)劃、和系統(tǒng)啟動所需的必要數(shù)據(jù)。默認數(shù)據(jù)包括的是啟動系統(tǒng)所需要的最基本的數(shù)據(jù),默認數(shù)據(jù)是系統(tǒng)啟動的精華部分,占用空間極小,直接保存在flash規(guī)劃的其他分區(qū)中即可起到多重保證系統(tǒng)啟動的作用。flash規(guī)劃的其他分區(qū)為除原始數(shù)據(jù)區(qū)和備份數(shù)據(jù)區(qū)的其他分區(qū),默認數(shù)據(jù)也可單獨占用一個分區(qū),但在項目使用中為了節(jié)省硬件成本一般flash空間都不寬裕,甚至比較緊張,單獨占用一個分區(qū)會浪費資源。作為一個優(yōu)選的實施例,所述默認數(shù)據(jù)保存在啟動數(shù)據(jù)區(qū),所述啟動數(shù)據(jù)區(qū)還保存有設備正常啟動自身所需要的數(shù)據(jù),如boot引導數(shù)據(jù)等。因為啟動數(shù)據(jù)區(qū)中的數(shù)據(jù)在生產(chǎn)或使用過程中不會或極少被改動,可以對默認數(shù)據(jù)起到保護作用,默認數(shù)據(jù)也可依附于flash規(guī)劃的其他在生產(chǎn)或使用過程中不會或極少被改動的分區(qū)中。
本實施中,所述原始數(shù)據(jù)區(qū)、所述備份數(shù)據(jù)區(qū)、及所述flash規(guī)劃的其他分區(qū)所占用的扇區(qū)由使用者預先設計,各個分區(qū)可以占用一個扇區(qū),也可以占用多個扇區(qū)。原始數(shù)據(jù)區(qū)和備份數(shù)據(jù)區(qū)中的數(shù)據(jù)都是由使用者按其需要寫入,默認數(shù)據(jù)也是由使用者按其需要寫入到flash規(guī)劃的其他分區(qū)中。
綜上所述,本實施例使用者自行設計分區(qū)規(guī)劃,通過使用原始數(shù)據(jù)區(qū)、備份數(shù)據(jù)區(qū)以及保存在其他分區(qū)中的默認數(shù)據(jù)來保證系統(tǒng)的正常啟動,默認數(shù)據(jù)既不用多占用扇區(qū)又能保證在原始數(shù)據(jù)區(qū)和備份數(shù)據(jù)區(qū)中的數(shù)據(jù)均異常時系統(tǒng)能正常啟動,解決了現(xiàn)有技術(shù)中因flash的重要數(shù)據(jù)被損壞而導致系統(tǒng)無法正常啟動從而給flash生產(chǎn)和使用帶來極大不便的問題。
請參考圖2,其是本發(fā)明具體實施方式中提供的一種flash數(shù)據(jù)備份的使用方法的第二實施例的方法流程圖。如圖所示,該方法,包括:
步驟S201:驅(qū)動flash。
驅(qū)動flash,以對flash做進一步的操作。
步驟S202:判斷原始數(shù)據(jù)區(qū)是否損壞;若所述原始數(shù)據(jù)區(qū)沒有損壞,則繼續(xù)執(zhí)行步驟S203;若所述原始數(shù)據(jù)區(qū)已損壞,則執(zhí)行步驟S206。
驅(qū)動flash之后,在進入系統(tǒng)之前,先判斷原始數(shù)據(jù)區(qū)是否損壞,以根據(jù)判斷結(jié)果及進一步的操作決定使用哪個區(qū)的數(shù)據(jù)啟動系統(tǒng)。本實施例針對無自備份技術(shù)的flash,使用者自行設計原始數(shù)據(jù)區(qū)所占用的扇區(qū),所述原始數(shù)據(jù)區(qū)中的數(shù)據(jù)包括flash的整個分區(qū)規(guī)劃、和與系統(tǒng)啟動相關的重要數(shù)據(jù)。原始數(shù)據(jù)區(qū)中的數(shù)據(jù)還可以包括一些環(huán)境相關數(shù)據(jù),具體數(shù)據(jù)由使用者決定。
步驟S203:判斷備份數(shù)據(jù)區(qū)是否損壞,若所述備份數(shù)據(jù)區(qū)沒有損壞,則執(zhí)行步驟S204;若所述備份數(shù)據(jù)區(qū)已損壞,則執(zhí)行步驟S205。
若原始數(shù)據(jù)區(qū)沒有損壞,繼續(xù)判斷備份數(shù)據(jù)區(qū)是否損壞,因為原始數(shù)據(jù)區(qū)與備份數(shù)據(jù)區(qū)互為備份,不管原始數(shù)據(jù)區(qū)是否損壞都需要判斷備份數(shù)據(jù)區(qū)是否損壞,以決定是否需要把原始數(shù)據(jù)區(qū)中的數(shù)據(jù)拷貝到備份數(shù)據(jù)區(qū),或把備份數(shù)據(jù)區(qū)中的數(shù)據(jù)拷貝到原始數(shù)據(jù)區(qū)。
使用者自行設計備份數(shù)據(jù)區(qū)所占用的扇區(qū),所述備份數(shù)據(jù)區(qū)中的數(shù)據(jù)包括flash的整個分區(qū)規(guī)劃、和與系統(tǒng)啟動相關的重要數(shù)據(jù)。原則上,備份數(shù)據(jù)區(qū)中的數(shù)據(jù)與原始數(shù)據(jù)區(qū)中的數(shù)據(jù)相同,備份數(shù)據(jù)區(qū)與原始數(shù)據(jù)區(qū)互為備份。
步驟S204:使用所述原始數(shù)據(jù)區(qū)中的數(shù)據(jù)啟動系統(tǒng)。
若原始數(shù)據(jù)區(qū)沒有損壞,備份數(shù)據(jù)區(qū)也沒有損壞,則使用原始數(shù)據(jù)區(qū)中的數(shù)據(jù)啟動系統(tǒng)。
步驟S205:將所述原始數(shù)據(jù)區(qū)中的數(shù)據(jù)拷貝到所述備份數(shù)據(jù)區(qū),使用所述原始數(shù)據(jù)區(qū)中的數(shù)據(jù)啟動系統(tǒng)。
若原始數(shù)據(jù)區(qū)沒有損壞,但是備份數(shù)據(jù)區(qū)已損壞,則將所述原始數(shù)據(jù)區(qū)中的數(shù)據(jù)拷貝到所述備份數(shù)據(jù)區(qū),使用所述原始數(shù)據(jù)區(qū)中的數(shù)據(jù)啟動系統(tǒng)。備份數(shù)據(jù)區(qū)與原始數(shù)據(jù)區(qū)互為備份,在寫入flash過程中若出現(xiàn)突然掉電等情況,導致備份數(shù)據(jù)區(qū)與原始數(shù)據(jù)區(qū)其中一區(qū)數(shù)據(jù)損壞時仍能正常啟動系統(tǒng)。
步驟S206:判斷所述備份數(shù)據(jù)區(qū)是否損壞,若所述備份數(shù)據(jù)區(qū)沒有損壞,則執(zhí)行步驟S207;若所述備份數(shù)據(jù)區(qū)已損壞,則執(zhí)行步驟S208。若原始備份數(shù)據(jù)區(qū)已損壞,繼續(xù)判斷所述備份數(shù)據(jù)區(qū)是否損壞。
步驟S207:將所述備份數(shù)據(jù)區(qū)中的數(shù)據(jù)拷貝到所述原始數(shù)據(jù)區(qū),使用所述備份數(shù)據(jù)區(qū)中的數(shù)據(jù)啟動系統(tǒng)。
若原始備份數(shù)據(jù)區(qū)已損壞,備份數(shù)據(jù)區(qū)沒有損壞,則將所述備份數(shù)據(jù)區(qū)中的數(shù)據(jù)拷貝到所述原始數(shù)據(jù)區(qū),使用所述備份數(shù)據(jù)區(qū)中的數(shù)據(jù)啟動系統(tǒng)。備份數(shù)據(jù)區(qū)與原始數(shù)據(jù)區(qū)互為備份,在寫入flash過程中若出現(xiàn)突然掉電等情況,導致備份數(shù)據(jù)區(qū)與原始數(shù)據(jù)區(qū)其中一區(qū)數(shù)據(jù)損壞時仍能正常啟動系統(tǒng)。
步驟S208:將保存在flash規(guī)劃的其他分區(qū)中的默認數(shù)據(jù)拷貝到所述原始數(shù)據(jù)區(qū)和所述備份數(shù)據(jù)區(qū)中,使用所述默認數(shù)據(jù)啟動系統(tǒng)。保存在flash規(guī)劃的其他分區(qū)中的默認數(shù)據(jù)保證了在原始數(shù)據(jù)區(qū)和備份數(shù)據(jù)區(qū)中的數(shù)據(jù)均異常時能正常啟動系統(tǒng)。
若原始備份數(shù)據(jù)區(qū)已損壞,備份數(shù)據(jù)區(qū)也已損壞,則將保存在flash規(guī)劃的其他分區(qū)中的默認數(shù)據(jù)拷貝到所述原始數(shù)據(jù)區(qū)和所述備份數(shù)據(jù)區(qū)中,使用所述默認數(shù)據(jù)啟動系統(tǒng),其中,所述默認數(shù)據(jù)包括flash的整個或者重要分區(qū)的分區(qū)規(guī)劃、和系統(tǒng)啟動所需的必要數(shù)據(jù)。默認數(shù)據(jù)包括的是啟動系統(tǒng)所需要的最基本的數(shù)據(jù),默認數(shù)據(jù)是系統(tǒng)啟動的精華部分,占用空間極小,直接保存在flash規(guī)劃的其他分區(qū)中即可起到多重保證系統(tǒng)啟動的作用。flash規(guī)劃的其他分區(qū)為除原始數(shù)據(jù)區(qū)和備份數(shù)據(jù)區(qū)的其他分區(qū),默認數(shù)據(jù)也可單獨占用一個分區(qū),但在項目使用中為了節(jié)省硬件成本一般flash空間都不寬裕,甚至比較緊張,單獨占用一個分區(qū)會浪費資源。
本實施例中,所述原始數(shù)據(jù)區(qū)、所述備份數(shù)據(jù)區(qū)、及所述flash規(guī)劃的其他分區(qū)所占用的扇區(qū)由使用者預先設計,各個分區(qū)可以占用一個扇區(qū),也可以占用多個扇區(qū)。原始數(shù)據(jù)區(qū)和備份數(shù)據(jù)區(qū)中的數(shù)據(jù)都是由使用者按其需要寫入,默認數(shù)據(jù)也是由使用者按其需要寫入到flash規(guī)劃的其他分區(qū)中。作為一個優(yōu)選的實施例,所述判斷原始數(shù)據(jù)區(qū)是否損壞之前,還包括:預先設計flash的整個分區(qū)規(guī)劃,以確定所述原始數(shù)據(jù)區(qū)、所述備份數(shù)據(jù)區(qū)、及所述flash規(guī)劃的其他分區(qū)所占用的扇區(qū)。對無自備份技術(shù)的flash,flash的整個分區(qū)規(guī)劃也可在生產(chǎn)過程中設計好,也可由使用者在后期根據(jù)自身需要自行設計。
作為一個優(yōu)選的實施例,所述其他分區(qū)為啟動數(shù)據(jù)區(qū),所述啟動數(shù)據(jù)區(qū)還保存有設備正常啟動自身所需要的數(shù)據(jù),如boot引導數(shù)據(jù)等。因為啟動數(shù)據(jù)區(qū)中的數(shù)據(jù)在生產(chǎn)或使用過程中不會或極少被改動,可以對默認數(shù)據(jù)起到保護作用,默認數(shù)據(jù)也可依附于flash規(guī)劃的其他在生產(chǎn)或使用過程中不會或極少被改動的分區(qū)中。
所述判斷原始數(shù)據(jù)區(qū)是否損壞之前,還包括:
將所述flash的整個分區(qū)規(guī)劃、和與系統(tǒng)啟動相關的重要數(shù)據(jù)寫入所述原始數(shù)據(jù)區(qū)中;
將所述flash的整個分區(qū)規(guī)劃、和與系統(tǒng)啟動相關的重要數(shù)據(jù)寫入備份數(shù)據(jù)區(qū)中;
將所述flash的整個或者重要分區(qū)的分區(qū)規(guī)劃、和默認數(shù)據(jù)寫入啟動數(shù)據(jù)區(qū)中。
需要說明的是,設計flash的整個分區(qū)規(guī)劃,和原始數(shù)據(jù)區(qū)、備份數(shù)據(jù)區(qū)及啟動數(shù)據(jù)區(qū)中數(shù)據(jù)的寫入,在首次使用flash時完成即可;在后期使用flash中,步驟S201~步驟S208為原始數(shù)據(jù)區(qū)、備份數(shù)據(jù)區(qū)及啟動數(shù)據(jù)區(qū)三個數(shù)據(jù)區(qū)正常使用的一個流程。
本實施例使用者自行設計分區(qū)規(guī)劃,通過使用原始數(shù)據(jù)區(qū)、備份數(shù)據(jù)區(qū)以及保存在其他分區(qū)中的默認數(shù)據(jù)來保證系統(tǒng)的正常啟動,默認數(shù)據(jù)既不用多占用扇區(qū)又能保證在原始數(shù)據(jù)區(qū)和備份數(shù)據(jù)區(qū)中的數(shù)據(jù)均異常時系統(tǒng)能正常啟動,解決了現(xiàn)有技術(shù)中因flash的重要數(shù)據(jù)被損壞而導致系統(tǒng)無法正常啟動從而給flash生產(chǎn)和使用帶來極大不便的問題。與現(xiàn)有的flash存儲器自身采用二級備份設計相比,本實施例可減少flash的使用資源空間和flash讀寫操作時間,對于flash空間資源緊張或不足時,能保證異常情況系統(tǒng)照樣能正常啟動的同時盡量減少flash空間資源使用量。與flash使用者采用一級備份機制設計相比,本實施例能確保在原始數(shù)據(jù)和備份數(shù)據(jù)均異常損壞的情況下,照樣可以靠默認數(shù)據(jù)啟動系統(tǒng),方便在線升級,減少flash使用者生產(chǎn)或維護成本。
以下是本發(fā)明具體實施方式中提供的一種flash數(shù)據(jù)備份的使用系統(tǒng)的實施例,一種flash數(shù)據(jù)備份的使用系統(tǒng)的實施例基于上述的一種flash數(shù)據(jù)備份的使用方法的實施例實現(xiàn),在一種flash數(shù)據(jù)備份的使用系統(tǒng)中未盡的描述,請參考前述一種flash數(shù)據(jù)備份的使用方法的實施例。
請參考圖3,其是本發(fā)明具體實施方式中提供的一種flash數(shù)據(jù)備份的使用系統(tǒng)的第一實施例的結(jié)構(gòu)方框圖。本實施例是在一種flash數(shù)據(jù)備份的使用方法的第一實施例的基礎上實現(xiàn)的,本實施例中未詳盡的內(nèi)容,請參考前述一種flash數(shù)據(jù)備份的使用方法的第一實施例。如圖所示,該系統(tǒng),包括:
第一判斷模塊31,用于判斷原始數(shù)據(jù)區(qū)是否損壞。
所述原始數(shù)據(jù)區(qū)中的數(shù)據(jù)包括flash的整個分區(qū)規(guī)劃、和與系統(tǒng)啟動相關的重要數(shù)據(jù)。
第二判斷模塊32,用于若所述第一判斷模塊判斷出所述原始數(shù)據(jù)區(qū)已損壞,判斷所述備份數(shù)據(jù)區(qū)是否損壞。
所述備份數(shù)據(jù)區(qū)中的數(shù)據(jù)包括flash的整個分區(qū)規(guī)劃、和與系統(tǒng)啟動相關的重要數(shù)據(jù)。
第一啟動模塊33,用于若所述第二判斷模塊判斷出所述備份數(shù)據(jù)區(qū)已損壞,將保存在flash規(guī)劃的其他分區(qū)中的默認數(shù)據(jù)拷貝到所述原始數(shù)據(jù)區(qū)和所述備份數(shù)據(jù)區(qū)中,使用所述默認數(shù)據(jù)啟動系統(tǒng)。
所述系統(tǒng)還包括:
第三判斷模塊34,用于若所述第一判斷模塊判斷出所述原始數(shù)據(jù)區(qū)沒有損壞,判斷備份數(shù)據(jù)區(qū)是否損壞。
第二啟動模塊35,用于若所述第三判斷模塊判斷出所述備份數(shù)據(jù)區(qū)沒有損壞,使用所述原始數(shù)據(jù)區(qū)中的數(shù)據(jù)啟動系統(tǒng);若所述第三判斷模塊判斷出所述備份數(shù)據(jù)區(qū)已損壞,將所述原始數(shù)據(jù)區(qū)中的數(shù)據(jù)拷貝到所述備份數(shù)據(jù)區(qū),使用所述原始數(shù)據(jù)區(qū)中的數(shù)據(jù)啟動系統(tǒng)。
所述第一啟動模塊33,還用于若所述第二判斷模塊判斷出所述備份數(shù)據(jù)區(qū)沒有損壞,將所述備份數(shù)據(jù)區(qū)中的數(shù)據(jù)拷貝到所述原始數(shù)據(jù)區(qū),使用所述備份數(shù)據(jù)區(qū)中的數(shù)據(jù)啟動系統(tǒng)。
所述默認數(shù)據(jù)包括flash的整個或者重要分區(qū)的分區(qū)規(guī)劃、和系統(tǒng)啟動所需的必要數(shù)據(jù)。所述原始數(shù)據(jù)區(qū)、所述備份數(shù)據(jù)區(qū)、及所述flash規(guī)劃的其他分區(qū)所占用的扇區(qū)由使用者預先設計。
綜上所述,本實施例使用者自行設計分區(qū)規(guī)劃,通過使用原始數(shù)據(jù)區(qū)、備份數(shù)據(jù)區(qū)以及保存在其他分區(qū)中的默認數(shù)據(jù)來保證系統(tǒng)的正常啟動,默認數(shù)據(jù)既不用多占用扇區(qū)又能保證在原始數(shù)據(jù)區(qū)和備份數(shù)據(jù)區(qū)中的數(shù)據(jù)均異常時系統(tǒng)能正常啟動,解決了現(xiàn)有技術(shù)中因flash的重要數(shù)據(jù)被損壞而導致系統(tǒng)無法正常啟動從而給flash生產(chǎn)和使用帶來極大不便的問題。
請參考圖4,其是本發(fā)明具體實施方式中提供的一種flash數(shù)據(jù)備份的使用系統(tǒng)的第二實施例的結(jié)構(gòu)方框圖。本實施例是在一種flash數(shù)據(jù)備份的使用方法的第二實施例的基礎上實現(xiàn)的,本實施例中未詳盡的內(nèi)容,請參考前述一種flash數(shù)據(jù)備份的使用方法的第二實施例。如圖所示,該系統(tǒng),包括:
驅(qū)動模塊41,用于驅(qū)動flash。
第一判斷模塊42,用于判斷原始數(shù)據(jù)區(qū)是否損壞。
所述原始數(shù)據(jù)區(qū)中的數(shù)據(jù)包括flash的整個分區(qū)規(guī)劃、和與系統(tǒng)啟動相關的重要數(shù)據(jù)。
第二判斷模塊43,用于若所述第一判斷模塊判斷出所述原始數(shù)據(jù)區(qū)已損壞,判斷所述備份數(shù)據(jù)區(qū)是否損壞。
所述備份數(shù)據(jù)區(qū)中的數(shù)據(jù)包括flash的整個分區(qū)規(guī)劃、和與系統(tǒng)啟動相關的重要數(shù)據(jù)。
第一啟動模塊44,用于若所述第二判斷模塊判斷出所述備份數(shù)據(jù)區(qū)已損壞,將保存在flash規(guī)劃的其他分區(qū)中的默認數(shù)據(jù)拷貝到所述原始數(shù)據(jù)區(qū)和所述備份數(shù)據(jù)區(qū)中,使用所述默認數(shù)據(jù)啟動系統(tǒng)。
所述系統(tǒng)還包括:
第三判斷模塊45,用于若所述第一判斷模塊判斷出所述原始數(shù)據(jù)區(qū)沒有損壞,判斷備份數(shù)據(jù)區(qū)是否損壞。
第二啟動模塊46,用于若所述第三判斷模塊判斷出所述備份數(shù)據(jù)區(qū)沒有損壞,使用所述原始數(shù)據(jù)區(qū)中的數(shù)據(jù)啟動系統(tǒng);若所述第三判斷模塊判斷出所述備份數(shù)據(jù)區(qū)已損壞,將所述原始數(shù)據(jù)區(qū)中的數(shù)據(jù)拷貝到所述備份數(shù)據(jù)區(qū),使用所述原始數(shù)據(jù)區(qū)中的數(shù)據(jù)啟動系統(tǒng)。
所述第一啟動模塊44,還用于若所述第二判斷模塊判斷出所述備份數(shù)據(jù)區(qū)沒有損壞,將所述備份數(shù)據(jù)區(qū)中的數(shù)據(jù)拷貝到所述原始數(shù)據(jù)區(qū),使用所述備份數(shù)據(jù)區(qū)中的數(shù)據(jù)啟動系統(tǒng)。
所述默認數(shù)據(jù)包括flash的整個或者重要分區(qū)的分區(qū)規(guī)劃、和系統(tǒng)啟動所需的必要數(shù)據(jù)。所述原始數(shù)據(jù)區(qū)、所述備份數(shù)據(jù)區(qū)、及所述flash規(guī)劃的其他分區(qū)所占用的扇區(qū)由使用者預先設計。
作為一個優(yōu)選的實施例,所述其他分區(qū)為啟動數(shù)據(jù)區(qū),所述啟動數(shù)據(jù)區(qū)還保存有設備正常啟動自身所需要的數(shù)據(jù)。所述系統(tǒng)還包括,寫入模塊;所述寫入模塊用于:
將所述flash的整個分區(qū)規(guī)劃、和與系統(tǒng)啟動相關的重要數(shù)據(jù)寫入所述原始數(shù)據(jù)區(qū)中;
將所述flash的整個分區(qū)規(guī)劃、和與系統(tǒng)啟動相關的重要數(shù)據(jù)寫入備份數(shù)據(jù)區(qū)中;
將所述flash的整個或者重要分區(qū)的分區(qū)規(guī)劃、和默認數(shù)據(jù)寫入啟動數(shù)據(jù)區(qū)中。
作為一個優(yōu)選的實施例,所述系統(tǒng)還包括:設計模塊,用于預先設計flash的整個分區(qū)規(guī)劃,以確定所述原始數(shù)據(jù)區(qū)、所述備份數(shù)據(jù)區(qū)、及所述flash規(guī)劃的其他分區(qū)所占用的扇區(qū)。
綜上所述,本實施例提供flash數(shù)據(jù)備份的使用系統(tǒng),使用者自行設計分區(qū)規(guī)劃,通過使用原始數(shù)據(jù)區(qū)、備份數(shù)據(jù)區(qū)以及保存在其他分區(qū)中的默認數(shù)據(jù)來保證系統(tǒng)的正常啟動,默認數(shù)據(jù)既不用多占用扇區(qū)又能保證在原始數(shù)據(jù)區(qū)和備份數(shù)據(jù)區(qū)中的數(shù)據(jù)均異常時系統(tǒng)能正常啟動,解決了現(xiàn)有技術(shù)中因flash的重要數(shù)據(jù)被損壞而導致系統(tǒng)無法正常啟動從而給flash生產(chǎn)和使用帶來極大不便的問題。與現(xiàn)有的flash存儲器自身采用二級備份設計相比,本實施例可減少flash的使用資源空間和flash讀寫操作時間,對于flash空間資源緊張或不足時,能保證異常情況系統(tǒng)照樣能正常啟動的同時盡量減少flash空間資源使用量。與flash使用者采用一級備份機制設計相比,本實施例能確保在原始數(shù)據(jù)和備份數(shù)據(jù)均異常損壞的情況下,照樣可以靠默認數(shù)據(jù)啟動系統(tǒng),方便在線升級,減少flash使用者生產(chǎn)或維護成本。
以上結(jié)合具體實施例描述了本發(fā)明的技術(shù)原理。這些描述只是為了解釋本發(fā)明的原理,而不能以任何方式解釋為對本發(fā)明保護范圍的限制?;诖颂幍慕忉專绢I域的技術(shù)人員不需要付出創(chuàng)造性的勞動即可聯(lián)想到本發(fā)明的其它具體實施方式,這些方式都將落入本發(fā)明的保護范圍之內(nèi)。