本發(fā)明涉及通信設(shè)備技術(shù)領(lǐng)域,尤其涉及一種嵌入式系統(tǒng)升級備份方法。
背景技術(shù):
嵌入式設(shè)備,主要由嵌入式處理器、相關(guān)支撐硬件和嵌入式軟件系統(tǒng)組成,它是集軟硬件于一體的可獨(dú)立工作的設(shè)備,其中嵌入式系統(tǒng)具有便利靈活、性能價(jià)格比高、嵌入性強(qiáng)等特點(diǎn),可以嵌入到現(xiàn)有任何信息家電和工業(yè)控制系統(tǒng)中,因而被廣泛使用,其中嵌入式系統(tǒng)在使用處于系統(tǒng)穩(wěn)定以及功能升級往往涉及到系統(tǒng)文件的升級;現(xiàn)有的嵌入式設(shè)備的系統(tǒng)在升級過程中,會把升級的系統(tǒng)文件直接覆蓋原來舊的系統(tǒng)文件,但是這種升級方式存在以下問題,如升級過程中突然斷電或版本有誤,就會造成整個(gè)系統(tǒng)文件無法正常運(yùn)行,因此提高嵌入式設(shè)備在系統(tǒng)文件升級中存在的不穩(wěn)定性,以及對升級的系統(tǒng)文件的有效性提供及時(shí)的驗(yàn)證是當(dāng)下亟需解決的問題。
技術(shù)實(shí)現(xiàn)要素:
針對現(xiàn)有技術(shù)中嵌入式設(shè)備在升級系統(tǒng)文件的過程中存在的上述問題,現(xiàn)提供一種旨在實(shí)現(xiàn)提高嵌入式設(shè)備在升級系統(tǒng)文件時(shí)的穩(wěn)定性,以及對升級的系統(tǒng)文件的有效實(shí)行進(jìn)行驗(yàn)證的嵌入式系統(tǒng)升級備份方法。
具體技術(shù)方案如下:
一種嵌入式系統(tǒng)升級備份方法,適用于linux系統(tǒng),其中,提供兩個(gè)系統(tǒng)啟動分區(qū),兩個(gè)所述系統(tǒng)啟動分區(qū)分別保存有系統(tǒng)文件;
提供一分區(qū)信息表,用以分別保存每個(gè)所述系統(tǒng)文件對應(yīng)的所述系統(tǒng)啟動分區(qū)的存儲路徑,以及用于表示所述系統(tǒng)文件是否經(jīng)過升級的版本升級標(biāo)志;
具體包括以下步驟:
步驟s1、加載所述分區(qū)信息表;
步驟s2、于所述分區(qū)信息表中判斷所述系統(tǒng)文件中是否存在對應(yīng)的所述版本升級標(biāo)志;
并將包含所述版本升級標(biāo)志的所述系統(tǒng)文件所在的所述系統(tǒng)啟動分區(qū)定義為備份啟動分區(qū),以及將不包含所述版本升級標(biāo)志的所述系統(tǒng)文件所在的所述系統(tǒng)啟動分區(qū)定義為運(yùn)行啟動分區(qū);
步驟s3、根據(jù)所述版本升級標(biāo)志進(jìn)入所述備份啟動分區(qū),并形成一系統(tǒng)測試標(biāo)記;
步驟s4、根據(jù)所述系統(tǒng)測試標(biāo)記于所述備份啟動分區(qū)中加載所述系統(tǒng)文件,并驗(yàn)證當(dāng)前加載的所述系統(tǒng)文件是否有效;
步驟s5、若驗(yàn)證有效,將所述系統(tǒng)測試標(biāo)記設(shè)置為正常啟動狀態(tài),并于設(shè)備重啟之后,從所述備份啟動分區(qū)加載所述系統(tǒng)文件,并在下次所述設(shè)備重啟時(shí)返回所述步驟s1;
步驟s6、若驗(yàn)證無效,將所述系統(tǒng)測試標(biāo)記設(shè)置為正常啟動狀態(tài),以及清除所述版本升級標(biāo)志,并于所述設(shè)備重啟之后,從所述運(yùn)行啟動分區(qū)加載所述系統(tǒng)文件,并在下次所述設(shè)備重啟時(shí)返回所述步驟s1。
優(yōu)選的,所述系統(tǒng)文件包括linux系統(tǒng)的內(nèi)核文件以及基于所述內(nèi)核文件的文件系統(tǒng)。
優(yōu)選的,所述分區(qū)信息表還包括,所述系統(tǒng)文件的升級啟動次數(shù),在所述步驟s4之前還包括對所述系統(tǒng)文件的所述升級啟動次數(shù)的驗(yàn)證;
具體包括以下步驟:
步驟a、判斷所述分區(qū)信息表中包含所述升級標(biāo)志的所述系統(tǒng)文件對應(yīng)的所述升級啟動次數(shù)是否超過一預(yù)設(shè)值;
步驟b、若超過所述預(yù)設(shè)值,清除所述分區(qū)信息表中的所述系統(tǒng)文件對應(yīng)的所述升級標(biāo)志,以及所述升級啟動次數(shù),并保存所述分區(qū)信息表后,并在下次所述設(shè)備重啟時(shí)返回所述步驟s1;
步驟c、若未超過,則執(zhí)行步驟s4。
優(yōu)選的,所述步驟b中,所述linux系統(tǒng)默認(rèn)從所述運(yùn)行啟動分區(qū)啟動以引導(dǎo)啟動所述系統(tǒng)文件。
優(yōu)選的,在所述步驟s4中,提供一檢測程序,用以檢測加載的所述系統(tǒng)文件運(yùn)行是否出現(xiàn)異常;
如是,引導(dǎo)所述設(shè)備重新啟動;
如否,執(zhí)行步驟s5。
優(yōu)選的,提供一啟動引導(dǎo)程序,用以設(shè)備進(jìn)入對應(yīng)的所述系統(tǒng)啟動分區(qū)中運(yùn)行所述系統(tǒng)文件。
優(yōu)選的,所述設(shè)備提供一內(nèi)存模塊,所述內(nèi)存模塊用以將獲取的升級文件寫入所述兩個(gè)系統(tǒng)啟動分區(qū)中的任何一個(gè)所述系統(tǒng)文件中;
所述升級文件包括校驗(yàn)信息碼,所述校驗(yàn)信息碼用以驗(yàn)證所述升級文件的完整性。
上述技術(shù)方案具有如下優(yōu)點(diǎn)或有益效果:提供兩個(gè)啟動分區(qū),通過實(shí)時(shí)判斷升級標(biāo)志從而確定備份啟動分區(qū)和運(yùn)行啟動分區(qū),其中備份分區(qū)保存有升級的系統(tǒng)文件,進(jìn)一步的對備份分區(qū)中的系統(tǒng)文件的有效性提供驗(yàn)證保證升級的系統(tǒng)文件的有效性,克服了現(xiàn)有技術(shù)中升級系統(tǒng)文件穩(wěn)定性低,以及缺少對升級的系統(tǒng)文件有效性的驗(yàn)證的問題。
附圖說明
參考所附附圖,以更加充分的描述本發(fā)明的實(shí)施例。然而,所附附圖僅用于說明和闡述,并不構(gòu)成對本發(fā)明范圍的限制。
圖1為本發(fā)明一種嵌入式系統(tǒng)升級備份方法實(shí)施例的流程圖;
圖2為本發(fā)明一種嵌入式系統(tǒng)升級備份方法實(shí)施例中,關(guān)于驗(yàn)證所述升級啟動次數(shù)的流程圖。
具體實(shí)施方式
下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。基于本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動的前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
需要說明的是,在不沖突的情況下,本發(fā)明中的實(shí)施例及實(shí)施例中的特征可以相互組合。
下面結(jié)合附圖和具體實(shí)施例對本發(fā)明作進(jìn)一步說明,但不作為本發(fā)明的限定。
本發(fā)明的技術(shù)方案中包括一種。一種嵌入式系統(tǒng)升級備份方法。
一種嵌入式系統(tǒng)升級備份方法的實(shí)施例,適用于linux系統(tǒng),其特征在于,提供兩個(gè)系統(tǒng)啟動分區(qū),兩個(gè)系統(tǒng)啟動分區(qū)分別保存有系統(tǒng)文件;
提供一分區(qū)信息表,用以分別保存每個(gè)系統(tǒng)文件對應(yīng)的系統(tǒng)啟動分區(qū)的存儲路徑,以及用于表示系統(tǒng)文件是否經(jīng)過升級的版本升級標(biāo)志;
如圖1所示,具體包括以下步驟:
步驟s1、加載分區(qū)信息表;
步驟s2、于分區(qū)信息表中判斷系統(tǒng)文件中是否存在對應(yīng)的版本升級標(biāo)志,并將包含版本升級標(biāo)志的系統(tǒng)文件所在的系統(tǒng)啟動分區(qū)定義為備份啟動分區(qū),以及將不包含版本升級標(biāo)志的系統(tǒng)文件所在的系統(tǒng)啟動分區(qū)定義為運(yùn)行啟動分區(qū);
步驟s3、根據(jù)版本升級標(biāo)志進(jìn)入備份啟動分區(qū),并形成一系統(tǒng)測試標(biāo)記;
步驟s4、根據(jù)系統(tǒng)測試標(biāo)記于備份啟動分區(qū)中加載系統(tǒng)文件,并驗(yàn)證當(dāng)前加載的系統(tǒng)文件是否有效;
步驟s5、若驗(yàn)證有效,將系統(tǒng)測試標(biāo)記設(shè)置為正常啟動狀態(tài),并于設(shè)備重啟之后,從備份啟動分區(qū)加載系統(tǒng)文件,并在下次linux系統(tǒng)重啟時(shí)返回步驟s1;
步驟s6、若驗(yàn)證無效,將系統(tǒng)測試標(biāo)記設(shè)置為正常啟動狀態(tài),以及清除版本升級標(biāo)志,并設(shè)備之后,從運(yùn)行啟動分區(qū)加載系統(tǒng)文件,并在下次優(yōu)選的重啟時(shí)返回步驟s1。
上述技術(shù)方案中,在設(shè)備的flash存儲器中設(shè)置兩個(gè)啟動分區(qū),兩個(gè)啟動分區(qū)中均設(shè)置有系統(tǒng)文件,在升級系統(tǒng)文件時(shí),于當(dāng)前處于非運(yùn)行狀態(tài)的啟動區(qū)中下載升級的系統(tǒng)文件;
其中分區(qū)信息表記可錄有每個(gè)分區(qū)中的啟動分區(qū)的地址信息,以及版本升級標(biāo)志等;
當(dāng)設(shè)備于下載升級的系統(tǒng)文件后,需要驗(yàn)證升級的系統(tǒng)文件是否有效,設(shè)備于啟動之后加載分區(qū)信息表,判斷分區(qū)信息表中是否存在版本升級標(biāo)志,如存在,當(dāng)判斷存在版本升級標(biāo)志時(shí),將包含版本升級標(biāo)志的啟動分區(qū)定義為備份啟動分區(qū),將另一啟動分區(qū)定義為運(yùn)行啟動分區(qū);
設(shè)備根據(jù)版本升級標(biāo)志于備份啟動分區(qū)啟動并形成一系統(tǒng)測試標(biāo)記,根據(jù)系統(tǒng)測試標(biāo)記于備份啟動分區(qū)中加載升級的系統(tǒng)文件,并對加載的系統(tǒng)文件進(jìn)行驗(yàn)證判斷是否有效,若驗(yàn)證有效,將系統(tǒng)測試標(biāo)記設(shè)置為正常啟動狀態(tài),并于設(shè)備重啟之后,從備份啟動分區(qū)加載系統(tǒng)文件;若驗(yàn)證無效,將系統(tǒng)測試標(biāo)記設(shè)置為正常啟動狀態(tài),以及清除版本升級標(biāo)志,并于設(shè)備重啟之后,從運(yùn)行啟動分區(qū)加載系統(tǒng)文件。
需要說明的是,上述的備份啟動分區(qū)和運(yùn)行分區(qū)不是確定的,其之間是可以互相轉(zhuǎn)換的,如當(dāng)備份啟動分區(qū)中升級的系統(tǒng)文件有效,則設(shè)備重新啟動后將從備份啟動分區(qū)中加載系統(tǒng)文件。
其中分區(qū)信息表的數(shù)據(jù)結(jié)構(gòu)結(jié)構(gòu)如下:
在一種較優(yōu)的實(shí)施方式中,系統(tǒng)文件包括linux的內(nèi)核文件以及基于內(nèi)核文件的文件系統(tǒng)。
上述技術(shù)方案中,在形成系統(tǒng)文件時(shí),將內(nèi)核文件以及基于內(nèi)核文件的文件系統(tǒng)合成生成系統(tǒng)文件并添加文件頭信息,具體文件頭文件格式如下:
其頭文件可包括,用來指示內(nèi)核文件和文件系統(tǒng)的版本生成的時(shí)間,長度,和校驗(yàn)和等等;
當(dāng)系統(tǒng)文件的內(nèi)核kernel啟動,通過解析bootargs的mtdparts,動態(tài)創(chuàng)建mtd,并根據(jù)bootargs的root指定參數(shù)來mount根目錄,從而啟動linux的用戶層運(yùn)行環(huán)境。
在一種較優(yōu)的實(shí)施方式中,分區(qū)信息表還包括,系統(tǒng)文件的升級啟動次數(shù),在步驟s4之前還包括對系統(tǒng)文件的升級啟動次數(shù)的驗(yàn)證;
如圖2所示,具體包括以下步驟:
步驟a、判斷分區(qū)信息表中包含升級標(biāo)志的系統(tǒng)文件對應(yīng)的升級啟動次數(shù)是否超過一預(yù)設(shè)值;
步驟b、若超過預(yù)設(shè)值,清除分區(qū)信息表中的系統(tǒng)文件對應(yīng)的升級標(biāo)志,以及升級啟動次數(shù),并保存分區(qū)信息表后,并在下次設(shè)備重啟時(shí)返回步驟s1;
步驟d、若未超過,則執(zhí)行步驟s4。
上述技術(shù)方案中,升級啟動的預(yù)設(shè)值為16次,系統(tǒng)文件每升級每啟動一次累計(jì)記錄一次啟動次數(shù),若升級啟動的達(dá)到16次以上,則表示此時(shí)的系統(tǒng)文件升級失敗,無法完成升級系統(tǒng)文件的加載,此時(shí)可通過設(shè)備重新啟動于系統(tǒng)啟動分區(qū)中重新引導(dǎo)系統(tǒng)文件啟動。
在一種較優(yōu)的實(shí)施方式中,步驟b中,linux系統(tǒng)默認(rèn)從運(yùn)行啟動分區(qū)啟動以引導(dǎo)啟動系統(tǒng)文件。
在一種較優(yōu)的實(shí)施方式中,在步驟s4中,提供一檢測程序,用以檢測加載的系統(tǒng)文件運(yùn)行是否出現(xiàn)異常;
如是,引導(dǎo)設(shè)備重新啟動;
如否,執(zhí)行步驟s5。
上述技術(shù)方案中,檢測程序?yàn)榭撮T狗程序。
在一種較優(yōu)的實(shí)施方式中,提供一啟動引導(dǎo)程序,用以引導(dǎo)linux系統(tǒng)進(jìn)入對應(yīng)的系統(tǒng)啟動分區(qū)中運(yùn)行系統(tǒng)文件。
在本實(shí)施例中引導(dǎo)啟動程序?yàn)閡boot啟動程序。
在一種較優(yōu)的實(shí)施方式中,設(shè)備提供一內(nèi)存模塊,內(nèi)存模塊用以將獲取的升級文件寫入兩個(gè)啟動分區(qū)中的任何一個(gè)以形成系統(tǒng)文件。
升級文件包括校驗(yàn)信息碼,校驗(yàn)信息碼用以驗(yàn)證升級文件的完整性。
以上所述僅為本發(fā)明較佳的實(shí)施例,并非因此限制本發(fā)明的實(shí)施方式及保護(hù)范圍,對于本領(lǐng)域技術(shù)人員而言,應(yīng)當(dāng)能夠意識到凡運(yùn)用本發(fā)明說明書及圖示內(nèi)容所作出的等同替換和顯而易見的變化所得到的方案,均應(yīng)當(dāng)包含在本發(fā)明的保護(hù)范圍內(nèi)。