專利名稱:一種客戶端啟動軟件的動態更新方法及其裝置的制作方法
技術領域:
本發明涉及一種啟動軟件的更新方法和裝置,特別是涉及一種分布式系統中客戶端啟動軟件的動態更新方法和裝置。
背景技術:
目前移動通信領域的基站系統可能由分布在一個城市或地區的很廣范圍內數以百計的基站組成,且為了便于維護,降低維護成本一般采用無人職守方式,通過網管系統進行自動化管理。
基站系統的各功能模塊的啟動都是由該模塊上的非易失性啟動引導存儲器(BOOT)上的啟動軟件來完成。目前該啟動軟件普遍采用專門的燒錄設備固化到BOOT上,一旦需要更新BOOT中的啟動軟件,就要求維護人員親自到上百個基站去取下相關模塊,替換其BOOT,這對于無人職守,分布廣泛的移動通信基站系統來說,無疑要耗費大量的人力、物力,增加了維護成本,加大了維護人員的工作量,也增加了系統的不穩定性。
發明內容
本發明所要解決的技術問題在于提供一種客戶端啟動軟件的動態更新方法及其裝置,用于解決現有技術分布式系統中客戶端啟動軟件只能手工燒錄,無法動態更新的缺陷。
為了實現上述目的,本發明提供了一種客戶端啟動軟件的動態更新方法,適用于分布式系統,其特征在于,包括步驟一,通過客戶端設置一第一啟動引導存儲器、一第二啟動引導存儲器;步驟二,服務器端與所述客戶端建立連接并向所述客戶端發送一動態更新啟動軟件的命令消息,所述客戶端從所述服務器端下載并保存更新啟動軟件;步驟三,根據引導存儲器啟動標志值判斷所述客戶端當前是從所述第一啟動引導存儲器還是從所述第二啟動引導存儲器啟動,將所述更新啟動軟件寫入非當前啟動引導存儲器,并設置所述客戶端下次從所述非當前啟動引導存儲器啟動;及步驟四,所述客戶端復位后從所述非當前啟動引導存儲器啟動,運行所述更新啟動軟件。
所述的客戶端啟動軟件的動態更新方法,其中,若所述客戶端當前從所述第一啟動引導存儲器啟動,則所述第二啟動引導存儲器啟動為非當前啟動引導存儲器;若所述客戶端當前從所述第二啟動引導存儲器啟動,則所述第一啟動引導存儲器啟動為非當前啟動引導存儲器。
所述的客戶端啟動軟件的動態更新方法,其中,所述步驟四中,還包括一判斷所述客戶端從所述非當前啟動引導存儲器啟動是否成功的步驟。
所述的客戶端啟動軟件的動態更新方法,其中,若所述客戶端從所述非當前啟動引導存儲器啟動失敗,則所述客戶端切換至所述當前啟動引導存儲器啟動,所述客戶端動態更新啟動軟件失敗。
為了實現上述目的,本發明還提供了一種客戶端啟動軟件的動態更新裝置,設置于分布式系統的客戶端,其特征在于,包括客戶端CPU、第一啟動引導存儲器、第二啟動引導存儲器、邏輯控制器以及非易失性隨機存取存儲器;所述邏輯控制器根據所述非易失性隨機存取存儲器中記錄的引導存儲器啟動模式值選擇從所述第一啟動引導存儲器或第二啟動引導存儲器啟動,并保存成功啟動的引導存儲器為當前啟動引導存儲器;所述客戶端CPU根據所述邏輯控制器中的啟動引導存儲器的編號將更新啟動軟件寫入非當前啟動引導存儲器,并將所述引導存儲器啟動模式值設置為非當前啟動引導存儲器;所述客戶端CPU在復位后根據所述引導存儲器啟動模式值從所述非當前啟動引導存儲器啟動,運行所述更新啟動軟件。
所述的客戶端啟動軟件的動態更新裝置,其中,所述邏輯控制器還包括一啟動引導存儲器定時切換模塊,用于在所述當前啟動引導存儲器與所述非當前啟動引導存儲器之間進行切換。
所述的客戶端啟動軟件的動態更新裝置,其中,當所述更新啟動軟件運行成功時,所述啟動引導存儲器定時切換模塊處于關閉狀態;當所述更新啟動軟件運行失敗時,所述啟動引導存儲器定時切換模塊處于開啟狀態。
所述的客戶端啟動軟件的動態更新裝置,其中,當所述客戶端CPU從所述非當前啟動引導存儲器啟動失敗時,則所述客戶端CPU切換至所述當前啟動引導存儲器啟動。
所述的客戶端啟動軟件的動態更新裝置,其中,所述邏輯控制器為電可編程邏輯器。
本發明的有益技術效果在于相對于現有技術方法,本發明所提供的靈活可靠的動態更新方法和裝置可以根據需要在系統運行中,從有人職守的服務器端動態更新無人職守的客戶端啟動軟件,無需到分散的客戶端去更換BOOT,節省了大量人力、物力,降低了系統維護成本,大大增強了系統穩定性。
以下結合附圖和具體實施例對本發明進行詳細描述,但不作為對本發明的限定。
圖1為本發明客戶端啟動軟件動態更新裝置圖;圖2為本發明客戶端啟動軟件動態更新方法流程圖。
具體實施例方式
下面結合附圖對本發明的技術方案作進一步詳細的說明。
請參閱圖1所示,為本發明客戶端啟動軟件動態更新裝置圖。如圖1所示,該動態更新裝置設置于客戶端,包括CPU(Central Processing Unit,中央處理器)10、EPLD(Electrically Programmable Logic Device,電可編程邏輯器)20、BOOT 30和NVRAM(Non-Volatile Random Access Memory,非易失性隨機存取存儲器)40;BOOT 30用于存放不同版本的啟動軟件,其又包括BOOT0 301、BOOT1 302兩片BOOT;CPU 10只能從一片BOOT0 301或BOOT1 302啟動;NVRAM 40由于其具有掉電不丟失信息的特性,用于記錄BOOT啟動標志值(或稱為BOOT啟動模式值),即CPU 10復位后應該從BOOT0 301還是BOOT1302啟動。
EPLD 20在上電后根據NVRAM 40中記錄的BOOT啟動標志值選中一片BOOT,CPU 10從選中的BOOT啟動,即當前啟動BOOT。
EPLD 20在上電后將CPU 10的BOOT片選交給上述NVRAM 40記錄的BOOT啟動標志值對應的BOOT,使CPU 10從該BOOT啟動,并在BOOT啟動成功后保存當前啟動BOOT的編號;另外,作為一種BOOT保護機制,EPLD 20還包括一BOOT定時切換模塊201,用于實現BOOT定時切換,當選中的BOOT無法成功啟動時,EPLD 20的BOOT定時切換模塊201在定時時間到后將BOOT片選切換到另一片BOOT,使得CPU 10從另一片BOOT啟動,當BOOT成功啟動后,需要在啟動軟件中關閉該BOOT定時切換模塊201。
當需要動態更新啟動軟件時,CPU 10會讀取到當前啟動BOOT的編號,將更新的啟動軟件寫到非當前啟動BOOT中,并將NVRAM 40中的BOOT啟動標志值設定為非當前啟動BOOT,客戶端復位后,就會根據NVRAM 40中記錄的BOOT啟動標志值運行更新的啟動軟件,完成啟動軟件的動態更新。
EPLD 20也可為其他邏輯控制器。
而目前現有裝置則普遍采用一片BOOT,CPU 10只能從該BOOT啟動,BOOT所包含的啟動軟件的更新只能采用專門的燒錄設備固化到BOOT上。
請參閱圖2所示,為本發明客戶端啟動軟件動態更新方法流程圖。在圖2中,給出了本發明具體實施例的軟件流程,結合圖1所示,該流程包括如下步驟步驟200,系統正常運行后,服務器端與客戶端建立連接;步驟210,當軟件或硬件接口發生變化,需要更新客戶端BOOT的啟動軟件時,通過操作維護系統的服務器端(后臺)向客戶端發起動態更新客戶端啟動軟件的命令消息;步驟220,客戶端收到命令消息后,從服務器端下載更新的啟動軟件,經校驗無誤后保存在隨機存儲器RAM(Random Access Memory)中;步驟230,接著客戶端根據啟動標志值判斷CPU當前是從BOOT0啟動還是從BOOT1啟動的,若CPU當前是從BOOT0啟動,BOOT0為當前啟動BOOT,那么BOOT1為非當前啟動BOOT;若CPU當前是從BOOT1啟動,BOOT1為當前啟動BOOT,那么BOOT0為非當前啟動BOOT;根據EPLD記錄的啟動標志值,確定當前啟動BOOT的編號,客戶端將下載獲得的更新的啟動軟件寫入到非當前啟動BOOT中,非當前啟動BOOT成為更新了啟動軟件的BOOT,由于EPLD中保留了當前啟動BOOT的編號,由EPLD來確保每次CPU寫BOOT操作都只能將數據寫入非當前啟動BOOT,用于保護當前啟動成功的BOOT啟動軟件不被破壞。
步驟240,然后客戶端將BOOT啟動模式值(即非當前啟動BOOT的BOOT啟動模式值)寫入NVRAM,指示下一次復位時,CPU從更新了啟動軟件的BOOT啟動;步驟250,復位客戶端;步驟260,客戶端復位后,客戶端的EPLD根據NVRAM中存儲的BOOT啟動模式值,將BOOT片選交給更新了啟動軟件的BOOT啟動,CPU從該更新了啟動軟件的BOOT啟動,運行更新的啟動軟件;步驟270,通過啟動軟件是否關閉了EPLD的BOOT定時切換模塊來判斷更新的啟動軟件是否成功運行,如果更新的啟動軟件成功運行,即CPU從該更新了啟動軟件的BOOT啟動成功,則轉至步驟280執行,如果更新的啟動軟件無法成功運行(即運行失敗),即CPU從該更新了啟動軟件的BOOT啟動失敗,則轉至步驟290執行;步驟280,啟動軟件關閉了EPLD的BOOT切換功能,BOOT定時切換模塊處于關閉狀態,將當前啟動BOOT的編號寫入EPLD,客戶端設置更新了啟動軟件的BOOT為當前啟動BOOT,本次客戶端啟動軟件動態更新成功,以后客戶端使用新的啟動軟件啟動,即下一次運行更新的啟動軟件;步驟290,EPLD中BOOT定時切換模塊處于開啟狀態,其BOOT定時切換功能起作用,待定時時間到后,將BOOT片選切換到包含舊啟動軟件的BOOT啟動,本次客戶端啟動軟件動態更新失敗,以后客戶端仍然使用舊的啟動軟件啟動,即下一次仍然運行舊的啟動軟件。
綜上所述,本發明方法和裝置克服了現有啟動軟件只能手工燒錄和替換的缺陷,可以動態更新客戶端的啟動軟件,并采用了有效的保護機制以確保動態更新的安全可靠,從而節省了大量人力、物力,降低了維護成本,增加了系統的穩定性。
當然,本發明還可有其他多種實施例,在不背離本發明精神及其實質的情況下,熟悉本領域的技術人員當可根據本發明作出各種相應的改變和變形,但這些相應的改變和變形都應屬于本發明所附的權利要求的保護范圍。
權利要求
1.一種客戶端啟動軟件的動態更新方法,適用于分布式系統,其特征在于,包括步驟一,通過客戶端設置一第一啟動引導存儲器、一第二啟動引導存儲器;步驟二,服務器端與所述客戶端建立連接并向所述客戶端發送一動態更新啟動軟件的命令消息,所述客戶端從所述服務器端下載并保存更新啟動軟件;步驟三,根據引導存儲器啟動標志值判斷所述客戶端當前是從所述第一啟動引導存儲器還是從所述第二啟動引導存儲器啟動,將所述更新啟動軟件寫入非當前啟動引導存儲器,并設置所述客戶端下次從所述非當前啟動引導存儲器啟動;及步驟四,所述客戶端復位后從所述非當前啟動引導存儲器啟動,運行所述更新啟動軟件。
2.根據權利要求1所述的客戶端啟動軟件的動態更新方法,其特征在于,若所述客戶端當前從所述第一啟動引導存儲器啟動,則所述第二啟動引導存儲器啟動為非當前啟動引導存儲器;若所述客戶端當前從所述第二啟動引導存儲器啟動,則所述第一啟動引導存儲器啟動為非當前啟動引導存儲器。
3.根據權利要求1或2所述的客戶端啟動軟件的動態更新方法,其特征在于,所述步驟四中,還包括一判斷所述客戶端從所述非當前啟動引導存儲器啟動是否成功的步驟。
4.根據權利要求3所述的客戶端啟動軟件的動態更新方法,其特征在于,若所述客戶端從所述非當前啟動引導存儲器啟動失敗,則所述客戶端切換至所述當前啟動引導存儲器啟動,所述客戶端動態更新啟動軟件失敗。
5.一種客戶端啟動軟件的動態更新裝置,設置于分布式系統的客戶端,其特征在于,包括客戶端CPU、第一啟動引導存儲器、第二啟動引導存儲器、邏輯控制器以及非易失性隨機存取存儲器;所述邏輯控制器根據所述非易失性隨機存取存儲器中記錄的引導存儲器啟動模式值選擇從所述第一啟動引導存儲器或第二啟動引導存儲器啟動,并保存成功啟動的引導存儲器為當前啟動引導存儲器;所述客戶端CPU根據所述邏輯控制器中的啟動引導存儲器的編號將更新啟動軟件寫入非當前啟動引導存儲器,并將所述引導存儲器啟動模式值設置為非當前啟動引導存儲器;所述客戶端CPU在復位后根據所述引導存儲器啟動模式值從所述非當前啟動引導存儲器啟動,運行所述更新啟動軟件。
6.根據權利要求5所述的客戶端啟動軟件的動態更新裝置,其特征在于,所述邏輯控制器還包括一啟動引導存儲器定時切換模塊,用于在所述當前啟動引導存儲器與所述非當前啟動引導存儲器之間進行切換。
7.根據權利要求6所述的客戶端啟動軟件的動態更新裝置,其特征在于,當所述更新啟動軟件運行成功時,所述啟動引導存儲器定時切換模塊處于關閉狀態;當所述更新啟動軟件運行失敗時,所述啟動引導存儲器定時切換模塊處于開啟狀態。
8.根據權利要求5、6或7所述的客戶端啟動軟件的動態更新裝置,其特征在于,當所述客戶端CPU從所述非當前啟動引導存儲器啟動失敗時,則所述客戶端CPU切換至所述當前啟動引導存儲器啟動。
9.根據權利要求5、6或7所述的客戶端啟動軟件的動態更新裝置,其特征在于,所述邏輯控制器為電可編程邏輯器。
全文摘要
本發明公開了一種客戶端啟動軟件的動態更新方法及其裝置,適用于分布式系統,該方法包括步驟一,通過客戶端設置第一啟動引導存儲器、第二啟動引導存儲器;步驟二,服務器端與所述客戶端建立連接并向所述客戶端發送動態更新啟動軟件的命令消息,所述客戶端從所述服務器端下載并保存更新啟動軟件;步驟三,根據引導存儲器啟動標志值判斷所述客戶端當前是從所述第一啟動引導存儲器還是從所述第二啟動引導存儲器啟動,將所述更新啟動軟件寫入非當前啟動引導存儲器,并設置所述客戶端下次從所述非當前啟動引導存儲器啟動;及步驟四,所述客戶端復位后從所述非當前啟動引導存儲器啟動,運行所述更新啟動軟件。本發明實現了客戶端啟動軟件的動態更新。
文檔編號G06F9/445GK101078990SQ20061001199
公開日2007年11月28日 申請日期2006年5月25日 優先權日2006年5月25日
發明者汪康洪, 丁華 申請人:中興通訊股份有限公司