亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種系統(tǒng)安全升級(jí)的方法和裝置與流程

文檔序號(hào):11831260閱讀:146來(lái)源:國(guó)知局
一種系統(tǒng)安全升級(jí)的方法和裝置與流程

本發(fā)明涉及計(jì)算機(jī)領(lǐng)域,尤其涉及一種系統(tǒng)安全升級(jí)的方法和裝置。



背景技術(shù):

系統(tǒng)升級(jí),通常包括引導(dǎo)分區(qū)(bootloader),OS,中間件,應(yīng)用等組件的升級(jí)。在嵌入式產(chǎn)品,如智能電視機(jī),各種盒子如交互式網(wǎng)絡(luò)電視(Internet protocol TV,IPTV)盒子,過(guò)頂(Over The Top,OTT)盒子,數(shù)字視頻廣播(Digital Video Broadcasting,DVB)盒子,機(jī)頂盒等,其內(nèi)置的存儲(chǔ)器通常是計(jì)算機(jī)閃存設(shè)備(NAND)介質(zhì)或者內(nèi)嵌式存儲(chǔ)器(Embedded Multi Media Card,eMMC)介質(zhì),NAND和eMMC的特點(diǎn)是容易出現(xiàn)壞塊、導(dǎo)致其損壞。系統(tǒng)升級(jí)會(huì)加大對(duì)NAND或eMMC的讀寫(xiě),如果在升級(jí)過(guò)程中,突然斷電,更會(huì)使存儲(chǔ)介質(zhì)損壞的可能性大大增加。常見(jiàn)的升級(jí),例如:安卓系統(tǒng)的升級(jí)通常包括對(duì)bootloader,操作系統(tǒng)內(nèi)核(kernel),系統(tǒng)(system),恢復(fù)(recovery),緩存(cache)等分區(qū)的內(nèi)容進(jìn)行更新。系統(tǒng)在線(xiàn)升級(jí)的時(shí)候,往往更新其中部分分區(qū)或者全部分區(qū)的內(nèi)容。

由此可知,系統(tǒng)升級(jí)包括全部升級(jí)和部分升級(jí)。通常的做法是依次更新bootloader,kernel,system等分區(qū)的內(nèi)容,如果關(guān)鍵分區(qū)如bootloader分區(qū)由于斷電導(dǎo)致破壞,整個(gè)系統(tǒng)將無(wú)法啟動(dòng),設(shè)備無(wú)法正常運(yùn)行,俗稱(chēng)導(dǎo)致設(shè)備變“磚”。



技術(shù)實(shí)現(xiàn)要素:

本發(fā)明的目的是提供一種系統(tǒng)安全升級(jí)的方法和裝置,以解決由于系統(tǒng)升級(jí)出現(xiàn)的設(shè)備不可用率高的情況。

本發(fā)明的目的是通過(guò)以下技術(shù)方案實(shí)現(xiàn)的:

一種系統(tǒng)安全升級(jí)的方法,包括:

在設(shè)備開(kāi)機(jī)時(shí),檢測(cè)參數(shù)分區(qū)內(nèi)記錄的每一個(gè)引導(dǎo)分區(qū)的配置狀態(tài)參數(shù),篩選出配置狀態(tài)參數(shù)表征成功狀態(tài)的一個(gè)引導(dǎo)分區(qū);其中,系統(tǒng)包括至少兩個(gè)引導(dǎo)分區(qū),每一個(gè)引導(dǎo)分區(qū)中均存儲(chǔ)有用于引導(dǎo)系統(tǒng)啟動(dòng)的代碼;

在所述參數(shù)分區(qū)內(nèi)將篩選出的所述一個(gè)引導(dǎo)分區(qū)的配置狀態(tài)參數(shù)設(shè)置為表征失敗狀態(tài),并運(yùn)行所述一個(gè)引導(dǎo)分區(qū)中存儲(chǔ)的用于引導(dǎo)系統(tǒng)啟動(dòng)的代碼;

確定執(zhí)行成功時(shí),在所述參數(shù)分區(qū)內(nèi)將篩選出的所述一個(gè)引導(dǎo)分區(qū)的配置狀態(tài)參數(shù)值設(shè)置為表征成功狀態(tài)。

這樣,能夠大大降低由于系統(tǒng)升級(jí)時(shí)關(guān)鍵分區(qū)損壞導(dǎo)致設(shè)備不可用的概率,利用多個(gè)引導(dǎo)分區(qū)實(shí)現(xiàn)設(shè)備的快速恢復(fù)啟動(dòng),不影響系統(tǒng)的正常運(yùn)行時(shí)間,為用戶(hù)提供了方便,進(jìn)一步提升系統(tǒng)的可靠性,提高設(shè)備的可用性,確保系統(tǒng)能夠安全可靠地升級(jí)。

較佳的,在設(shè)備首次開(kāi)機(jī)之前,將參數(shù)分區(qū)內(nèi)記錄的每一個(gè)引導(dǎo)分區(qū)的配置狀態(tài)參數(shù)值均設(shè)置為表征成功狀態(tài)。

較佳,系統(tǒng)包括的至少兩個(gè)引導(dǎo)分區(qū)為相同的引導(dǎo)分區(qū),所述系統(tǒng)為嵌入式系統(tǒng)。

可選的,在設(shè)備開(kāi)機(jī)時(shí),檢測(cè)參數(shù)分區(qū)內(nèi)記錄的每一個(gè)引導(dǎo)分區(qū)的配置狀態(tài)參數(shù),篩選出配置狀態(tài)參數(shù)表征成功狀態(tài)的一個(gè)引導(dǎo)分區(qū),具體包括:

在設(shè)備開(kāi)機(jī)后,執(zhí)行只讀芯片ROM中保存的引導(dǎo)代碼;

在引導(dǎo)代碼執(zhí)行完畢后,通過(guò)執(zhí)行初始化分區(qū)中存儲(chǔ)的代碼,依次檢測(cè)參數(shù)分區(qū)內(nèi)記錄的每一個(gè)引導(dǎo)分區(qū)的配置狀態(tài)參數(shù);其中,每讀取一個(gè)引導(dǎo)分區(qū)的配置狀態(tài)參數(shù),判斷是否表征成功狀態(tài),若是,則將所述一個(gè)引導(dǎo)分區(qū)標(biāo)記為待操作引導(dǎo)分區(qū),否則,將所述一個(gè)引導(dǎo)分區(qū)標(biāo)記為待修復(fù)引導(dǎo)分區(qū);

從已標(biāo)記的待操作引導(dǎo)分區(qū)中篩選出一個(gè)引導(dǎo)分區(qū)。

可選的,確定執(zhí)行成功時(shí),在所述參數(shù)分區(qū)內(nèi)將所述一個(gè)引導(dǎo)分區(qū)的配置狀態(tài)參數(shù)值設(shè)置為表征成功狀態(tài)之后,進(jìn)一步包括:

將所述一個(gè)引導(dǎo)分區(qū)內(nèi)存儲(chǔ)的代碼復(fù)制到每一個(gè)已標(biāo)記的待修復(fù)引導(dǎo)分區(qū)中;

每確定所述一個(gè)引導(dǎo)分區(qū)內(nèi)存儲(chǔ)的代碼成功復(fù)制到一個(gè)待修復(fù)引導(dǎo)分區(qū)后,在參數(shù)分區(qū)內(nèi)將所述一個(gè)待修復(fù)引導(dǎo)分區(qū)的配置狀態(tài)參數(shù)值設(shè)置為表征成功狀態(tài)。

一種系統(tǒng)安全升級(jí)的裝置,包括:

篩選單元,用于在該設(shè)備開(kāi)機(jī)時(shí),檢測(cè)參數(shù)分區(qū)內(nèi)記錄的每一個(gè)引導(dǎo)分區(qū)的配置狀態(tài)參數(shù),篩選出配置狀態(tài)參數(shù)表征成功狀態(tài)的一個(gè)引導(dǎo)分區(qū);其中,系統(tǒng)包括至少兩個(gè)引導(dǎo)分區(qū),每一個(gè)引導(dǎo)分區(qū)中均存儲(chǔ)有用于引導(dǎo)系統(tǒng)啟動(dòng)的代碼;

處理單元,用于在所述參數(shù)分區(qū)內(nèi)將篩選出的所述一個(gè)引導(dǎo)分區(qū)的配置狀態(tài)參數(shù)設(shè)置為表征失敗狀態(tài),并運(yùn)行所述一個(gè)引導(dǎo)分區(qū)中存儲(chǔ)的用于引導(dǎo)系統(tǒng)啟動(dòng)的代碼;

確定單元,用于確定執(zhí)行成功時(shí),在所述參數(shù)分區(qū)內(nèi)將篩選出的所述一個(gè)引導(dǎo)分區(qū)的配置狀態(tài)參數(shù)值設(shè)置為表征成功狀態(tài)。

這樣,能夠大大降低由于系統(tǒng)升級(jí)時(shí)關(guān)鍵分區(qū)損壞導(dǎo)致設(shè)備不可用的概率,利用多個(gè)引導(dǎo)分區(qū)實(shí)現(xiàn)設(shè)備的快速恢復(fù)啟動(dòng),不影響系統(tǒng)的正常運(yùn)行時(shí)間,為用戶(hù)提供了方便,進(jìn)一步提升系統(tǒng)的可靠性,提高設(shè)備的可用性,確保系統(tǒng)能夠安全可靠地升級(jí)。

較佳的,所述篩選單元檢測(cè)的系統(tǒng)包括的至少兩個(gè)引導(dǎo)分區(qū)為相同的引導(dǎo)分區(qū),所述系統(tǒng)為嵌入式系統(tǒng)。

較佳的,所述篩選單元進(jìn)一步用于:

在設(shè)備首次開(kāi)機(jī)之前,將參數(shù)分區(qū)內(nèi)記錄的每一個(gè)引導(dǎo)分區(qū)的配置狀態(tài)參數(shù)值均設(shè)置為表征成功狀態(tài)。

較佳的,在設(shè)備開(kāi)機(jī)時(shí),檢測(cè)參數(shù)分區(qū)內(nèi)記錄的每一個(gè)引導(dǎo)分區(qū)的配置狀態(tài)參數(shù),篩選出配置狀態(tài)參數(shù)表征成功狀態(tài)的一個(gè)引導(dǎo)分區(qū)時(shí),所述篩選單元 具體用于:

在設(shè)備開(kāi)機(jī)后,執(zhí)行只讀芯片ROM中保存的引導(dǎo)代碼;

在引導(dǎo)代碼執(zhí)行完畢后,通過(guò)執(zhí)行初始化分區(qū)中存儲(chǔ)的代碼,依次檢測(cè)參數(shù)分區(qū)內(nèi)記錄的每一個(gè)引導(dǎo)分區(qū)的配置狀態(tài)參數(shù);其中,每讀取一個(gè)引導(dǎo)分區(qū)的配置狀態(tài)參數(shù),判斷是否表征成功狀態(tài),若是,則將所述一個(gè)引導(dǎo)分區(qū)標(biāo)記為待操作引導(dǎo)分區(qū),否則,將所述一個(gè)引導(dǎo)分區(qū)標(biāo)記為待修復(fù)引導(dǎo)分區(qū);

從已標(biāo)記的待操作引導(dǎo)分區(qū)中篩選出一個(gè)引導(dǎo)分區(qū)。

較佳的,確定執(zhí)行成功時(shí),在所述參數(shù)分區(qū)內(nèi)將篩選出的所述一個(gè)引導(dǎo)分區(qū)的配置狀態(tài)參數(shù)值設(shè)置為表征成功狀態(tài)之后,所述確定單元進(jìn)一步用于:

將篩選出的所述一個(gè)引導(dǎo)分區(qū)內(nèi)存儲(chǔ)的代碼復(fù)制到每一個(gè)已標(biāo)記的待修復(fù)引導(dǎo)分區(qū)中;

每確定篩選出的所述一個(gè)引導(dǎo)分區(qū)內(nèi)存儲(chǔ)的代碼成功復(fù)制到一個(gè)待修復(fù)引導(dǎo)分區(qū)后,在參數(shù)分區(qū)內(nèi)將所述一個(gè)待修復(fù)引導(dǎo)分區(qū)的配置狀態(tài)參數(shù)值設(shè)置為表征成功狀態(tài)。

附圖說(shuō)明

圖1為本發(fā)明實(shí)施例中系統(tǒng)安全升級(jí)的方法流程示意圖;

圖2為本發(fā)明實(shí)施例中參數(shù)分區(qū)的示意圖;

圖3為本發(fā)明實(shí)施例中安卓設(shè)備的存儲(chǔ)器分區(qū)示意圖;

圖4為本發(fā)明實(shí)施例中系統(tǒng)安全升級(jí)的裝置結(jié)構(gòu)示意圖。

具體實(shí)施方式

下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,并不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。

存儲(chǔ)介質(zhì)(如NAND/eMMC)的分區(qū)管理與系統(tǒng)升級(jí)密切相關(guān)。通常系統(tǒng)升級(jí)時(shí),執(zhí)行完芯片上的引導(dǎo)代碼(ROM code)后總是跳轉(zhuǎn)到固定分區(qū)執(zhí)行其相關(guān)代碼,而不會(huì)根據(jù)分區(qū)是否損壞跳轉(zhuǎn)到別的分區(qū),如果升級(jí)過(guò)程中關(guān)鍵分區(qū)例如引導(dǎo)分區(qū)(bootloader)由于斷電出現(xiàn)毀壞情況時(shí),會(huì)導(dǎo)致系統(tǒng)升級(jí)無(wú)法正常進(jìn)行,進(jìn)一步導(dǎo)致設(shè)備不可用,影響用戶(hù)的正常使用。和通常的做法不同,本發(fā)明實(shí)施例中設(shè)計(jì)了初始化(Init)分區(qū),并對(duì)引導(dǎo)分區(qū)進(jìn)行了多個(gè)分區(qū)的備份,用以大大提高系統(tǒng)升級(jí)的可靠性。

參閱圖1所示,本發(fā)明實(shí)施例中,提供一種系統(tǒng)安全升級(jí)的方法,具體流程如下:

步驟100:在設(shè)備開(kāi)機(jī)時(shí),檢測(cè)參數(shù)分區(qū)內(nèi)記錄的每一個(gè)引導(dǎo)分區(qū)的配置狀態(tài)參數(shù),篩選出配置狀態(tài)參數(shù)表征成功狀態(tài)的一個(gè)引導(dǎo)分區(qū);其中,系統(tǒng)包括至少兩個(gè)引導(dǎo)分區(qū),每一個(gè)引導(dǎo)分區(qū)中均記錄有用于引導(dǎo)系統(tǒng)啟動(dòng)的代碼。

具體的,系統(tǒng)包括的至少兩個(gè)引導(dǎo)分區(qū)為相同的引導(dǎo)分區(qū),可以互為備份,該系統(tǒng)為嵌入式系統(tǒng)。

進(jìn)一步的,在設(shè)備次開(kāi)機(jī)之前,將參數(shù)分區(qū)內(nèi)記錄的每一個(gè)引導(dǎo)分區(qū)的配置狀態(tài)參數(shù)值均設(shè)置為表征成功狀態(tài)。

例如,參數(shù)(parameter)分區(qū)采用key-value方式存放一些啟動(dòng)過(guò)程必須的參數(shù),包括表征引導(dǎo)分區(qū)的配置狀態(tài)的參數(shù),具體的,可參閱圖2所示,用“SUCCESS”表征成功的配置狀態(tài),用“FAILD”表征失敗的配置狀態(tài),在設(shè)備首次開(kāi)機(jī)(即出廠(chǎng))之前,將參數(shù)分區(qū)內(nèi)記錄的每一個(gè)引導(dǎo)分區(qū)的配置狀態(tài)參數(shù)值均設(shè)置為“SUCCESS”狀態(tài)。

具體的,在設(shè)備開(kāi)機(jī)時(shí),檢測(cè)參數(shù)分區(qū)內(nèi)記錄的每一個(gè)引導(dǎo)分區(qū)的配置狀態(tài)參數(shù),篩選出配置狀態(tài)參數(shù)表征成功狀態(tài)的一個(gè)引導(dǎo)分區(qū),具體過(guò)程為:在設(shè)備開(kāi)機(jī)后,執(zhí)行只讀芯片ROM中保存的引導(dǎo)代碼;在引導(dǎo)代碼執(zhí)行完畢后,通過(guò)執(zhí)行初始化分區(qū)中存儲(chǔ)的代碼,依次檢測(cè)參數(shù)分區(qū)內(nèi)記錄的每一個(gè)引導(dǎo)分區(qū)的配置狀態(tài)參數(shù);其中,每讀取一個(gè)引導(dǎo)分區(qū)的配置狀態(tài)參數(shù),判斷是否表 征成功狀態(tài),若是,則將該一個(gè)引導(dǎo)分區(qū)標(biāo)記為待操作引導(dǎo)分區(qū),否則,將該一個(gè)引導(dǎo)分區(qū)標(biāo)記為待修復(fù)引導(dǎo)分區(qū);從已標(biāo)記的待操作引導(dǎo)分區(qū)中篩選出一個(gè)引導(dǎo)分區(qū)。

步驟101:在參數(shù)分區(qū)內(nèi)將篩選出的上述一個(gè)引導(dǎo)分區(qū)的配置狀態(tài)參數(shù)設(shè)置為表征失敗狀態(tài),并運(yùn)行該一個(gè)引導(dǎo)分區(qū)中存儲(chǔ)的用于引導(dǎo)系統(tǒng)啟動(dòng)的代碼。

步驟102:確定執(zhí)行成功時(shí),在參數(shù)分區(qū)內(nèi)將篩選出的上述一個(gè)引導(dǎo)分區(qū)的配置狀態(tài)參數(shù)值設(shè)置為表征成功狀態(tài)。

需要說(shuō)明的是,這里檢測(cè)到一個(gè)配置狀態(tài)為成功狀態(tài)的引導(dǎo)分區(qū)后,執(zhí)行該引導(dǎo)分區(qū)的代碼時(shí),將該引導(dǎo)分區(qū)的配置狀態(tài)設(shè)置為失敗狀態(tài),在成功執(zhí)行完該引導(dǎo)分區(qū)的代碼后,將將該引導(dǎo)分區(qū)的配置狀態(tài)設(shè)置為成功狀態(tài),這樣做能夠確保在執(zhí)行完某一個(gè)引導(dǎo)分區(qū)的代碼后,參數(shù)分區(qū)中保存的該分區(qū)的配置狀態(tài)是正確的,如果不執(zhí)行這樣的操作,在執(zhí)行引導(dǎo)分區(qū)的代碼時(shí)若由于斷電或電路板短路等原因?qū)е律?jí)失敗時(shí),將導(dǎo)致參數(shù)分區(qū)內(nèi)記錄該引導(dǎo)分區(qū)的配置狀態(tài)出現(xiàn)錯(cuò)誤,再次升級(jí)時(shí)可能會(huì)繼續(xù)出現(xiàn)升級(jí)失敗的情形。

進(jìn)一步的,確定執(zhí)行成功時(shí),在參數(shù)分區(qū)內(nèi)將篩選出的上述一個(gè)引導(dǎo)分區(qū)的配置狀態(tài)參數(shù)值設(shè)置為表征成功狀態(tài)之后,將上述一個(gè)引導(dǎo)分區(qū)內(nèi)存儲(chǔ)的代碼復(fù)制到每一個(gè)已標(biāo)記的待修復(fù)引導(dǎo)分區(qū)中;每確定上述一個(gè)引導(dǎo)分區(qū)內(nèi)存儲(chǔ)的代碼成功復(fù)制到一個(gè)待修復(fù)引導(dǎo)分區(qū)后,在參數(shù)分區(qū)內(nèi)將該一個(gè)待修復(fù)引導(dǎo)分區(qū)的配置狀態(tài)參數(shù)值設(shè)置為表征成功狀態(tài)。

例如,系統(tǒng)中存在兩個(gè)引導(dǎo)分區(qū),這兩個(gè)引導(dǎo)分區(qū)互為備份,這里用bootloader0和bootloader1來(lái)表示這個(gè)互為備份的引導(dǎo)分區(qū),檢測(cè)到bootloader0的配置狀態(tài)為“SUCCESS”狀態(tài),bootloader1的配置狀態(tài)為“FAILD”狀態(tài),設(shè)備開(kāi)機(jī)后成功執(zhí)行完bootloader0中存儲(chǔ)的代碼后,需要將bootloader0中存儲(chǔ)的代碼復(fù)制到bootloader1中,在確定bootloader0中存儲(chǔ)的代碼成功復(fù)制到bootloader1中后,將bootloader1的配置狀態(tài)修改為“SUCCESS”狀態(tài),這樣, 能夠?qū)崿F(xiàn)對(duì)出現(xiàn)毀壞情況的引導(dǎo)分區(qū)恢復(fù)至正常情況。

進(jìn)一步的,需要說(shuō)明的是,初始化分區(qū)、引導(dǎo)分區(qū)以及設(shè)備的存儲(chǔ)器的其他分區(qū)的代碼執(zhí)行,都是先將分區(qū)的代碼下載(load)到內(nèi)存中(如DDR或IRAM),CPU從內(nèi)存中讀取對(duì)應(yīng)分區(qū)的代碼進(jìn)行加載。

具體的,下面以一安卓(Android)設(shè)備的存儲(chǔ)器分區(qū)為例針對(duì)上述系統(tǒng)安全升級(jí)的方法進(jìn)行詳細(xì)說(shuō)明。

Android設(shè)備的存儲(chǔ)器即eMMC/NAND分區(qū)情況,參閱圖3所示,包括:Parameter,Init區(qū),Bootloader0,Bootloader1,…BootloaderN,Kernel,Android,recovery,cache,其他(other)等分區(qū)。其中:

Parameter分區(qū)采用簡(jiǎn)單的key-value方式存放一些啟動(dòng)過(guò)程中必須的參數(shù),包括bootloader0/bootloader1/…bootloaderN的配置(boot)狀態(tài)。這里用“SUCCESS”表征成功的配置狀態(tài),用“FAILD”表征失敗的配置狀態(tài),初始化時(shí),這些引導(dǎo)分區(qū)的狀態(tài)都是“SUCCESS”狀態(tài)。

Init分區(qū)存儲(chǔ)有一段初始化代碼,該初始化代碼根據(jù)parameter分區(qū)的記錄的引導(dǎo)分區(qū)的參數(shù)決定跳轉(zhuǎn)到哪個(gè)引導(dǎo)分區(qū),其中BootLoader0,BootLoader1,…BootLoaderN是同一個(gè)引導(dǎo)分區(qū)的多個(gè)備份。

每一個(gè)引導(dǎo)分區(qū)都存儲(chǔ)有一段為啟動(dòng)操作系統(tǒng)做準(zhǔn)備的代碼,為啟動(dòng)操作系統(tǒng)做準(zhǔn)備。

Kernel分區(qū)是指操作系統(tǒng)的內(nèi)核分區(qū),通常存儲(chǔ)有內(nèi)核、驅(qū)動(dòng)相關(guān)代碼,如Linux kernel;android分區(qū)包括android相關(guān)的組件,通常存儲(chǔ)有android相關(guān)的框架代碼、虛擬機(jī)代碼、用到的庫(kù)等;recovery分區(qū)是指android的recovery分區(qū),該分區(qū)包含一個(gè)簡(jiǎn)單的Linux系統(tǒng),用于升級(jí);cache分區(qū)用以保存系統(tǒng)升級(jí)下載的升級(jí)包;Other分區(qū)是指其他分區(qū),由各個(gè)產(chǎn)品自己定義。

當(dāng)設(shè)備開(kāi)機(jī)時(shí),最先執(zhí)行只讀芯片“ROM”芯片里面的代碼即引導(dǎo)代碼(ROM code),該引導(dǎo)代碼執(zhí)行完畢之后,會(huì)跳轉(zhuǎn)到Init分區(qū)的代碼,Init分區(qū)的代碼會(huì)檢查parameter分區(qū)的Bootloader0_Boot_state的值,如果是 “SUCCESS”,則從該分區(qū)執(zhí)行;如果是“FAILD”,記錄Bootloader_Boot_state=FAILD的引導(dǎo)分區(qū),進(jìn)一步的繼續(xù)檢查Bootloader1_Boot_state的值…如此下去,直到找到一個(gè)配置狀態(tài)為“SUCCESS”的引導(dǎo)分區(qū)執(zhí)行該分區(qū)存儲(chǔ)的代碼。在執(zhí)行一個(gè)引導(dǎo)分區(qū)存儲(chǔ)的代碼時(shí),首先把該引導(dǎo)分區(qū)對(duì)應(yīng)的Bootloader_Boot_state設(shè)置為“FAILED”,直到引導(dǎo)分區(qū)存儲(chǔ)的代碼成功執(zhí)行完畢后才把其對(duì)應(yīng)的Bootloader_Boot_state改為“SUCCESS”。如果該引導(dǎo)分區(qū)存儲(chǔ)有損壞的代碼,導(dǎo)致該引導(dǎo)分區(qū)存儲(chǔ)的代碼將不會(huì)被完全成功執(zhí)行,從而該引導(dǎo)分區(qū)對(duì)應(yīng)的Bootloader_Boot_state不會(huì)被改寫(xiě)為“SUCCESS”。在該引導(dǎo)分區(qū)存儲(chǔ)的代碼成功執(zhí)行完畢之后,要負(fù)責(zé)恢復(fù)Bootloader_Boot_state=FAILD的引導(dǎo)分區(qū),即把該引導(dǎo)分區(qū)存儲(chǔ)的代碼復(fù)制到到損壞的備份引導(dǎo)分區(qū)中,在確定該引導(dǎo)分區(qū)存儲(chǔ)的代碼成功復(fù)制到到損壞的備份引導(dǎo)分區(qū)中之后,將損壞的備份引導(dǎo)分區(qū)的配置狀態(tài)修改為“SUCCESS”;最后把執(zhí)行權(quán)交給kernel做后面的啟動(dòng)過(guò)程,此過(guò)程不做詳細(xì)描述。

需要說(shuō)明的是,通常情況下,設(shè)備開(kāi)機(jī)時(shí)執(zhí)行完芯ROM code后總是跳轉(zhuǎn)到固定分區(qū)執(zhí)行,而不會(huì)根據(jù)分區(qū)是否損壞跳轉(zhuǎn)到別的分區(qū)。本發(fā)明實(shí)施例中,設(shè)備開(kāi)機(jī)時(shí)執(zhí)行完ROM code后通過(guò)跳轉(zhuǎn)到Init分區(qū),Init分區(qū)根據(jù)parameter分區(qū)中記錄的引導(dǎo)分區(qū)的配置狀態(tài)決定跳轉(zhuǎn)到哪個(gè)引導(dǎo)分區(qū)中,由于Init分區(qū)的內(nèi)容不會(huì)通過(guò)系統(tǒng)升級(jí)而改變,所以理論上該分區(qū)不會(huì)因?yàn)樯?jí)而損壞,而bootloader的多個(gè)備份機(jī)制保證了bootloader的可靠性。Kernel等其他分區(qū)只有在恢復(fù)(recovery)模式下進(jìn)行更新,如果更新失敗(如斷電),重啟后,恢復(fù)(recovery)模式會(huì)繼續(xù)更新kernel等分區(qū)的內(nèi)容,從而保證了其他分區(qū)的可靠性,Recovery模式特指Android recovery模式,其實(shí)質(zhì)是更新升級(jí)包。

基于上述技術(shù)方案,參閱圖4所示,本發(fā)明實(shí)施例中提供一種系統(tǒng)安全升級(jí)的裝置,包括:篩選單元40,處理單元41和確定單元42,其中:

篩選單元40,用于在設(shè)備開(kāi)機(jī)時(shí),檢測(cè)參數(shù)分區(qū)內(nèi)記錄的每一個(gè)引導(dǎo)分區(qū)的配置狀態(tài)參數(shù),篩選出配置狀態(tài)參數(shù)表征成功狀態(tài)的一個(gè)引導(dǎo)分區(qū);其中, 系統(tǒng)包括至少兩個(gè)引導(dǎo)分區(qū),每一個(gè)引導(dǎo)分區(qū)中均存儲(chǔ)有用于引導(dǎo)系統(tǒng)啟動(dòng)的代碼;

處理單元41,用于在參數(shù)分區(qū)內(nèi)將篩選出的上述一個(gè)引導(dǎo)分區(qū)的配置狀態(tài)參數(shù)設(shè)置為表征失敗狀態(tài),并運(yùn)行該引導(dǎo)分區(qū)中存儲(chǔ)的用于引導(dǎo)系統(tǒng)啟動(dòng)的代碼;

確定單元42,用于確定執(zhí)行成功時(shí),在參數(shù)分區(qū)內(nèi)將篩選出的上述一個(gè)引導(dǎo)分區(qū)的配置狀態(tài)參數(shù)值設(shè)置為表征成功狀態(tài)。

較佳的,所述篩選單元檢測(cè)的系統(tǒng)包括的至少兩個(gè)引導(dǎo)分區(qū)為相同的引導(dǎo)分區(qū),該系統(tǒng)為嵌入式系統(tǒng)。

較佳的,篩選單元40進(jìn)一步用于:

在設(shè)備首次開(kāi)機(jī)之前,將參數(shù)分區(qū)內(nèi)記錄的每一個(gè)引導(dǎo)分區(qū)的配置狀態(tài)參數(shù)值均設(shè)置為表征成功狀態(tài)。

較佳的,在設(shè)備開(kāi)機(jī)時(shí),檢測(cè)參數(shù)分區(qū)內(nèi)記錄的每一個(gè)引導(dǎo)分區(qū)的配置狀態(tài)參數(shù),篩選出配置狀態(tài)參數(shù)表征成功狀態(tài)的一個(gè)引導(dǎo)分區(qū)時(shí),篩選單元40具體用于:

在設(shè)備開(kāi)機(jī)后,執(zhí)行只讀芯片ROM中保存的引導(dǎo)代碼;

在引導(dǎo)代碼執(zhí)行完畢后,通過(guò)執(zhí)行初始化分區(qū)中存儲(chǔ)的代碼,依次檢測(cè)參數(shù)分區(qū)內(nèi)記錄的每一個(gè)引導(dǎo)分區(qū)的配置狀態(tài)參數(shù);其中,每讀取一個(gè)引導(dǎo)分區(qū)的配置狀態(tài)參數(shù),判斷是否表征成功狀態(tài),若是,則將該引導(dǎo)分區(qū)標(biāo)記為待操作引導(dǎo)分區(qū),否則,將該引導(dǎo)分區(qū)標(biāo)記為待修復(fù)引導(dǎo)分區(qū);

從已標(biāo)記的待操作引導(dǎo)分區(qū)中篩選出一個(gè)引導(dǎo)分區(qū)。

較佳的,確定執(zhí)行成功時(shí),在參數(shù)分區(qū)內(nèi)將篩選出的上述一個(gè)引導(dǎo)分區(qū)的配置狀態(tài)參數(shù)值設(shè)置為表征成功狀態(tài)之后,確定單元42進(jìn)一步用于:

將篩選出的上述一個(gè)引導(dǎo)分區(qū)內(nèi)存儲(chǔ)的代碼復(fù)制到每一個(gè)已標(biāo)記的待修復(fù)引導(dǎo)分區(qū)中;

每確定篩選出的該一個(gè)引導(dǎo)分區(qū)內(nèi)存儲(chǔ)的代碼成功復(fù)制到一個(gè)待修復(fù)引 導(dǎo)分區(qū)后,在參數(shù)分區(qū)內(nèi)將該待修復(fù)引導(dǎo)分區(qū)的配置狀態(tài)參數(shù)值設(shè)置為表征成功狀態(tài)。

綜上所述,本發(fā)明實(shí)施例中,在設(shè)備開(kāi)機(jī)時(shí),檢測(cè)參數(shù)分區(qū)內(nèi)記錄的每一個(gè)引導(dǎo)分區(qū)的配置狀態(tài)參數(shù),篩選出配置狀態(tài)參數(shù)表征成功狀態(tài)的一個(gè)引導(dǎo)分區(qū);在參數(shù)分區(qū)內(nèi)將上述一個(gè)引導(dǎo)分區(qū)的配置狀態(tài)參數(shù)設(shè)置為表征失敗狀態(tài),并運(yùn)行該一個(gè)引導(dǎo)分區(qū)中存儲(chǔ)的用于引導(dǎo)系統(tǒng)啟動(dòng)的代碼;確定執(zhí)行成功時(shí),在參數(shù)分區(qū)內(nèi)將上述一個(gè)引導(dǎo)分區(qū)的配置狀態(tài)參數(shù)值設(shè)置為表征成功狀態(tài)。這樣,能夠大大降低由于系統(tǒng)升級(jí)導(dǎo)致設(shè)備不可用的概率,提升系統(tǒng)的可靠性,提高設(shè)備的可用性,確保系統(tǒng)能夠安全可靠地升級(jí)。

本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本發(fā)明的實(shí)施例可提供為方法、系統(tǒng)、或計(jì)算機(jī)程序產(chǎn)品。因此,本發(fā)明可采用完全硬件實(shí)施例、完全軟件實(shí)施例、或結(jié)合軟件和硬件方面的實(shí)施例的形式。而且,本發(fā)明可采用在一個(gè)或多個(gè)其中包含有計(jì)算機(jī)可用程序代碼的計(jì)算機(jī)可用存儲(chǔ)介質(zhì)(包括但不限于磁盤(pán)存儲(chǔ)器、CD-ROM、光學(xué)存儲(chǔ)器等)上實(shí)施的計(jì)算機(jī)程序產(chǎn)品的形式。

本發(fā)明是參照根據(jù)本發(fā)明實(shí)施例的方法、設(shè)備(系統(tǒng))、和計(jì)算機(jī)程序產(chǎn)品的流程圖和/或方框圖來(lái)描述的。應(yīng)理解可由計(jì)算機(jī)程序指令實(shí)現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合??商峁┻@些計(jì)算機(jī)程序指令到通用計(jì)算機(jī)、專(zhuān)用計(jì)算機(jī)、嵌入式處理機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生一個(gè)機(jī)器,使得通過(guò)計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的裝置。

這些計(jì)算機(jī)程序指令也可存儲(chǔ)在能引導(dǎo)計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備以特定方式工作的計(jì)算機(jī)可讀存儲(chǔ)器中,使得存儲(chǔ)在該計(jì)算機(jī)可讀存儲(chǔ)器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能。

這些計(jì)算機(jī)程序指令也可裝載到計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備上,使 得在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計(jì)算機(jī)實(shí)現(xiàn)的處理,從而在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行的指令提供用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的步驟。

盡管已描述了本發(fā)明的優(yōu)選實(shí)施例,但本領(lǐng)域內(nèi)的技術(shù)人員一旦得知了基本創(chuàng)造性概念,則可對(duì)這些實(shí)施例作出另外的變更和修改。所以,所附權(quán)利要求意欲解釋為包括優(yōu)選實(shí)施例以及落入本發(fā)明范圍的所有變更和修改。

顯然,本領(lǐng)域的技術(shù)人員可以對(duì)本發(fā)明實(shí)施例進(jìn)行各種改動(dòng)和變型而不脫離本發(fā)明實(shí)施例的精神和范圍。這樣,倘若本發(fā)明實(shí)施例的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動(dòng)和變型在內(nèi)。

當(dāng)前第1頁(yè)1 2 3 
網(wǎng)友詢(xún)問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1