国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種終端設(shè)備軟件升級恢復方法及裝置的制作方法

      文檔序號:6466863閱讀:211來源:國知局
      專利名稱:一種終端設(shè)備軟件升級恢復方法及裝置的制作方法
      技術(shù)領(lǐng)域
      本發(fā)明涉及通信技術(shù)領(lǐng)域,具體涉及終端設(shè)備軟件升級恢復方法及裝置。
      背景技術(shù)
      終端設(shè)備的軟件升級是一個現(xiàn)實且基本的需求。通過軟件升級,可以
      解決原軟件存在的BUG,或者為設(shè)備提供新的軟件功能。
      當升級過程中發(fā)生異常,如斷電或升級程序故障等,如果升級方案無
      法使終端軟件自動恢復為原版本的軟件,則將導致軟件被破壞,終端設(shè)備
      無法繼續(xù)正常使用,對用戶造成極大損害。
      目前有一種方案,可解決軟件升級失敗后終端無法使用的問題,其實
      現(xiàn)過程大致如下
      在終端設(shè)備中存儲有基本運行系統(tǒng)和正常運行系統(tǒng),當需要對終端的 基本運行系統(tǒng)升級時,使用終端中的正常運行系統(tǒng)從服務(wù)器下載對應升級 軟件,更新終端本地的基本運行系統(tǒng);當需要對終端的正常運行系統(tǒng)升級 時,使用終端中的基本運行系統(tǒng)從服務(wù)器下載對應升級軟件,更新終端本 地的正常運行系統(tǒng)。
      此軟件升級方案中,由于終端有兩套可運行系統(tǒng),升級時不是用來更 新自身系統(tǒng),而是用于更新另一個系統(tǒng),即使發(fā)生升級失敗的情況,也不 會影響本系統(tǒng)的正常運行。因此可以再次操作運行升級程序,來達到正確 更新另一系統(tǒng)的目的。
      但是,要求終端設(shè)備兼顧兩套運行系統(tǒng)的操作,因此軟件開發(fā)需求和
      硬件存儲設(shè)備的需求都要提高,增加研發(fā)的人力投入和產(chǎn)品成本。并且這 種雙系統(tǒng)的切換操作,如果只是為了滿足升級需求,而導致用戶操作不便。 因此,這種運行兩套系統(tǒng)的軟件升級方案,總體來看,是不經(jīng)濟的一種方 案。

      發(fā)明內(nèi)容
      有鑒于此,本發(fā)明提供一種終端設(shè)備軟件升級恢復方法及裝置,實現(xiàn) 終端設(shè)備在軟件升級發(fā)生異常的情況下,將升級軟件恢復至升級前版本的 功能時,節(jié)省成本。
      本發(fā)明實施例提供的一種終端設(shè)備軟件的升級恢復方法,包括 獲取軟件的更新數(shù)據(jù);
      根據(jù)所述更新數(shù)據(jù)確定對應的所述軟件的需更新的目標數(shù)據(jù),根據(jù)所
      述目標數(shù)據(jù)獲得恢復數(shù)據(jù),保存所述恢復數(shù)據(jù);
      利用所述更新數(shù)據(jù)更新所述軟件中的所述目標數(shù)據(jù); 確定所述軟件升級失敗,則根據(jù)所述恢復數(shù)據(jù)恢復所述軟件的所述目
      標數(shù)據(jù)。
      本發(fā)明實施例還提供一種終端裝置,包括 接收單元,用于獲取軟件的更新數(shù)據(jù);
      恢復數(shù)據(jù)獲取單元,根據(jù)所述更新數(shù)據(jù)確定對應的所述軟件的需更新 的目標數(shù)據(jù),根據(jù)所述目標數(shù)據(jù)獲取恢復數(shù)據(jù); 存儲單元,用于保存獲取的所述恢復數(shù)據(jù);
      軟件更新單元,利用所述更新數(shù)據(jù)更新所述軟件中的所述目標數(shù)據(jù); 恢復操作單元,用于在所述軟件升級失敗時,4艮據(jù)所述恢復數(shù)據(jù)恢復 所述軟件的所述目標it據(jù)。
      本發(fā)明實施例提供的技術(shù)方案中,通過保存終端設(shè)備軟件升級所涉及 的目標數(shù)據(jù)塊;比較所獲取新版的軟件包數(shù)據(jù)與所述目標數(shù)據(jù)塊,得到差 異數(shù)據(jù)集,并保存所述差異數(shù)據(jù)集;利用獲取新版的軟件包數(shù)據(jù)更新所述 目標數(shù)據(jù)塊;若更新操作失敗,則根據(jù)所述目標數(shù)據(jù)塊或差異數(shù)據(jù)集和當 前才喿作的目標數(shù)據(jù)塊將所述軟件恢復到原有版本。在升級自身軟件時,如 果發(fā)生異常,可以實現(xiàn)終端軟件的自動恢復,自動還原為升級前的原有軟 件版本。相對與現(xiàn)有技術(shù)中的軟件升級方法,不會導致軟件被破壞,終端 設(shè)備可繼續(xù)正常使用,也可以保證終端設(shè)備完好如前,保護了終端設(shè)備。 相對于現(xiàn)有技術(shù)中的終端設(shè)備兼顧兩套運行系統(tǒng)的操作,本發(fā)明提供的方 案只需支持一套軟件運行系統(tǒng)不必增加成本,且操作便捷易行。


      圖1為本發(fā)明提供的終端設(shè)備軟件升級方法流程示意圖2為本發(fā)明實施例提供的一種終端設(shè)備軟件升級方法流程示意圖3為本發(fā)明實施例中終端設(shè)備軟件恢復流程示意圖4為本發(fā)明實施例中提供的一種終端裝置示意圖。
      具體實施例方式
      鑒于終端設(shè)備運行兩套系統(tǒng)的成本高且更為復雜,終端設(shè)備通常適宜 采用一套運行系統(tǒng)。對于只有一套運行系統(tǒng)的終端設(shè)備,本發(fā)明實施例提 供的一種終端設(shè)備軟件升級方法,在升級自身軟件時,如果發(fā)生異常,可 以實現(xiàn)終端軟件的自動恢復,自動還原為升級前的原有軟件版本,不會造 成因升級失敗而導致設(shè)備不能再使用的后果。
      在本發(fā)明提供的一個升級恢復方法,如圖1所示,可包括如下步驟
      步驟S101,獲取軟件的更新數(shù)據(jù);
      從升級服務(wù)器或其他方式獲取軟件更新需要的更新數(shù)據(jù)。
      步驟S102,根據(jù)所述更新數(shù)據(jù)確定對應的所述軟件的需更新的目標 數(shù)據(jù),根據(jù)所述目標數(shù)據(jù)獲得恢復數(shù)據(jù),保存所述恢復數(shù)據(jù);
      利用獲取的更新數(shù)據(jù)對軟件對應的目標數(shù)據(jù)進行更新,為保證升級失 敗時,可將軟件恢復,故保存根據(jù)目標數(shù)據(jù)獲得的更新數(shù)據(jù)。
      步驟S103,利用所述更新數(shù)據(jù)更新所述軟件中的所述目標數(shù)據(jù);
      需指出的是,步驟S102和步驟S103的執(zhí)行沒有嚴格的次序限制,可 先執(zhí)行步驟S102,在執(zhí)行步驟S103,反之亦可。
      步驟S104,確定所述軟件升級失敗,則根據(jù)所述恢復數(shù)據(jù)恢復所述 軟件的所述目標數(shù)據(jù)。
      由于恢復數(shù)據(jù)是根據(jù)目標數(shù)據(jù)而獲得,故,在軟件升級失敗時,可根 據(jù)恢復數(shù)據(jù)恢復目標數(shù)據(jù)。
      在上述實施例中,由于在軟件升級的過程中保存了用以恢復目標數(shù)據(jù) 的恢復數(shù)據(jù),故可在軟件升級失敗時,將軟件恢復至升級以前的版本,且 該實現(xiàn)方法消耗的軟件資源少,節(jié)約了實現(xiàn)成本。
      在本發(fā)明提供的軟件升級恢復方法的一個實施例中,上述實施例中的 恢復數(shù)據(jù)可以是目標數(shù)據(jù)本身,故而,在升級失敗時,可直接用保存的原
      目標數(shù)據(jù)恢復升級過程中被替換了的相應數(shù)據(jù),從而實現(xiàn)軟件的恢復。
      在本發(fā)明提供的軟件升級恢復方法的一個實施例中,上述實施例中的
      利用所述更新數(shù)據(jù)更新所述軟件中的所述目標數(shù)據(jù)的步驟S103可以包括 保存所述目標數(shù)據(jù)中的第n目標數(shù)據(jù)塊的數(shù)據(jù),作為第n目標數(shù)據(jù)塊的備份 數(shù)據(jù);
      軟件升級時,可對需升級的目標數(shù)據(jù)中的目標數(shù)據(jù)塊逐塊進行升級, 當升級到第n目標數(shù)據(jù)塊時,對第n目標數(shù)據(jù)塊的數(shù)據(jù)進行備份。
      用所述第n目標數(shù)據(jù)塊對應的所述更新數(shù)據(jù)中的第n更新數(shù)據(jù)塊中的 凄t據(jù)更新所述第n目標數(shù)據(jù)塊的數(shù)據(jù);其中n為不大于所述目標數(shù)據(jù)的數(shù) 據(jù)塊的數(shù)量的自然數(shù);
      第n目標數(shù)據(jù)塊中的數(shù)據(jù)備份之后,用第n更新數(shù)據(jù)塊中的數(shù)據(jù)去更 新第n目標教:據(jù)塊中的數(shù)據(jù)。
      當確定所述軟件升級失敗,則根據(jù)所述目標數(shù)據(jù)獲得恢復數(shù)據(jù)的步驟 S104具體可包括
      若所述第n目標數(shù)據(jù)塊的數(shù)據(jù)更新不成功,則將所述第n目標數(shù)據(jù)塊 的備份數(shù)據(jù)作為所述恢復數(shù)據(jù);
      當在對第n目標數(shù)據(jù)塊進行更新時,更新過程發(fā)生異常,則可將第n 目標數(shù)據(jù)塊的備份數(shù)據(jù)作為恢復數(shù)據(jù)。
      若所述第n目標數(shù)據(jù)塊的數(shù)據(jù)更新成功,則獲取所述第n更新數(shù)據(jù)塊 的數(shù)據(jù)與所述第n目標數(shù)據(jù)塊的備份數(shù)據(jù)中不同數(shù)據(jù)的集合,得到所述第 n目標數(shù)據(jù)塊的差異數(shù)據(jù)集,將所述第n目標數(shù)據(jù)塊的差異數(shù)據(jù)集作為所 述恢復數(shù)據(jù);
      若第n目標數(shù)據(jù)塊的數(shù)據(jù)更新成功,則可將第n目標標數(shù)據(jù)塊的差異 數(shù)據(jù)集作為恢復數(shù)據(jù)進行保存。
      在本發(fā)明的一個實施例中,上述得到所述第n目標數(shù)據(jù)塊的差異數(shù)據(jù) 集具體可以為
      從所述第n目標數(shù)據(jù)塊的備份數(shù)據(jù)中獲取所述第n目標數(shù)據(jù)塊的數(shù)據(jù) 將所述第n更新數(shù)據(jù)塊的數(shù)據(jù)作為更新數(shù)據(jù)集Anew;
      按如下算法求得所述第n目標數(shù)據(jù)塊的差異數(shù)據(jù)集差異數(shù)據(jù)集<formula>formula see original document page 10</formula>
      在本發(fā)明的一個實施例中,根據(jù)所述恢復數(shù)據(jù)恢復所述軟件的所述目
      標數(shù)據(jù)可以包括
      判斷需恢復的所述第n目標數(shù)據(jù)塊在軟件升級時是否更新成功; 若更新不成功,則用所述第n目標數(shù)據(jù)塊的備份數(shù)據(jù)恢復所述第n目
      標數(shù)據(jù)塊的數(shù)據(jù);
      如果更新不成功,則該數(shù)據(jù)塊的對應的第n更新數(shù)據(jù)塊的數(shù)據(jù)不便獲 取,故,采取使用第n目標數(shù)據(jù)塊的備份數(shù)據(jù)恢復所述第n目標數(shù)據(jù)塊的 數(shù)據(jù)4交為方i更。
      若更新成功,則用所述第n目標lt據(jù)塊的差異凄t據(jù)集恢復所述第n目標 數(shù)據(jù)塊的數(shù)據(jù);
      若更新成功,則更新后的該軟件中對應數(shù)據(jù)塊的數(shù)據(jù)就是第n更新數(shù) 據(jù)塊的數(shù)據(jù),可方便地利用第n更新數(shù)據(jù)塊的數(shù)據(jù)與第n目標數(shù)據(jù)塊的差異 數(shù)據(jù)集恢復第n目標數(shù)據(jù)塊的數(shù)據(jù)。
      具體而言,用所述第n目標數(shù)據(jù)塊的差異數(shù)據(jù)集恢復所述第n目標數(shù) 據(jù)塊的數(shù)據(jù)可以為
      用所述Anew減去所述第n目標數(shù)據(jù)塊的差異數(shù)據(jù)集差異數(shù)據(jù)集Adiff, 得到所述A。w,用所述A。w恢復所述第n目標數(shù)據(jù)塊的數(shù)據(jù)。
      另外,在對所述恢復數(shù)據(jù)壓縮后進行保存,具體包括
      壓縮所述目標數(shù)據(jù)和/或第n目標數(shù)據(jù)塊的差異數(shù)據(jù)集,得到所述第n 目標數(shù)據(jù)塊的壓縮差異數(shù)據(jù)集,保存所述第n目標數(shù)據(jù)塊的壓縮差異數(shù)據(jù)
      集;
      所述第n目標數(shù)據(jù)塊的差異數(shù)據(jù)集恢復所述第n目標數(shù)據(jù)塊的數(shù)據(jù)之 前進行解壓縮解壓所述第n目標it據(jù)塊的壓縮差異凄t據(jù)集,得到所述第 n目標數(shù)據(jù)塊的差異數(shù)據(jù)集。
      通過設(shè)置標志信息對升級失敗進行記錄。
      具體地,設(shè)置所述標志數(shù)據(jù)塊用于存儲標識所述軟件升級是否成功的 標識信息;根據(jù)標志數(shù)據(jù)塊確定所述軟件升級失敗。
      在所述軟件的升級過程中根據(jù)軟件升級是否成功實時更新所述標志 信息。
      在上述實施例中,由于通過保存終端設(shè)備軟件升級所涉及的目標數(shù)據(jù) 塊;比較所獲取新版的軟件包數(shù)據(jù)與所述目標數(shù)據(jù)塊,得到差異數(shù)據(jù)集,
      并保存所述差異數(shù)據(jù)集;利用獲取新版的軟件包數(shù)據(jù)更新所述目標數(shù)據(jù) 塊;若更新操作失敗,則根據(jù)所述目標數(shù)據(jù)塊或差異數(shù)據(jù)集和當前操作的 目標數(shù)據(jù)塊將所述軟件恢復到原有軟件。利用差異數(shù)據(jù)集來恢復原有軟 件,可節(jié)省存儲空間,以及對所述目標數(shù)據(jù)和/或差異數(shù)據(jù)集進行壓縮后 再進行存儲,可進一步節(jié)省存儲空間,從而降低成本。本發(fā)明實施例將所 述目標數(shù)據(jù)及差異數(shù)據(jù)集保存在非易失存儲介質(zhì)中。通常,終端設(shè)備都采 用閃存FLASH設(shè)備作為自己的非易失存儲介質(zhì),有NAND FLASH和NOR FLASH兩種。
      下面本發(fā)明實施例提供的方案以NAND FLASH為例來具體闡述。 首先,在當前終端設(shè)備運行系統(tǒng)的存儲介質(zhì)NAND FLASH存儲空間 中增加一個升級分區(qū)UPDATE,用于存儲升級過程中的新老版本差異。如 果升級程序包可以再分為幾個部分,則在UPDATE分區(qū)中相應的創(chuàng)建其對 應子分區(qū)。
      NANDFLASH分為塊(BLOCK)和頁(PAGE), 一般一頁PAGE的 用戶操作區(qū)為512bytes或2048bytes, —塊BLOCK包括32個PAGE或64個 PAGE。且NANDFLASH的操作是按BLOCK進行擦除,按PAGE進行讀寫 操作,如此則存在數(shù)據(jù)操作的不同步性。因此在擦除一個BLOCK前,需 要先備份此BLOCK的數(shù)據(jù),以防升級失敗發(fā)生在操作此BLOCK的最后一 個PAGE之前。設(shè)定此BLOCK為當前操作的BLOCK,并創(chuàng)建一個用于備 份當前操作BLOCK數(shù)據(jù)的子分區(qū)UPDATE—BLOCK,該分區(qū)用于備^f分升級 操作過程中待擦除的BLOCK數(shù)據(jù),也即正在操作的BLOCK的數(shù)據(jù),以便 在升級失敗后恢復時使用。同時記錄該BLOCK的ID,以可以查詢到是哪 一個BLOCK,方便恢復。
      同時,為了區(qū)分升級成功與失敗,在UPDATE分區(qū)中的第一個BLOCK 為標志BLOCK,通過讀取此BLOCK的數(shù)據(jù),可判斷升級成功與否,是否
      需要恢復。例如標志BLOCK的數(shù)據(jù)結(jié)構(gòu)定義如下 typedef struct
      unsigned int update—block—magic; boolean update—need—restore; unsigned char reserved[3]; } update—block—flag—s—type;
      升級前,先更新此狀態(tài)為默認的需要恢復狀態(tài),即上述數(shù)據(jù)結(jié)構(gòu)的成 員項update—need—restore為TRUE 。
      由于NANDFLASH的操作是按PAGE進行讀寫操作,因此,定義差異 數(shù)據(jù)塊的最小單位(稱為差異子元)為PAGE, —個差異子元表示以PAGE 為單位的新老版本差異數(shù)據(jù)。
      參照圖2,本發(fā)明實施例提供的一種終端設(shè)備軟件升級恢復方法,其 處理流程包括
      步驟S201,終端設(shè)備從服務(wù)器或PC下栽新版本的軟件鏡像(二進制的 流文件),即升級軟件數(shù)據(jù)包。
      下載及升級過程可以是,在獲取新版的軟件包數(shù)據(jù)過程中,每收到一 個新版的軟件數(shù)據(jù),及時利用獲取新版的軟件數(shù)據(jù)更新所述目標數(shù)據(jù)塊。 也就是說,升級過程操作中邊接收新版本軟件數(shù)據(jù)邊進行軟件數(shù)據(jù)更新操 作,而不是把整個軟件鏡像都下載下來后再升級,這樣以節(jié)約內(nèi)存空間。
      為便于描述,本實施例中,定義每PAGE的字節(jié)數(shù)為PAGE一SIZE,每個 下載包的大小為8*PAGE—SIZE,則一個數(shù)據(jù)包一次可以更新8個PAGE。 具體的更新操作如下
      步驟S202,找到要升級的目標BLOCK,將該BLOCK的數(shù)據(jù)保存到預 先設(shè)置的BLOCK備份區(qū),然后擦除此BLOCK。
      步驟S203,從所保存的備份BLOCK中讀取第一個PAGE的數(shù)據(jù),得到 老版本數(shù)據(jù)集A。w,可表示為數(shù)組A。ld[PAGE_SIZE]。
      步驟S204,從獲取的數(shù)據(jù)包中取第一個PAGE的升級數(shù)據(jù),得到新版 本數(shù)據(jù)集A,,可表示為數(shù)組A,[PAGE—SIZE]。
      步驟S205 ,按如下算法求得升級前數(shù)據(jù)集A。w和升級后新版本數(shù)據(jù)集 A,的差異集Adi^A,-A。ld,顯然可導出如下公式
      Adiff=Anew-Aold (a) A,-A礎(chǔ)-A。w, (b) Aold + Adiff = A,。 (c) 差異集A礎(chǔ)可表示為一個數(shù)組A礎(chǔ)[PAGE—SIZE]。以上計算,實際上 是對數(shù)組的每個成員項進行差異計算,以滿足公式(a)、 (b)、 (c)的要求。
      一般而言,新版本和老版本的差別不大,則對于差異集Adiff,其大部 分的成員項應該是O。
      在本發(fā)明的一個實施例中,對于差異集A皿,通過常用壓縮算法進行
      壓縮,得到壓縮后的數(shù)據(jù)Ae°mPress ,存儲到寫FLASH的緩存
      write_buffer[PAGE_SIZE]t ,等到write—buffer的數(shù)據(jù)達到PAGE—SIZE長度 后,完成一次寫FLASH的PAGE的操作。 一般而言,需要多個PAGE的差 分壓縮數(shù)據(jù)才夠?qū)懸淮蜳AGE,因此可以極大的節(jié)約存儲空間。
      步驟S206,參照步驟S204 -步驟S205對數(shù)據(jù)包中各頁PAGE數(shù)據(jù)進行 操作, 一直到該接收包的數(shù)據(jù)都處理完畢,給下載服務(wù)器回ACK應答消息, 申請服務(wù)器下發(fā)下一個升級包。
      步驟S207,重復步驟S202-步驟S206的操作, 一直到本次升級操作結(jié) 束,升級成功或者升級失敗。如果升級成功,則更新標志BLOCK的狀態(tài) 數(shù)據(jù)為成功,不需要恢復,否則仍默認為需要恢復。
      終端設(shè)備對升級操作進行監(jiān)測,當判定升級操作失敗,根據(jù)所述差異 數(shù)據(jù)集對已完成更新的數(shù)據(jù)塊BLOCK進行回復,對于當前正在更新:操作 中數(shù)據(jù)塊BLOCK,根據(jù)之前記錄的該BLOCK的ID,利用所保存的該 BLOCK以及利用差異數(shù)據(jù)集回復的數(shù)據(jù)塊BLOCK將所述軟件恢復到原有 版本。
      另外,還可按照下述步驟進行升級操作 在升級操作過程中獲取軟件的更新數(shù)據(jù);
      根據(jù)所述更新數(shù)據(jù)確定對應的所述軟件的需更新的目標數(shù)據(jù),并保存 所涉及的目標數(shù)據(jù)作為備份數(shù)據(jù);
      當所述軟件升級失敗,則根據(jù)利用所保存的目標數(shù)據(jù)恢復所述軟件。
      終端i殳備重新啟動即再加電運行時,通過主BOOTLOADER程序(此 程序是不會被升級更新的,類似PC的BIOS系統(tǒng)),讀取UPDATE分區(qū)的 標志BLOCK數(shù)據(jù),判斷是否需要恢復。如果需要恢復,則啟動恢復流程, 還原終端軟件為老版本軟件。參照圖3,恢復流程的主要操作步驟如下
      步驟S301,選擇當前操作的BLOCK為第一個BLOCK,備份當前 BLOCK的數(shù)據(jù)到UPDATE的子分區(qū)UPDATE—BLOCK ,并記錄當前 BLOCK的ID。通過該ID,可以知道已經(jīng)恢復到什么程度了 ,如果在恢復 過程中發(fā)生了異常,則下次終端上電運行后,還可以繼續(xù)進行恢復。
      步驟S302,備份完畢,擦除當前BLOCK,為寫操作做好準備。
      步驟S303,讀取UPDATE分區(qū)的第 一個備份差異數(shù)據(jù)頁PAGE的數(shù)據(jù) 到讀緩存read—buffer[PAGE—SIZE],對此數(shù)據(jù)依次進行解壓縮,依次生成 每個PAGE的差異集Adiff,根據(jù)公式(b),得到待更新PAGE對應的老版本數(shù) 據(jù)集A。w。執(zhí)行寫PAGE操作,以進行版本恢復。
      步驟S304,參照步驟S202 - S203對UPDATE分區(qū)的其余各備份差異數(shù) 據(jù)頁PAGE的數(shù)據(jù)進行相應操作,以恢復整個BLOCK的數(shù)據(jù)。
      步驟S305,重復執(zhí)行步驟S201 -步驟S204,恢復整個^f分差異集對應 的數(shù)據(jù)。
      步驟S306,讀取UPDATE分區(qū)的子分區(qū)UPDATE一BLOCK中的備份升 級BLOCK的ID和凌t據(jù),將此BLOCK的數(shù)據(jù)完整的恢復到對應BLOCK。
      步驟S307,更新UPDATE分區(qū)的標志BLOCK的數(shù)據(jù)為恢復成功,表 示軟件恢復為正常。至此,整個恢復操作完畢,所有升級失敗前的修改已 經(jīng)都恢復為升級前的老版本狀態(tài)。完成了軟件修復。
      步驟S308,如果恢復過程中發(fā)生異常,則可以通過已經(jīng)恢復的BLOCK 的ID,接著這個BLOCK繼續(xù)執(zhí)行步驟S302 -步驟S307的操作,直至恢 復成功。
      參照圖4,本發(fā)明實施例提供的一種終端裝置400,包括 接收單元410,用于獲取軟件的更新數(shù)據(jù);
      恢復數(shù)據(jù)獲取單元420,根據(jù)所述更新數(shù)據(jù)確定對應的所述軟件的需
      更新的目標數(shù)據(jù),根據(jù)所述目標數(shù)據(jù)獲取恢復數(shù)據(jù);
      存儲單元430,用于保存獲取的所述恢復數(shù)據(jù);
      軟件更新單元440,利用所述更新數(shù)據(jù)更新所述軟件中的所述目標數(shù)
      據(jù);
      恢復才喿作單元450,用于在所述軟件升級失敗時,根據(jù)所述恢復數(shù)據(jù) 恢復所述軟件的所述目標數(shù)據(jù)。
      所述軟件恢復數(shù)據(jù)為所述目標數(shù)據(jù);或所述軟件恢復數(shù)據(jù)為已更新數(shù) 據(jù)與相應目標數(shù)據(jù)的差異數(shù)據(jù)集和當前操作中的目標數(shù)據(jù)。
      所述軟件更新單元440包括
      備份單元440a,用于保存所述目標數(shù)據(jù)中的第n目標數(shù)據(jù)塊的數(shù)據(jù), 作為第n目標數(shù)據(jù)塊的備份數(shù)據(jù);其中n為不大于所述目標數(shù)據(jù)的數(shù)據(jù)塊 的數(shù)量的自然數(shù);
      更新單元440b,用于用所述第n目標數(shù)據(jù)塊對應的所述更新數(shù)據(jù)中的 第n更新數(shù)據(jù)塊中的數(shù)據(jù)更新所述第n目標數(shù)據(jù)塊的數(shù)據(jù); 所述恢復數(shù)據(jù)獲取單元420包括
      第一獲取單元420a,用于在所述更新單元對所述第n目標數(shù)據(jù)塊的數(shù) 據(jù)更新不成功時,則將所述第n目標數(shù)據(jù)塊的備份數(shù)據(jù)作為所述恢復數(shù)據(jù);
      第二獲取單元420b,用于在所述更新單元對所述第n目標數(shù)據(jù)塊的數(shù) 據(jù)更新成功時,獲取所述第n更新數(shù)據(jù)塊的數(shù)據(jù)與所述第n目標數(shù)據(jù)塊的 備份數(shù)據(jù)中不同數(shù)據(jù)的集合,得到所述第n目標數(shù)據(jù)塊的差異數(shù)據(jù)集,將 所述第n目標數(shù)據(jù)塊的差異數(shù)據(jù)集作為所述恢復數(shù)據(jù)。
      所述第二獲耳又單元420b具體用于,在所述更新單元對所述第n目標數(shù) 據(jù)塊的數(shù)據(jù)更新成功時,從所述第n目標數(shù)據(jù)塊的備份數(shù)據(jù)中獲取所述第n 目標數(shù)據(jù)塊的數(shù)據(jù)集A。,d,將所述第n更新數(shù)據(jù)塊的數(shù)據(jù)作為更新數(shù)據(jù)集 Anew,按如下算法求得所述第n目標數(shù)據(jù)塊的差異數(shù)據(jù)集差異數(shù)據(jù)集A, =Anew - A。ld,將所述第n目標數(shù)據(jù)塊的差異數(shù)據(jù)集Ad,乍為所述恢復數(shù)據(jù)。
      所述恢復操作單元450包括
      判斷單元450a,用于判斷需恢復的所述第n目標數(shù)據(jù)塊在軟件升級時 是否更新成功;
      第一恢復單元450b,用于在所述判斷單元的判斷結(jié)果為所述第n目標 數(shù)據(jù)塊在軟件升級時更新不成功的情況下,用所述第n目標數(shù)據(jù)塊的備份 數(shù)據(jù)恢復所述第n目標數(shù)據(jù)塊的數(shù)據(jù);
      第二恢復單元450c,用于在所述判斷單元的判斷結(jié)果為所述第n目標 數(shù)據(jù)塊在軟件升級時更新成功的情況下,用所述第n目標數(shù)據(jù)塊的差異數(shù) 據(jù)集恢復所述第n目標數(shù)據(jù)塊的數(shù)據(jù)。
      所述第二恢復單元450c具體用于,在所述判斷單元的判斷結(jié)果為所 述第n目標數(shù)據(jù)塊在軟件升級時更新成功時,用所述An^減去所述第n 目標數(shù)據(jù)塊的差異數(shù)據(jù)集差異數(shù)據(jù)集Adiff,得到所述A。ld,用所述Aw恢 復所述第n目標數(shù)據(jù)塊的數(shù)據(jù)。
      所述存儲單元430具體用于壓縮所述第n目標數(shù)據(jù)塊的差異數(shù)據(jù)集, 得到所述第n目標數(shù)據(jù)塊的壓縮差異數(shù)據(jù)集,保存所述第n目標數(shù)據(jù)塊的 壓縮差異數(shù)據(jù)集;
      所述恢復操作單元450,還包括
      解壓單元450d,用于解壓所述第n目標數(shù)據(jù)塊的壓縮差異數(shù)據(jù)集,得 到所述第n目標數(shù)據(jù)塊的差異數(shù)據(jù)集。
      所述存儲單元具體用于采用非易失存儲介質(zhì)存儲所述恢復數(shù)據(jù)。 應用實施例
      目前,空中傳送固件升級(FOTA, Firmware Over-The-Air)技術(shù)越來 越成熟,這項技術(shù)允許用戶通過無線網(wǎng)絡(luò)下載和接受最新的手機升級文 件,不需要借助其它設(shè)備就可以完成升級。
      將本發(fā)明實施例提供的終端設(shè)備軟件升級方法應用到采用空中傳送 固件升級FOTA技術(shù)的無線終端設(shè)備中,可取得更好的效果,以提高用戶 滿意度。
      具體地,通過特定運算,計算出升級版本和老版本之間的差分包。類 似如上Adiff = Anew - A。ld的操作,并將差分包上傳到升級服務(wù)器。
      如果需要升級,則可以通過網(wǎng)絡(luò)觸發(fā)和用戶觸發(fā)兩種觸發(fā)方式來進行 升級。其中網(wǎng)絡(luò)觸發(fā)是服務(wù)器接受到上傳的新版本后,給目標終端發(fā)送一 條PUSH短信,短信中帶有要升級的版本的URL地址。終端接受并解析
      此短信,發(fā)現(xiàn)需要升級,則與服務(wù)器直接進行版本信息鑒權(quán),以驗證是否 服務(wù)器版本比終端當前版本新。
      用戶觸發(fā)升級是用戶向服務(wù)器發(fā)一條PUSH短信,主動發(fā)起升級請 求,服務(wù)器收到短信后,由服務(wù)器發(fā)起版本信息鑒權(quán)。
      鑒權(quán)通過,則終端發(fā)起與服務(wù)器的網(wǎng)絡(luò)連接,通過HTTP方式從服務(wù) 器上將升級差分包下載下來,存儲到終端的文件系統(tǒng)中,并啟動終端自身 的升級過程。終端的升級過程一般是將終端當前老版本數(shù)據(jù)讀出到內(nèi)存 中,根據(jù)差分包,計算出新版本數(shù)據(jù)。然后將新版本數(shù)據(jù)由RAM中寫入 FLASH,完成升級才喿作。
      采用本發(fā)明提供的軟件升級方式,因為可以實現(xiàn)升級自恢復,則不需 要像如上方式那樣計算差分包,而直接可以從網(wǎng)絡(luò)上下載新版本數(shù)據(jù),邊 下載邊升級即可。
      本發(fā)明實施例提供的技術(shù)方案中,通過保存終端設(shè)備軟件升級所涉及 的目標數(shù)據(jù)塊;比較所獲取新版的軟件包數(shù)據(jù)與所述目標數(shù)據(jù)塊,得到差 異數(shù)據(jù)集,并保存所述差異數(shù)據(jù)集;利用獲取新版的軟件包數(shù)據(jù)更新所述 目標數(shù)據(jù)塊;若更新操作失敗,則根據(jù)所述差異數(shù)據(jù)集將所述軟件恢復到 原有版本。在升級自身軟件時,如果發(fā)生異常,該方案可以實現(xiàn)終端軟件 的自動恢復,自動還原為升級前的原有軟件版本,本發(fā)明方案可以解決升 級失敗導致終端設(shè)備無法使用的問題,即使升級過程中人為中斷升級過 程,也可以保證終端設(shè)備完好如前,保護了終端設(shè)備。
      同時本發(fā)明方案對存儲空間的需求很小,且對用戶操作是透明的。用 戶不需要特殊操作。
      顯然,本領(lǐng)域的技術(shù)人員應該明白,上述的本發(fā)明的各單元或各步驟
      可以用通用的計算裝置來實現(xiàn),它們可以集中在單個的計算裝置上,或者 分布在多個計算裝置所組成的網(wǎng)絡(luò)上,可選地,它們可以用計算裝置可執(zhí) 行的程序代碼來實現(xiàn),從而,可以將它們存儲在存儲裝置中由計算裝置來 執(zhí)行,或者將它們分別制作成各個集成電絲4莫塊,或者將它們中的多個單 元或步驟制作成單個集成電路模塊來實現(xiàn)。這樣,本發(fā)明不限制于任何特 定的硬件和軟件結(jié)合。
      以上所述僅為本發(fā)明的較佳實施例而已,并非用于限定本發(fā)明的保護 范圍。凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換、改進等, 均包含在本發(fā)明的保護范圍內(nèi)。
      權(quán)利要求
      1、一種終端設(shè)備軟件的升級恢復方法,其特征在于,包括:獲取軟件的更新數(shù)據(jù);根據(jù)所述更新數(shù)據(jù)確定對應的所述軟件的需更新的目標數(shù)據(jù),根據(jù)所述目標數(shù)據(jù)獲得恢復數(shù)據(jù),保存所述恢復數(shù)據(jù);利用所述更新數(shù)據(jù)更新所述軟件中的所述目標數(shù)據(jù);確定所述軟件升級失敗,則根據(jù)所述恢復數(shù)據(jù)恢復所述軟件的所述目標數(shù)據(jù)。
      2、 如權(quán)利要求l所述的方法,其特征在于,所述保存所述恢復數(shù)據(jù)為 采用非易失存儲介質(zhì)保存所述恢復數(shù)據(jù)。
      3、 如權(quán)利要求1或2所述的方法,其特征在于,所述軟件恢復數(shù)據(jù)為 所述目標數(shù)據(jù)。
      4、 如權(quán)利要求l所述的方法,其特征在于,所述利用所述更新數(shù)據(jù)更 新所述軟件中的所述目標數(shù)據(jù)包括保存所述目標數(shù)據(jù)中的第n目標數(shù)據(jù)塊的數(shù)據(jù),作為第n目標數(shù)據(jù)塊的 備份數(shù)據(jù);用所述第n目標數(shù)據(jù)塊對應的所述更新數(shù)據(jù)中的第n更新數(shù)據(jù)塊中的數(shù) 據(jù)更新所述第n目標數(shù)據(jù)塊的數(shù)據(jù);其中n為不大于所述目標數(shù)據(jù)的數(shù)據(jù)塊的數(shù)量的自然數(shù); 所述根據(jù)所述目標數(shù)據(jù)獲得恢復數(shù)據(jù)具體為若所述第n目標數(shù)據(jù)塊的數(shù)據(jù)更新不成功,則將所述第n目標數(shù)據(jù)塊的 備份數(shù)據(jù)作為所述恢復數(shù)據(jù);若所述第n目標數(shù)據(jù)塊的數(shù)據(jù)更新成功,則獲取所述第n更新數(shù)據(jù)塊的 數(shù)據(jù)與所述第n目標數(shù)據(jù)塊的備份數(shù)據(jù)中不同數(shù)據(jù)的集合,得到所述第n 目標數(shù)據(jù)塊的差異數(shù)據(jù)集,將所述第n目標數(shù)據(jù)塊的差異數(shù)據(jù)集作為所述恢 復數(shù)據(jù)。
      5、 如權(quán)利要求4所述的方法,其特征在于,所述獲取所述第n更新數(shù) 據(jù)塊的數(shù)據(jù)與所述第n目標數(shù)據(jù)塊的備份數(shù)據(jù)中不同數(shù)據(jù)的集合,得到所述 第n目標數(shù)據(jù)塊的差異數(shù)據(jù)集具體為從所述第n目標數(shù)據(jù)塊的備份數(shù)據(jù)中獲取所述第n目標數(shù)據(jù)塊的數(shù)據(jù)集 A。id;將所述第n更新數(shù)據(jù)塊的數(shù)據(jù)作為更新數(shù)據(jù)集Anew; 按如下算法求得所述第n目標數(shù)據(jù)塊的差異數(shù)據(jù)集差異數(shù)據(jù)集Adiff =AnewA。id 。
      6、 如權(quán)利要求5所述的方法,其特征在于,所述根據(jù)所述恢復數(shù)據(jù)恢 復所述軟件的所述目標數(shù)據(jù),包括判斷需恢復的所述第n目標數(shù)據(jù)塊在軟件升級時是否更新成功; 若更新不成功,則用所述第n目標數(shù)據(jù)塊的備份數(shù)據(jù)恢復所述第n目標 數(shù)據(jù)塊的數(shù)據(jù);若更新成功,則用所述第n目標數(shù)據(jù)塊的差異數(shù)據(jù)集恢復所述第n目標 數(shù)據(jù)塊的數(shù)據(jù)。
      7、 如權(quán)利要求6所述的方法,其特征在于,所述用所述第n目標數(shù)據(jù) 塊的差異數(shù)據(jù)集恢復所述第n目標數(shù)據(jù)塊的數(shù)據(jù)具體為用所述Anew減去所述第n目標數(shù)據(jù)塊的差異數(shù)據(jù)集差異數(shù)據(jù)集Adiff, 得到所述A。w,用所述A。w恢復所述第n目標&據(jù)塊的數(shù)據(jù)。
      8、 如權(quán)利要求6所述的方法,其特征在于,所述保存所述恢復數(shù)據(jù)包括壓縮所述第n目標數(shù)據(jù)塊的差異數(shù)據(jù)集,得到所述第n目標數(shù)據(jù)塊的壓 縮差異數(shù)據(jù)集,保存所述第n目標數(shù)據(jù)塊的壓縮差異數(shù)據(jù)集;所述第n目標數(shù)據(jù)塊的差異數(shù)據(jù)集恢復所述第n目標數(shù)據(jù)塊的數(shù)據(jù)之前 還包括解壓所述第n目標數(shù)據(jù)塊的壓縮差異數(shù)據(jù)集,得到所述第n目標數(shù) 據(jù)塊的差異數(shù)據(jù)集。
      9、 如權(quán)利要求1所述的方法,其特征在于,所述確定所述軟件升級失 敗具體為根據(jù)標志數(shù)據(jù)塊確定所述軟件升級失敗;所述標志數(shù)據(jù)塊用于存儲標識 所述軟件升級是否成功的標識信息; 所述方法還包括
      10、 一種終端裝置,其特征在于,包括 接收單元,用于獲取軟件的更新數(shù)據(jù);恢復數(shù)據(jù)獲取單元,根據(jù)所述更新數(shù)據(jù)確定對應的所述軟件的需更新的 目標數(shù)據(jù),根據(jù)所述目標數(shù)據(jù)獲取恢復數(shù)據(jù); 存儲單元,用于保存獲取的所述恢復數(shù)據(jù);軟件更新單元,利用所述更新數(shù)據(jù)更新所述軟件中的所述目標數(shù)據(jù); 恢復操作單元,用于在所述軟件升級失敗時,根據(jù)所述恢復數(shù)據(jù)恢復所 述軟件的所述目標數(shù)據(jù)。
      11、 如權(quán)利要求IO所述的裝置,其特征在于,所述軟件恢復數(shù)據(jù)為所 述目標數(shù)據(jù)。
      12、 如權(quán)利要求IO所述的裝置,其特征在于,所述軟件更新單元包括 備份單元,用于保存所述目標數(shù)據(jù)中的第n目標數(shù)據(jù)塊的數(shù)據(jù),作為第n目標數(shù)據(jù)塊的備份數(shù)據(jù);其中n為不大于所述目標數(shù)據(jù)的數(shù)據(jù)塊的數(shù)量的 自然數(shù);更新單元,用于用所述第n目標數(shù)據(jù)塊對應的所述更新翁:據(jù)中的第n 更新數(shù)據(jù)塊中的數(shù)據(jù)更新所述第n目標數(shù)據(jù)塊的數(shù)據(jù); 所述恢復數(shù)據(jù)獲取單元包括第一獲取單元,用于在所述更新單元對所述第n目標數(shù)據(jù)塊的數(shù)據(jù)更新 不成功時,則將所述第n目標數(shù)據(jù)塊的備份數(shù)據(jù)作為所述恢復數(shù)據(jù);第二獲取單元,用于在所述更新單元對所述第n目標數(shù)據(jù)塊的數(shù)據(jù)更新 成功時,獲取所述第n更新數(shù)據(jù)塊的數(shù)據(jù)與所述第n目標數(shù)據(jù)塊的備份數(shù)據(jù) 中不同數(shù)據(jù)的集合,得到所述第n目標數(shù)據(jù)塊的差異數(shù)據(jù)集,將所述第n 目標數(shù)據(jù)塊的差異數(shù)據(jù)集作為所述恢復數(shù)據(jù)。
      13、 如權(quán)利要求12所述的裝置,其特征在于,所述第二獲取單元具體用 于,在所述更新單元對所述第n目標數(shù)據(jù)塊的數(shù)據(jù)更新成功時,從所述第n 目標數(shù)據(jù)塊的備份數(shù)據(jù)中獲取所述第n目標數(shù)據(jù)塊的數(shù)據(jù)集A。w,將所述第n 更新數(shù)據(jù)塊的數(shù)據(jù)作為更新數(shù)據(jù)集Anew,按如下算法求得所述第n目標數(shù)據(jù) 塊的差異數(shù)據(jù)集差異數(shù)據(jù)集Ai = Anew _ A。ld,將所述第n目標數(shù)據(jù)塊的差異 數(shù)據(jù)集Adiff#為所述恢復數(shù)據(jù)。
      14、 如權(quán)利要求13所述的裝置,其特征在于,所述恢復操作單元包括 判斷單元,用于判斷需恢復的所述第n目標數(shù)據(jù)塊在軟件升級時是否更新成功;第一恢復單元,用于在所述判斷單元的判斷結(jié)果為所述第n目標數(shù)據(jù)塊 在軟件升級時更新不成功的情況下,用所述第n目標數(shù)據(jù)塊的備份數(shù)據(jù)恢復 所述第n目標數(shù)據(jù)塊的數(shù)據(jù);第二恢復單元,用于在所述判斷單元的判斷結(jié)果為所述第n目標數(shù)據(jù)塊 在軟件升級時更新成功的情況下,用所述第n目標數(shù)據(jù)塊的差異數(shù)據(jù)集恢復 所述第n目標數(shù)據(jù)塊的數(shù)據(jù)。
      15、 如權(quán)利要求14所述的裝置,其特征在于,所述第二更新單元具體 用于,在所述判斷單元的判斷結(jié)果為所述第n目標數(shù)據(jù)塊在軟件升級時更新成功時,用所述Anew減去所述第II目標數(shù)據(jù)塊的差異數(shù)據(jù)集差異數(shù)據(jù)集A,,得到所述A。ld,用所述A。ld恢復所述第n目標凄t據(jù)塊的凄史據(jù)。
      16、 如權(quán)利要求14所述的裝置,其特征在于,所述存儲單元具體用于 壓縮所述第n目標數(shù)據(jù)塊的差異數(shù)據(jù)集,得到所述第n目標數(shù)據(jù)塊的壓縮差 異數(shù)據(jù)集,保存所述第n目標數(shù)據(jù)塊的壓縮差異數(shù)據(jù)集;所述恢復操作單元還包括解壓單元,用于解壓所述第n目標數(shù)據(jù)塊的壓縮差異數(shù)據(jù)集,得到所述 第n目標數(shù)據(jù)塊的差異數(shù)據(jù)集。
      17、 如權(quán)利要求10-15任一所述的裝置,其特征在于, 所述存儲單元具體用于采用非易失存儲介質(zhì)存儲所述恢復數(shù)據(jù)。
      全文摘要
      本發(fā)明公開了一種終端設(shè)備軟件的升級恢復方法,包括獲取新版的軟件包數(shù)據(jù);確定待更新的目標數(shù)據(jù)塊,并保存所述目標數(shù)據(jù)塊;比較所述新版的軟件包數(shù)據(jù)與所述目標數(shù)據(jù)塊,得到差異數(shù)據(jù)集,并保存所述差異數(shù)據(jù)集;利用獲取新版的軟件包數(shù)據(jù)更新所述目標數(shù)據(jù)塊;若更新操作失敗,則根據(jù)所述差異數(shù)據(jù)集將所述軟件恢復到原有版本。本發(fā)明還提供相應的可采用該方法進行軟件升級的終端設(shè)備。根據(jù)本發(fā)明,在軟件升級異常時,可實現(xiàn)終端軟件的自動恢復,自動還原為升級前的原有軟件版本,保護了終端設(shè)備。
      文檔編號G06F9/445GK101377744SQ20081016128
      公開日2009年3月4日 申請日期2008年9月24日 優(yōu)先權(quán)日2008年9月24日
      發(fā)明者苑康強 申請人:深圳華為通信技術(shù)有限公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1