軟體更新方法

2021-07-08 10:26:53 字數 4026 閱讀 8714

軟體更新方法

摘要

本發明涉及通訊領域,公開了一種軟體更新方法,使得能夠在一次更新過程中,提供軟體新增功能的無縫銜接和新版本軟體的格式更改,同時使得軟體公升級方法對未來的未知需求有最佳的適應能力,並能提高軟體公升級效率。本發明將要公升級的軟體分為三個部分:新版本軟體包頭部、與軟體公升級相關的部分和其餘部分,同時將軟體更新包括步驟,傳送包頭部、更新與軟體公升級相關的部分以及更新其餘部分。使得在載入了與軟體公升級相關的部分後,便可利用新的軟體公升級部分來更新其餘的新版本軟體。

權利要求(5)

說明

軟體更新方法

技術領域

本發明涉及通訊領域,特別涉及伺服器對遠端系統進行軟體更新的技術。

背景技術

隨著時代的進步,資訊科學飛速發展,各種系統的軟體和硬體公升級換代的週期越來越短。由於軟體更新的成本較小,且可以帶來較大的收益,因此軟體的更新換代週期尤其短。在各種實際應用系統中,例如通訊系統、自動化系統等系統中,軟體公升級更是一種普遍的現象。而在這類系統中,通常由於各部件分布的比較遠,且維護起來較困難,因此軟體更新的效率較低。而此類系統對業務工作的不間斷性要求較高,通常要求業務盡可能不中斷,即是在若必須中斷的情況下,也要求能夠使中斷的時間越短越好。因此在此類系統中,對系統更新方法的效率有很高的要求。即要求軟體公升級對系統造成的影響最小。

通常,將完成相對完整功能的多個軟體的集合稱為軟體包,通常由版本來標識。例如通訊系統中基站的軟體包即是包含了所有基站軟體內容的檔案。將系統中當前正在執行的軟體稱為執行軟體,由乙個特定的版本來標識。將舊版本的軟體替換成新版本軟體包裡軟體進行執行的過程稱為軟體更新。軟體包中包含很多內容,其中與軟體公升級相關的內容被稱為軟體公升級軟體部分。

圖1是關鍵更新示意圖,如圖所示,假設基站原來執行的舊版本軟體需要更新為新版本軟體,大致流程是這樣的:首先,將包含新版本軟體的軟體包從伺服器傳送到待公升級的基站,負責傳送的功能由舊版本軟體完成;此時基站硬碟中儲存了新版本軟體,但記憶體中仍舊還在執行舊版本軟體;此後,待公升級的基站的硬體復位,初始化、新版本軟體校驗通過後開始執行,即基站執行新版本軟體。

由此可見,在更新過程中,從伺服器向基站傳送新版本軟體的軟體包,分發到基站中各個執行部件,硬體復位各個部件,使記憶體中的正在執行的舊版本軟體替換成軟體包中的新版本軟體。

在實際應用中,上述方案存在以下問題:首先,無法適應新軟體包格式的更改,即當需要通過預先讀取軟體包,只對不相同的部分進行傳送而提高傳送效率時,由於新版軟體包格式已經進行了更改,舊版軟體就無法完成對新版軟體包識別;第二,無法無縫銜接新增功能,即當新版軟體包增加了新功能,若此新功能使得新版軟體在進行公升級時,需由原有的軟體對新軟體包進行一定操作後才能完成公升級,而舊版軟體沒有提供此功能,則無法完成公升級的無縫銜接。

發明內容

有鑑於此,本發明的主要目的在於提供一種軟體更新方法,使得能夠在一次更新過程中,提供軟體新增功能的無縫銜接和新版本軟體的格式更改,同時使得軟體公升級方法對未來的未知需求有最佳的適應能力,同時提高軟體公升級效率。

進一步的,還包含復位所述待公升級系統的步驟。

通過比較可以發現,本發明的技術方案與現有技術的區別在於,原有方法軟體更新的工作由舊版軟體完成。而本發明將要公升級的軟體分為兩部分:與軟體公升級相關的部分和其餘部分,同時將軟體更新也分為兩個步驟,更新與軟體公升級相關的部分以及更新其餘部分。使得在載入了與軟體公升級相關的部分後,便可利用新的軟體公升級部分來更新其餘的新版本軟體。

這種技術方案上的區別,帶來了較為明顯的有益效果,即可以更新更改格式後的軟體,同時能夠提供新版本軟體新增功能的無縫銜接,可以在一次公升級中體現新的公升級功能。對未來未知的需求變動有最佳的適應能力。同時提高了軟體公升級的效率。

附圖說明

圖1是根據本發明的乙個實施例的軟體更新方法中的軟體組成結構圖;圖2是根據本發明的乙個實施例的軟體更新方法的流程示意圖。

具體實施方式

為使本發明的目的、技術方案和優點更加清楚,下面將結合附圖對本發明作進一步地詳細描述。

首先需要說明,本發明適用於任何由**伺服器對遠端系統進行更新。在這種型別的系統中,通常對系統業務的工作連續性要求很高,即要求系統能夠不間斷的工作,在這類系統的軟體更新過程中,通常要求軟體更新對系統業務執行帶來的影響達到最小,如果需要中斷業務,也最好能夠使得業務中斷的時間盡可能短。通訊系統就是乙個典型的例子。在這類系統中,通常軟體的更新換代很快,部件分布在較遠處,維護起來比較困難。以下將結合附圖,通過對無線通訊系統基站裝置的軟體更新來說明本發明的軟體更新方法。

在本發明中,將軟體分為三個部分,如圖2所示,軟體由軟體包頭10,軟體公升級相關部分11以及軟體其餘部分12組成。

以下將原有軟體的版本稱為軟體a,將要公升級的軟體版本稱為軟體b。下面結合附圖3根據本發明的乙個實施例對本發明的軟體的更新方法進行詳細的說明。

在步驟110,系統操作員控**務器向基站傳送新版本軟體b包頭部以及與軟體公升級相關的部分。此時基站仍然在執行原有版本軟體a。軟體包的包頭部通常都是固定格式,包含了軟體包的總體資訊,例如軟體包的版本資訊、軟體包大小、後續檔案個數等等。基站軟體a可以通過軟體b的包頭部資訊識別軟體b後續檔案的資訊,通過軟體b的版本資訊對軟體版本進行合法控制,通過軟體的包頭部資訊建立後續內容列表,從而提高後續檔案的傳送效率。軟體公升級相關部分包含了公升級軟體的自身資訊,例如新函式的入口等等。通常軟體公升級相關部分緊跟在包頭部後面,也是固定格式,因此可以依次獲取到。由於其採用的是固定格式,因此原有軟體a也可以順利識別。在傳送完軟體b的公升級相關部分後,基站軟體a獲得了新功能函式的入口名稱。

接著進入到步驟120,通過原有軟體a將軟體b的公升級相關部分載入到預留記憶體。這一步可以由系統操作員通過向基站傳送命令來完成,也可以在軟體a中進行設計,使得軟體a能夠自動識別以及載入,從而實現軟體b的公升級相關功能的載入。在本發明中,對舊版本軟體a也有一定要求,即軟體a必須能夠為新版本軟體b預留一部分記憶體,同時能夠將接收到的新版本軟體b公升級相關資訊載入到預留記憶體部分。但是這一點並不會限制本發明的使用,因為在進行了前續的工作後,即利用現有技術進行了第一次更新後,使得軟體擁有了上述功能,以後的更新就都可以使用本發明中的方法了。此時,基站仍然在執行原有軟體a,但是軟體b的公升級相關部分已經在記憶體中了。

接著進入步驟130,更改基站軟體函式入口,使公升級相關部分更新為新版本軟體的公升級部分。在此步驟中,可以在系統符號中尋找新功能的入口,而新功能的入口名稱已經由原有軟體a在步驟110中在傳送完了新版本軟體b的公升級相關部分之後獲得了。然後把功能函式替換成新的功能入口。這一步驟也可以設計相應的功能由軟體來實現。通過這一步驟,原有軟體a的基站的業務執行相關的部分斷開了與軟體a公升級相關部分的連線,而與預留記憶體中的新版本軟體b的公升級相關的部分相連線了,此時,基站業務執行相關的部分仍然在執行原有軟體a,而公升級相關部分已經在執行新版本軟體b的相關部分了。

接著進入步驟140,系統使用新載入的公升級相關功能來傳送新版本軟體的剩餘部分。此時基站裡與公升級相關的部分已經更新為了新版本軟體b的相關部分,而其餘部分仍然在執行原有軟體a。因此剩下的公升級過程都由新版本軟體b的相關功能來完成了。例如,若為了提高傳送效率,新增加了壓縮功能,而原有軟體a沒有解壓縮功能,原有方法無法方便完成公升級功能,而在本發明的方法中,由於已經在上述的步驟中將公升級相關的部分載入並執行了,而解壓縮功能由於與公升級相關也被包含在其中被載入了,因此此時的基站軟體具有了解壓縮功能,就能完成後續檔案的接收以及解壓縮,從而完成功能的無縫銜接。又例如,為了提高傳送效率,增加了對軟體包的預先讀取,如相同則不進行傳送,而僅僅傳送不相同的部分,像這樣引入了新的功能,則需更改軟體包的結構,從而造成原有執行軟體無法識別新格式的軟體包,而在現有發明中,新軟體b的公升級相關部分則能夠識別這種軟體包的格式更改,同時及時引入和利用了新的公升級相關功能。在本步驟完成時,基站中存在新舊兩種版本的軟體。

最後進入步驟150,系統操作員復位基站各部件,開始執行新版本軟體。從而完成了軟體的更新。在本步驟中,基站各部件在短時間內復位後,即開始執行新版本軟體,因此業務中斷時間很短。

TinyOS更新方法

介紹兩種方法 在linux或者cygwin環境下更新 設定環境變數 export cvsroot pserver anonymous tinyos.cvs.sourceforge.net cvsroot tinyos 接入命令 cvs d pserver anonymous tinyos.cvs.s...

Android Studio SDK 更新方法

1 sudo vim hosts 輸入密碼後進行編輯,新增如下幾行 1 2 3 4 5 6 7 google主頁 203.208.46.146 www.google.com 這行是為了方便開啟android開發官網 現在好像不翻也可以開啟 在preference中進行設定,修改配置如下 然後勾選強制...

UI更新方法

在講解更新ui方法前,我們先來了解一些概念 當應用啟動,系統會建立乙個 主線程 main thread 這個主線程負責向ui元件分發事件 包括繪製事件 ui的更新也必須在主線程中完成,讓主線程做處理,因此也可以說,主線程即ui執行緒。主線程主要的職責是 1 快速處理ui事件,2 快速處理broadc...