專利名稱:軟件更新方法、設(shè)備和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明通常涉及一種用于更新位于遠程的電子裝置內(nèi)的軟件的方法、設(shè)備和系統(tǒng)。更具體的,本發(fā)明涉及一種用于更新位于遠程的連接到網(wǎng)絡(luò)的電子裝置內(nèi)的軟件的方法、系統(tǒng)和設(shè)備,在此網(wǎng)絡(luò)中,該裝置可從更新失敗中恢復(fù),并通過網(wǎng)絡(luò)完成更新。
背景技術(shù):
許多普通電子裝置包括可重寫存儲器,其在當(dāng)關(guān)斷裝置電源時,允許更改或替換在該裝置內(nèi)持續(xù)存在的軟件或數(shù)據(jù)。目前,這樣的可重寫存儲器通常是快速存儲器(flash memory)或類似物,盡管可以采用其它類型的存儲器或存儲裝置??焖俅鎯ζ魇且环N非易失性的固態(tài)類型存儲器,因為當(dāng)關(guān)閉電源時它不丟失數(shù)據(jù),同時可重寫以容納不同的數(shù)據(jù)??焖俅鎯ζ髁餍惺且驗樗o湊、耐用、快速并可重寫。例如,蜂窩電話使用快速存儲器以保存實現(xiàn)電話功能、快速撥號號碼,振鈴音調(diào)、固件更新等的軟件。因此,當(dāng)實施新功能或故障修理(bugfixes)時,電子裝置內(nèi)的固件可以更新。
然而,快速存儲器或其等同物不是沒有缺點的。一個缺點就是,快速存儲器非常貴。在制造商需要使消費者花費較低的裝置中,必需設(shè)計該裝置以最小化所需的快速存儲器量。
雖然明確期望具有更新在所使用裝置中的固件或其它軟件或數(shù)據(jù)的能力,但是,更新電子裝置內(nèi)的快速存儲器并不總是十分簡單。例如,當(dāng)多數(shù)蜂窩電話需要固件或其它軟件更新時,必需將蜂窩電話帶到當(dāng)?shù)胤?wù)中心,在那里將蜂窩電話經(jīng)有線數(shù)據(jù)鏈路連接到保存更新軟件的更新站來更新軟件。如果在更新會話期間傳送新軟件出現(xiàn)問題,則將導(dǎo)致裝置進入未知或不能工作的狀態(tài),能夠重新設(shè)置該裝置,并且簡單地重新傳送新軟件,直至傳送完成且裝置運行正常為止。
然而,這不是一項吸引人的選擇,因為它需要用戶的主動參與或合作,他必需訪問服務(wù)中心。對于一些裝置,例如無線本地環(huán)用戶站,把用戶站帶到服務(wù)中心意味著,除到服務(wù)中心的并不方便的旅程之外,在用戶站通常在的駐留位置會暫時沒有電話或數(shù)據(jù)服務(wù)。
先前已經(jīng)做出通過裝置所連接的網(wǎng)絡(luò)來提供更新給裝置內(nèi)的非易失性可重寫存儲器。例如,蜂窩電話可以通過為其服務(wù)的無線網(wǎng)絡(luò)接收用于其快速存儲器軟件更新。然而,這種技術(shù)中存在的問題是,如果傳輸失敗或因為任何原因中斷,裝置可能進入未知或不工作狀態(tài)。在這種情況下,和以上在服務(wù)中心進行更新的例子不同,試圖重發(fā)射更新軟件是不可能的,并將給用戶留下一個不工作的裝置,直至將此裝置返回到服務(wù)中心。
對此問題的一個現(xiàn)有解決方案是,提供可重寫存儲器的獨立存儲庫(bank)。Hansson的美國專利6,023,620教導(dǎo)了一種蜂窩電話系統(tǒng),其中可重寫存儲器的一半是用于維持當(dāng)前軟件版本的存儲庫,而將更新軟件下載到可重寫存儲器的另一半存儲庫中。一旦蜂窩電話確定傳送成功,例如通過驗證CRC,蜂窩電話切換到使用存儲器的更新存儲庫,且包含舊軟件的存儲庫可用于接收下一次更新。在Narayanaswamy等的美國專利6,275,931中教導(dǎo)了另一個類似現(xiàn)有技術(shù)解決方方案。這些配置防止在更新期間發(fā)生不能恢復(fù)的錯誤,但是需要兩倍的昂貴的可重寫存儲器。
同樣,以上討論的現(xiàn)有技術(shù)更新方法通常需要裝置用戶的合作和參與,或者要求他們訪問服務(wù)中心,或者要求他們通過網(wǎng)絡(luò)接受或啟動更新數(shù)據(jù)的傳送。諸如那些對于網(wǎng)絡(luò)運營者將要改進網(wǎng)絡(luò)中的穩(wěn)定性和容量的關(guān)鍵的更新會由于對用戶不方便性而遭到他們的拒絕或另外推遲。此外,對于發(fā)明人已知的現(xiàn)有技術(shù)方法,必需獨立執(zhí)行網(wǎng)絡(luò)中的各個裝置的更新。
期望能有一種方法和系統(tǒng),其能可靠更新連接到網(wǎng)絡(luò)的裝置的非易失性可重寫存儲器內(nèi)的軟件或數(shù)據(jù),且其不需要在裝置內(nèi)雙倍量的非易失性可重寫存儲器,并且其在多個裝置上同時以及自動實現(xiàn)。
發(fā)明內(nèi)容
本發(fā)明的一個目的是提供一種新的方法,系統(tǒng)和設(shè)備,其用于通過網(wǎng)絡(luò)來更新電子裝置內(nèi)的軟件,其避免或減輕至少現(xiàn)有技術(shù)上述已知缺點之一。
根據(jù)本發(fā)明的一個第一方面,提供了一種用于通過通信鏈路來遠程更新至少一個電子裝置的系統(tǒng)。該系統(tǒng)包括更新服務(wù)器,易失性存儲器,在所述至少一個電子裝置內(nèi)的非易失性可重寫存儲單元,以及在裝置上執(zhí)行的更新客戶端。更新服務(wù)器操作用于通過通信鏈路傳送包括核心固件以及輔助軟件的更新到至少一個電子裝置。易失性存儲器用于暫時存儲從更新服務(wù)器接收的傳送。非易失性可重寫存儲單元被分為至少第一和第二分區(qū),第一分區(qū)存儲核心固件和輔助軟件的版本之一,且第二分區(qū)存儲核心固件和輔助軟件的另一版本。更新客戶端在裝置上執(zhí)行,以操作用于(i)用接收到的存儲在易失性存儲器內(nèi)的更新核心固件來重寫存儲在第一和第二分區(qū)之一內(nèi)的輔助軟件的版本,并驗證該寫入的成功;(ii)當(dāng)下一次重新啟動裝置時,配置裝置,以執(zhí)行存儲在(i)內(nèi)的核心固件;(iii)用接收到的存儲在易失性存儲器內(nèi)的更新輔助軟件來重寫存儲在第一和第二分區(qū)另一個內(nèi)的核心固件的版本,并驗證該寫入的成功;以及(iv)重新啟動裝置,以執(zhí)行更新的核心固件以及更新的輔助軟件。
根據(jù)本發(fā)明的另一方面,提供了一種更新連接到網(wǎng)絡(luò)的多個遠程裝置內(nèi)的軟件的方法。該方法包括以下步驟(i)將更新放在更新服務(wù)器上,該更新包括至少一個核心固件更新;(ii)標(biāo)識連接到網(wǎng)絡(luò)上的要更新的裝置;(iii)從更新服務(wù)器通過網(wǎng)絡(luò)傳送更新到所標(biāo)識的裝置,每個所標(biāo)識裝置驗證更新的接收,請求重新傳輸并接收任何先前未正確接收的更新部分;(iv)將所接收更新的核心固件部分寫入到所分區(qū)的非易失性可重寫存儲單元并對其進行驗證,該核心固件部分重寫包含先前存儲軟件版本的分區(qū),同時確保核心固件先前版本的有效副本總是存在于存儲單元內(nèi);(v)將驗證的更新核心固件分區(qū)標(biāo)識為裝置要使用的有效核心固件,并將核心固件的先前版本標(biāo)識為不可用;以及(iv)重新啟動裝置,以裝載并執(zhí)行更新的軟件。
可選的,在所接收到更新的核心固件部分被寫入所分區(qū)的非易失性可重寫存儲單元之前,核心固件的先前版本可在存儲在存儲單元之內(nèi)的輔助軟件上復(fù)制并對其進行驗證,將此副本標(biāo)識為裝置要使用的有效核心固件,且然后將原始的標(biāo)識為不可用。
同樣,更新可以包括更新輔助軟件。由裝置來接收并驗證輔助軟件,且然后在裝置重新啟動之前,用更新的輔助軟件來重寫不可用的核心固件的先前版本。
根據(jù)本發(fā)明的另一個方面,提供了一種用于通過通信鏈路來遠程更新在至少一個電子裝置內(nèi)的核心固件的系統(tǒng)。該系統(tǒng)包括在電子裝置內(nèi)的存儲子系統(tǒng),以及操作用于通過通信鏈路來傳送更新到電子裝置的更新服務(wù)器,該更新包括至少核心固件的更新版本。該存儲子系統(tǒng)包括非易失性可重寫存儲器,在其內(nèi)存儲有核心固件且足夠大以存儲輔助軟件,但不足夠大到可以同時存儲核心固件、核心固件的更新版本、以及輔助軟件。核心固件包括指令,其用于(i)將核心固件更新版本寫入非易失性可重寫存儲器中,從而不重寫核心固件的先前版本,并可選地驗證該寫入,以及然后(ii)禁用核心固件的先前版本,從而在重新啟動至少一個電子裝置時可以裝載并執(zhí)行核心固件的更新版本。
核心固件還可以包括指令,其用于寫入輔助軟件更新版本到非易失性可重寫存儲器內(nèi),從而重寫至少禁用的核心固件先前版本的部分,但不重寫核心固件的更新版本。可選地,該寫入能夠被驗證。
存儲子系統(tǒng)還可以包括非易失性存儲器,在其中存儲了指令,該指令在當(dāng)電子裝置重新啟動時被執(zhí)行,并致使對非易失性可重寫存儲器進行掃描來尋找未禁用的核心固件版本。當(dāng)查找到未禁用的核心固件版本時,則裝載并執(zhí)行該版本。
根據(jù)本發(fā)明的又一另一方面,提供了一種用于通過通信鏈路來遠程更新至少一個電子裝置內(nèi)的核心固件和輔助軟件的系統(tǒng)。該系統(tǒng)包括在至少一個電子裝置內(nèi)的存儲單元,其用于存儲核心固件和輔助軟件,以及更新服務(wù)器,其操作用于通過通信鏈路來傳送更新到至少一個電子裝置。該存儲單元包括非易失性可重寫存儲器,其內(nèi)在第一分區(qū)存儲有包括核心固件的第一存儲內(nèi)容,以及在足夠大以存儲第一存儲內(nèi)容的第二分區(qū)中,存儲有足夠小以被存儲在第一分區(qū)的且包括輔助軟件的第二存儲內(nèi)容。核心固件包括更新客戶端,其在接收到第一存儲內(nèi)容的更新版本后,將第一存儲內(nèi)容的更新版本寫入到重寫第二存儲內(nèi)容的第二分區(qū),可選地對該寫入進行驗證,并禁用包含在第一分區(qū)中的第一存儲內(nèi)容,并且然后,在接收到第二存儲內(nèi)容的更新版本后,將第二存儲內(nèi)容的更新版本寫入到重寫所禁用的第一存儲內(nèi)容的第一分區(qū),并重新啟動電子裝置。該存儲單元還包括非易失性存儲器,其內(nèi)存儲有當(dāng)電子裝置重新啟動時所執(zhí)行的引導(dǎo)裝載指令。該引導(dǎo)裝載指令包括指令,當(dāng)執(zhí)行該指令時,搜索非易失性可重寫存儲器以尋找未禁用的第一存儲內(nèi)容版本,以及當(dāng)查找到一個時將電子裝置的控制移交給存儲在該存儲內(nèi)容中的核心固件。
另一選擇是,在接收到第一存儲內(nèi)容的更新版本之后,更新客戶端可將第一存儲內(nèi)容復(fù)制到重寫第二存儲內(nèi)容的第二分區(qū),將第一存儲內(nèi)容的更新版本寫入到重寫第一存儲內(nèi)容的第一分區(qū),可選的驗證該寫入,并在接收到第二存儲內(nèi)容的更新版本之后,將第二存儲內(nèi)容的更新版本寫入到第二分區(qū),可選的驗證該寫入,并重新啟動電子裝置。
同樣,另一選擇是,在接收到第一存儲內(nèi)容的更新版本之后,更新客戶端可減少第二分區(qū)的大小,從而它剛好足夠大到可以存儲第一存儲內(nèi)容的更新版本,將第一存儲內(nèi)容的更新版本寫入到重寫第二分區(qū)先前內(nèi)容的第二分區(qū),可選的驗證該寫入,并禁用存儲在第一分區(qū)內(nèi)的第一存儲內(nèi)容的版本,并且然后,在接收到第二存儲內(nèi)容的更新版本之后,增加第一分區(qū)的大小,以包括不是第二分區(qū)中的非易失性可重寫存儲器的任何部分,將第二存儲內(nèi)容的更新版本寫入到重寫第一分區(qū)先前內(nèi)容的第一分區(qū),可選的驗證該寫入,并重新啟動電子裝置。
可選的,更新客戶端可進一步操作用于向更新服務(wù)器通知在給定時間該至少一個電子裝置是否可用于更新,更新服務(wù)器響應(yīng)于從更新客戶端所接收的信息,以在當(dāng)電子裝置不可用于更新時推遲對電子裝置的更新。更新服務(wù)器還可以為更新設(shè)定優(yōu)先級,從而更新客戶端可使在另外情況下不可用的電子裝置可用于更新。
根據(jù)本發(fā)明的另一個方面,提供了一種用在電子裝置內(nèi)的存儲子系統(tǒng),該電子裝置包括在其內(nèi)存儲有核心固件和輔助軟件的非易失性可重寫存儲器。核心固件包括指令,其用于將核心固件更新版本寫入到非易失性可重寫存儲器內(nèi),從而重寫至少輔助軟件的一部分、但不重寫核心固件的先前版本,驗證核心固件更新版本,以及禁用核心固件先前版本,從而在重新啟動電子裝置時裝載和執(zhí)行核心固件更新版本。核心固件可以包括指令,其用于將輔助軟件更新版本寫入到非易失性可重寫存儲器中,從而重寫所禁用的核心固件先前版本的至少一部分,但不重寫核心固件的更新版本。存儲子系統(tǒng)還包括非易失性存儲器,其存儲有指令,該指令在當(dāng)電子裝置重新啟動時被執(zhí)行,并致使對非易失性可重寫存儲器進行掃描以尋找未禁用核心固件版本,以及裝載并執(zhí)行該未禁用核心固件版本。
根據(jù)本發(fā)明的另一個方面,提供了一種用在電子裝置內(nèi)的存儲子系統(tǒng),該電子裝置包括非易失性可重寫存儲器,在其中存儲有核心固件且其足夠大到可以存儲核心固件和輔助軟件,但不足夠大到可以同時存儲核心固件。核心固件包括指令,其用于將核心固件更新版本寫入到非易失性可重寫存儲器內(nèi),從而不重寫核心固件先前版本,驗證核心固件更新版本,以及禁用核心固件先前版本,從而在重新啟動電子裝置時裝載和執(zhí)行核心固件更新版本。核心固件可包括指令,其用于將輔助軟件更新版本寫入到非易失性可重寫存儲器中,從而重寫核心固件先前版本的至少一部分,但不重寫核心固件的更新版本。存儲子系統(tǒng)還包括非易失性存儲器,其存儲有指令,該指令在當(dāng)電子裝置重新啟動時被執(zhí)行,并致使對非易失性可重寫存儲器進行掃描以尋找未禁用核心固件版本,以及裝載并執(zhí)行該未禁用核心固件版本。
根據(jù)本發(fā)明的另一方面,提供一種用于電子裝置內(nèi),能執(zhí)行所存儲的指令并接收這種指令的更新版本,一個用于存儲這種指令的存儲子系統(tǒng),其包括非易失性可重寫存儲器以及非易失性存儲器。在該非易失性存儲器中,存儲了當(dāng)電子裝置重新啟動時所執(zhí)行的引導(dǎo)裝載指令。在該非易失性可重寫存儲器中,在第一分區(qū)存儲有第一存儲內(nèi)容,其包括至少允許電子裝置重新啟動、或當(dāng)進行更新時如果電子裝置重新啟動則繼續(xù)更新非易失性可重寫存儲器所需的指令;以及在足夠大到可以存儲第一存儲內(nèi)容的第二分區(qū),存儲有第二存儲內(nèi)容,其足夠小到可以被存儲在第一分區(qū),并包括所有沒有包含在電子裝置重新啟動之后正常操作所需的第一存儲內(nèi)容中的指令。存儲在第一存儲內(nèi)容中的指令包括指令,其在當(dāng)接收到第一存儲內(nèi)容更新版本之后被執(zhí)行時,將第一存儲內(nèi)容更新版本寫入到重寫第二存儲內(nèi)容的第二分區(qū)中,并禁用包含在第一分區(qū)的第一存儲內(nèi)容;以及指令,其在當(dāng)接收到第二存儲內(nèi)容更新版本之后被執(zhí)行時,將第二存儲內(nèi)容更新版本寫入到重寫所禁用的第一存儲內(nèi)容的第一分區(qū),并重啟電子裝置。
另一選擇是,存儲在第一存儲內(nèi)容中的指令包括指令,其在當(dāng)接收到第一存儲內(nèi)容更新版本之后執(zhí)行時,將第一存儲內(nèi)容復(fù)制到重寫第二存儲內(nèi)容的第二分區(qū),將第一存儲內(nèi)容的更新版本寫入到重寫第一存儲內(nèi)容的第一分區(qū);以及指令,其在當(dāng)接收到第二存儲內(nèi)容更新版本之后執(zhí)行時,將第二存儲內(nèi)容更新版本寫入到重寫所禁用的第一存儲內(nèi)容的第二分區(qū),并重新啟動電子裝置。
另一選擇是,存儲在第一存儲內(nèi)容中的指令還包括指令,其在當(dāng)接收到第一存儲內(nèi)容更新版本之后執(zhí)行時,如果可能則減少第二分區(qū)的大小,從而它剛好可以足夠大到可以存儲第一存儲內(nèi)容更新版本,將第一存儲內(nèi)容的更新版本寫入到重寫第二分區(qū)先前內(nèi)容的第二分區(qū),并禁用存儲在第一分區(qū)內(nèi)的第一存儲內(nèi)容版本;以及指令,其在當(dāng)接收到第二存儲內(nèi)容更新版本之后執(zhí)行時,如果可能則增加第一分區(qū)的大小,以包括不是在第二分區(qū)內(nèi)的非易失性可重寫存儲器的任何部分,將第二存儲內(nèi)容更新版本寫入到重寫第一分區(qū)先前內(nèi)容的第一分區(qū),并重新啟動電子裝置。
根據(jù)本發(fā)明的又一個方面,提供一種安裝更新到存儲在非易失性可重寫存儲器內(nèi)的軟件的方法,該非易失性可重寫存儲器沒有足夠大到同時保存更新和軟件。該方法包括以下步驟將更新劃分為包括分離可寫部分,其包括可存儲在不大于非易失性可重寫存儲器一半的核心部分;將非易失性可重寫存儲器劃分為分離可重寫部分,其包括核心部分,該核心部分包括不大于非易失性可重寫存儲器一半并包含對應(yīng)于所更新核心部分的軟件部分以及恰好足夠大到可以保存更新的核心部分的輔助部分;將更新的核心部分寫入到非易失性可重寫存儲器的輔助部分,并對它進行驗證;禁用包含在非易失性可重寫存儲器核心部分的先前軟件版本;將不包含在更新的核心部分的更新部分寫入到非易失性可重寫存儲器的、不包括在非易失性可重寫存儲器核心部分的部分,并對它進行驗證。
附圖簡要說明現(xiàn)在將參考附加
本發(fā)明的實施例,僅為示例起見,其中圖1是根據(jù)本發(fā)明一個實施例的允許更新電子裝置的網(wǎng)絡(luò)框圖;圖2是根據(jù)本發(fā)明一個實施例的更新站的框圖;圖3是根據(jù)本發(fā)明一個實施例的可更新電子裝置的框圖,其包括存儲單元;圖4a、4b和4c是根據(jù)本發(fā)明一個實施例的圖3電子裝置內(nèi)的存儲單元的框圖;圖5a、5b和5c是根據(jù)本發(fā)明另一個實施例的圖3電子裝置內(nèi)的存儲單元的框圖;圖6是根據(jù)本發(fā)明一個實施例的更新系統(tǒng)的分級結(jié)構(gòu)框圖;圖7是本發(fā)明更新處理實施例的流程圖。
發(fā)明詳細說明現(xiàn)在參考圖1,用標(biāo)記號碼20來一般性指示能更新至少一個電子裝置內(nèi)的軟件或數(shù)據(jù)的無線網(wǎng)絡(luò)。網(wǎng)絡(luò)20包括至少一個更新站,在此例子中是無線基站24,其操作用于通過雙向通信鏈路32發(fā)射軟件更新。網(wǎng)絡(luò)20還包括至少一個電子裝置,例如用戶站28a,28b,……,28n,其用于能夠進行語音和數(shù)據(jù)的無線本地環(huán)。用戶站28可以是在用于語音和數(shù)據(jù)的無線本地環(huán)內(nèi)的客戶房屋設(shè)備,銷售終端的無線點,或任何其他諸如具有調(diào)制解調(diào)器的個人數(shù)目助理(PDA)、蜂窩電話、電纜調(diào)制解調(diào)器、膝上型電腦的電子裝置,以及其他本領(lǐng)域技術(shù)人員想到的、和能通過通信鏈路32通信的合適電子裝置。
由基站24服務(wù)的用戶站的數(shù)目n根據(jù)可用無線帶寬數(shù)量或用戶站28的配置和要求而進行改變。為清楚目的,在此提及的對電子裝置的更新僅對用戶站28作出。然而,其他例如以上提及的、以及能通過通信鏈路32接收軟件更新的電子裝置也在本發(fā)明范圍之內(nèi)。
在網(wǎng)絡(luò)20中,基站24可通過適當(dāng)網(wǎng)關(guān)以及回程34連接到至少一個電信網(wǎng)絡(luò),例如基于陸線的數(shù)據(jù)交換網(wǎng)絡(luò)30,公共交換電話網(wǎng)絡(luò)33?;爻?4可以是例如T1,T3,E1,E3,OC3或其他適當(dāng)陸線鏈路的鏈路,或可以是衛(wèi)星或其他無線或微波信道鏈路,或任何其他本領(lǐng)域技術(shù)人員想到的適于作為回程操作的鏈路?;?4還可以包括或通過回程34或其他方式連接到軟件更新服務(wù)器36,它包含用戶用戶站28軟件負(fù)載?;?4還連接到位于更新服務(wù)器36內(nèi)或在位于別處的為此目的而提供獨立數(shù)據(jù)庫服務(wù)器(未示出)內(nèi)的用戶數(shù)據(jù)庫,例如在中心網(wǎng)絡(luò)操作中心(將在以下討論)內(nèi),它保存用戶站28的當(dāng)前軟件負(fù)載記錄。
在無線網(wǎng)絡(luò)20內(nèi),在基站24和每個用戶站28之間經(jīng)無線波建立通信鏈路32,盡管可以采用包括導(dǎo)線、紅外以及超聲方法的其他物理連接方法。通信鏈路32可以在基站24和各自用戶站28a,28b……,28n之間如所需的承載語音和數(shù)據(jù)信息??梢酝ㄟ^多種多路復(fù)用技術(shù)來實現(xiàn)通信鏈路32,包括TDMA,F(xiàn)DMA,CDMA,OFDM或例如GSM等的混合系統(tǒng)。此外,可將通信鏈路32安排到承載不同數(shù)據(jù)類型(例如語音通信、或數(shù)據(jù)傳輸、或為諸如最終用戶通信或控制網(wǎng)絡(luò)20的不同目的而采用的)的不同信道。在圖1的實施例中,通信鏈路32上發(fā)射的數(shù)據(jù)是作為IP(互聯(lián)網(wǎng)協(xié)議)分組發(fā)射,但也可采用任何適當(dāng)類型的分組。
圖2更詳細顯示了基站24的例子?;?4包括一個或多個天線40,其用于在通信鏈路32上接收和發(fā)射無線通信。天線40連接到無線部分44,該無線部分接下來又連接到調(diào)制解調(diào)器48。調(diào)制解調(diào)器48連接到微處理器-路由器組件52,例如由Intel制造的Pentium IIITM處理器系統(tǒng)以及相關(guān)裝置。應(yīng)當(dāng)理解微處理器-路由器組件52可如所期望的包括多個微處理器。此外,如果希望,可在獨立單元內(nèi)提供微處理器-路由器組件52的路由器功能。在微處理器-路由器組件52內(nèi)實現(xiàn)的路由器功能以任何適當(dāng)方式連接到回程34,從而將基站和至少一個電信網(wǎng)絡(luò)30,33連接?;?4還可直接連接或通過回程34連接到更新服務(wù)器36,如上所述。
現(xiàn)在參考圖3,更詳細顯示了用戶站28的例子。用戶站28包括一個或多個天線60,用于在通信鏈路32上接收和發(fā)射無線通信。天線60連接到無線部分64,該無線部分64又連接到調(diào)制解調(diào)器68。調(diào)制解調(diào)器68連接到微處理器組件72,該組件連接到存儲單元78。
微處理器組件72可以包括,例如Intel制造的StrongARM處理器,并執(zhí)行多種功能,包括實現(xiàn)A/D-D/A轉(zhuǎn)換,濾波器,編碼器,解碼器,數(shù)據(jù)壓縮器,解壓縮器和/或拆分分組。如圖3所示,微處理器組件72還和調(diào)制解調(diào)器68以及一個或多個端口76相互連接,這些端口可以用于將用戶站28連接到數(shù)據(jù)裝置以及電話裝置。電話裝置的一個例子是電話。數(shù)據(jù)裝置的例子包括個人計算機、PDA等。相應(yīng)的,微處理器組件72操作用于處理端口76和調(diào)制解調(diào)器68之間的數(shù)據(jù)。
在用戶站28中,存儲單元78包括兩個主要的組成部分(1)易失隨機訪問存儲器(RAM)82,它可以是動態(tài)RAM(DRAM)或同步DRAM(SDRAM),微處理器組件72將其用于存儲操作用戶站28所需的指令以及數(shù)據(jù);以及(2)非易失性可重寫存儲單元RSU86,它在用戶站28內(nèi)是快速存儲器,用于存儲數(shù)據(jù),其包括指令,當(dāng)關(guān)斷用戶站28電源時該指令不會丟失。存儲單元78操作用于包含所有用戶站28正常和期望功能所需的指令以及數(shù)據(jù),包括引導(dǎo)軟件,操作系統(tǒng),軟件應(yīng)用,無線資源管理軟件,裝置驅(qū)動器,以及數(shù)據(jù)文件。
正如本領(lǐng)域技術(shù)人員已知的,RAM82通??煊赗SU86內(nèi)使用的快速存儲器,因此,在當(dāng)前用戶站28的優(yōu)選實施例中,在多數(shù)情況下,在執(zhí)行之前,微處理器組件72將指令和數(shù)據(jù)從RSU86復(fù)制到RAM82。在一些情況下,對于本領(lǐng)域技術(shù)人員來說是十分明顯的,是直接從RSU86將指令和數(shù)據(jù)讀取到微處理器組件72,然后在其上執(zhí)行或操作。
微處理器組件72還操作用于如下所述的從RAM82將指令和數(shù)據(jù)寫入到RSU86。
在用戶站28,RAM82包含32M字節(jié)SDRAM,以及RSU86包含8M字節(jié)快速存儲器。然而,并不特別限制RAM的數(shù)量和類型,并且可以使用其他類型非易失性可重寫存儲器,例如可以使用常規(guī)IDE和SCSI硬盤、光存儲器存儲裝置以及EPROMS,而不是快速存儲器。本領(lǐng)域技術(shù)人員可以想到其他類型的非易失性可重寫存儲器,同時他們也會理解,在本發(fā)明實施例的RSU86內(nèi)使用此種其他可選非易失性可重寫存儲器需要對下述說明進行修正。
諸如在RSU86內(nèi)所使用的快速存儲器通常是按塊讀出和寫入。塊是可以寫入以及在寫入之前必需擦除的最小單位。(換句話說,快速存儲器是“粒狀的”(granular),如下面說討論的,其對使用方式有影響。)本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解,該限制并不應(yīng)用到可替換用戶站28內(nèi)的快速存儲器的其他類型的非易失性可重寫存儲器的一些其他形式。目前用在用戶站28內(nèi)的特定快速存儲器具有256K字節(jié)塊的大小?,F(xiàn)在參考圖4a,示意地顯示了RSU的初始分區(qū)。將RSU86劃分為邏輯分區(qū),該邏輯分區(qū)中每一個都是一個或多個邏輯連續(xù)的存儲塊。正如對本領(lǐng)域技術(shù)人員所顯而易見的,術(shù)語“分區(qū)”和“邏輯分區(qū)”在此可互換使用。對于本發(fā)明的唯一限制是,除了在使用相同大小的分區(qū)的特定情況之外,這些分區(qū)應(yīng)該是可以重新調(diào)整大小和/或重新部署。因此期望滿足此要求的邏輯分區(qū)以及在某些例子中的物理分區(qū)都意圖在本發(fā)明范圍之內(nèi)。
每個分區(qū)具有至少一個開始位置和為它所定義的長度/大小。正如本領(lǐng)域技術(shù)人員所知的,為某些目的將這些分區(qū)看作它們好像是獨立的分離存儲裝置。例如,具有兩個分區(qū)的硬盤對于運行在連接到該硬盤的計算機上的應(yīng)用軟件來說好像是兩個獨立硬盤。另外,本領(lǐng)域技術(shù)人員還知道,通??梢韵嗉印⒁瞥⒒蛑匦抡{(diào)整邏輯分區(qū)以及某些物理分區(qū)的大小,從而在存儲裝置內(nèi)提供靈活性。對于邏輯分區(qū),通過修改存儲在非易失性可重寫存儲器內(nèi)的數(shù)據(jù)結(jié)構(gòu),或如在用戶站28內(nèi)的情況,按如下所述的在啟動時重新構(gòu)建來進行。數(shù)據(jù)結(jié)構(gòu)包括諸如上述開始位置和大小/長度的數(shù)據(jù),在存儲裝置內(nèi)的物理位置和邏輯分區(qū)之間提供對應(yīng)。邏輯分區(qū)還可以使不連續(xù)的存儲位置對于應(yīng)用看起來好像是連續(xù)存儲塊。例如,能這樣劃分快速ROM,從而對于應(yīng)用來說偶數(shù)編號的塊(即塊0,2,4,6等)像是一個連續(xù)存儲塊,而對于應(yīng)用來說奇數(shù)編號的塊(即塊1,3,5,7等)像是另一個連續(xù)存儲塊。本領(lǐng)域技術(shù)人員知道的許多其它分區(qū)方案以及安排都在本發(fā)明范圍之內(nèi)。在用戶站28,RSU86初始被劃分為三個分區(qū),即引導(dǎo)分區(qū)104,核心固件分區(qū)108以及輔助軟件分區(qū)112。
引導(dǎo)分區(qū)104位于RSU86的第一塊內(nèi),并包含用于用戶站28的引導(dǎo)裝載固件。用戶站28按以下方式配置啟動(引導(dǎo))時,微處理器組件72首先執(zhí)行在RSU86的第一塊內(nèi)查找到的指令,盡管也可以采用其它方案,例如讀取RSU86的最后一塊等。初始將RSU86的剩余塊按如下所述方式劃分為核心固件分區(qū)108以及輔助軟件分區(qū)112。在圖4a中,顯示核心固件分區(qū)108占用了緊跟在引導(dǎo)分區(qū)104之后的塊,并且輔助軟件分區(qū)112占用核心固件分區(qū)108的最后一塊和RSU86末端之間的塊。如下所述,可以顛倒核心固件分區(qū)108和輔助軟件分區(qū)112的初始定位,并如下所述作為更新結(jié)果的顛倒(參見圖4c,其中通過將“’”添加到參考標(biāo)記上來顯示顛倒的順序)。
在用戶站28,在引導(dǎo)分區(qū)104內(nèi)提供引導(dǎo)裝載固件,以避免需要在用戶站28內(nèi)提供額外的ROM或其他非易失性存儲包。然而,正如本領(lǐng)域技術(shù)人員知道的,如果在存儲單元78內(nèi)或用戶站28內(nèi)其他地方提供這樣的ROM或其他非易失性存儲包,則可將引導(dǎo)分區(qū)104置于其內(nèi),并從RSU86內(nèi)省略,然后可將該RSU86安排為兩個分區(qū)108和112。術(shù)語“存儲子系統(tǒng)”包括存儲單元78以及,如果引導(dǎo)分區(qū)104存儲在ROM或另一非易失性存儲包中,則包括ROM或其他非易失性存儲包。
需要提供給用戶站28的至少最低功能的核心固件被初始寫入核心固件分區(qū)108。核心固件負(fù)責(zé)提供用戶站28的基本操作。這些基本操作包括存儲器管理、任務(wù)處理、管理文件、輸入/輸出等,以及允許用戶站28和基站24通信所需的至少最低量的功能 (但提供任何最終用戶服務(wù)所需的足夠功能不是必需的)。在用戶站28,包括在核心固件內(nèi)的操作系統(tǒng)包括版本2.4的Linux內(nèi)核,并且引導(dǎo)分區(qū)104內(nèi)的引導(dǎo)裝載軟件是Linux引導(dǎo)裝載程序。分區(qū)108內(nèi)的核心固件是cramfs文件系統(tǒng),它是本領(lǐng)域技術(shù)人員已知的只讀壓縮文件系統(tǒng)。cramfs文件系統(tǒng)的文件可很容易獲得(例如參見http//sourceforge.net/projects/cramfs/),在此不進一步討論它的操作。
在啟動時,一旦讀取引導(dǎo)分區(qū)和執(zhí)行此分區(qū)開始的內(nèi)容,引導(dǎo)裝載程序從RSU86的開始順序地讀取,以定位核心固件分區(qū)108的開始塊以及大小。引導(dǎo)裝載程序通過搜索超級塊來完成此動作,如在cramfs文件系統(tǒng)中定義的。當(dāng)查找到一個時,則將其假定為核心固件分區(qū)108內(nèi)的壓縮Linux內(nèi)核的超級塊。然后當(dāng)操作系統(tǒng)開始時,引導(dǎo)裝載程序使用存儲在該超級塊內(nèi)的信息將內(nèi)核鏡像(image)解壓縮到RAM82,并將核心固件分區(qū)108的開始塊以及大小作為引導(dǎo)參數(shù)傳遞到Linux內(nèi)核,從而可以確定RSU的分區(qū)。
雖然優(yōu)選Linux,但是,其他操作系統(tǒng)的操作系統(tǒng)版本也在本發(fā)明范圍之內(nèi)。沒有特別限定RSU86內(nèi)的核心固件分區(qū)108的位置,并且當(dāng)引導(dǎo)裝載程序搜索RSU86的內(nèi)容直至定位了有效核心固件分區(qū)108(即cramfs超級塊時)的開始為止,可以占用在引導(dǎo)分區(qū)104之后的任何連續(xù)的邏輯塊地址組(如果存在)。然而,從下面可以清楚,優(yōu)選的,核心固件分區(qū)108位于緊跟在引導(dǎo)分區(qū)104之后,或在RSU86末尾,從而避免一個或多個存儲塊既不在核心固件分區(qū)108中也不在輔助軟件分區(qū)112中的情況。
其余(balance)軟件和數(shù)據(jù)之間存儲在RSU86輔助軟件分區(qū)112內(nèi)。在下文中,軟件即指輔助軟件。沒有特別限定輔助軟件,并且其可以包括可選的裝置驅(qū)動器,用戶應(yīng)用程序,系統(tǒng)軟件應(yīng)用程序,數(shù)據(jù)文件,軟件以及諸如以下各項的最終用戶應(yīng)用電話呼叫處理軟件、語音和音頻編解碼器、軟件濾波器、防火墻、應(yīng)用程序、幫助文件、用戶數(shù)據(jù)文件、數(shù)字媒體文件、以及其它這樣的應(yīng)用,還有本領(lǐng)域技術(shù)人員能想到的其它數(shù)據(jù)文件等。
輔助軟件可以按照壓縮文件系統(tǒng)格式存儲,例如上述cramfs格式,或按照本領(lǐng)域技術(shù)人員能想到的其他任何適當(dāng)方式。如果輔助軟件是整體式的(monolithic),即軟件的改變或更新需要替換該分區(qū)的所有內(nèi)容,則cramfs或類似文件/存儲系統(tǒng)是優(yōu)選的替代選擇。另一選擇是,如果輔助軟件不是整體式的,從而可如所需的將軟件組件裝載和/或卸載到該分區(qū),則可以采用例如由Axis Communications AB,Emdalavagen 14,S22369,Lund Sweden開發(fā)的JFFS(日志Flash文件系統(tǒng))(Journaling Flash File System)的適當(dāng)系統(tǒng)。
通常,用戶站28和基站24通信不需要存儲在輔助軟件分區(qū)112內(nèi)的輔助軟件,雖然用戶站28發(fā)出或接收語音呼叫需要存儲在輔助軟件分區(qū)112中的輔助軟件,但是最終用戶數(shù)據(jù)連接(例如http瀏覽器會話)或其他最終用戶功能。沒有特別限定RSU86內(nèi)的輔助軟件分區(qū)112的位置,且只需占用邏輯連續(xù)的塊組,但如上所述,優(yōu)選的在RSU86的末尾塊或緊跟在引導(dǎo)分區(qū)104之后。
如圖4a所示,核心固件分區(qū)108的大小小于輔助軟件分區(qū)112。然而,如果可用于分區(qū)到核心固件分區(qū)108以及輔助軟件分區(qū)112的塊編號是偶數(shù)號碼,則它們可大小相等。在本實施例的用戶站28中,RSU86內(nèi)的總可用存儲空間是8M字節(jié),引導(dǎo)分區(qū)104是256K字節(jié),核心固件分區(qū)108具有最大3.75M字節(jié)的大小,且輔助軟件分區(qū)112具有減去核心固件分區(qū)108的大小的7.75M字節(jié)大小。在此描述的特定實施例中,輔助軟件塊的最大大小是4M字節(jié)。
由于本實施例的RSU86內(nèi)存儲塊的總數(shù)是偶數(shù),并且由于一塊用于引導(dǎo)分區(qū)104,因此,奇數(shù)塊編號可用于分區(qū)到核心固件分區(qū)108和輔助軟件分區(qū)112中,并且因此核心固件分區(qū)108和輔助軟件分區(qū)112的大小不會相等。從以下說明中可以清楚,關(guān)鍵限制是核心固件分區(qū)108必需不大于輔助軟件分區(qū)112。然后核心固件的更新總可以寫入輔助軟件分區(qū)112,而不用重寫現(xiàn)有核心固件分區(qū)108。在讀了一下說明之后會更清楚。
當(dāng)期望更新在核心固件分區(qū)108內(nèi)的核心固件時,從更新服務(wù)器36在通信鏈路32上傳送更新核心固件到用戶站28,如下面詳細說明的。接收該核心固件并將其存儲在用戶站28內(nèi)的RAM82中,直至到用戶站28的更新核心固件和輔助軟件的全部傳送完成為止,雖然同樣希望如果需要,在傳送輔助軟件之前能夠傳送核心固件并將其安裝。根據(jù)更新的大小和RAM82的大小,可能需要終止運行在用戶站28上的任何處理,它們需要大量的RAM82。如下面將要討論的,終止這些處理的能力是在決定更新用戶站28之前要考慮的狀態(tài)標(biāo)準(zhǔn)。
期望可使用多種技術(shù)來從更新服務(wù)器36傳送核心固件和輔助軟件到用戶站28,例如經(jīng)UDP/IP或TCP/IP的按照分組的軟件傳輸。因為用于傳送軟件的通信鏈路32或物理介質(zhì)(有線連接等等)可能遭受故障或錯誤,因此,在使用之前驗證接收到的傳送軟件的正確性。不特別限定用于驗證這種正確性的特定方法,并可對全部傳送或部分傳送采用檢查和、CRC、數(shù)字簽名等,如本領(lǐng)域技術(shù)人員已知的。如果接收到的內(nèi)容不正確,并包含一個或多個錯誤,則可從更新服務(wù)器36重新發(fā)射其軟件或適當(dāng)分區(qū)到用戶站28,直至在用戶站28接收到完全正確的副本。
一旦在用戶站28接收到更新/替換核心固件的完全正確副本,即新的核心固件,并存儲在RAM82內(nèi),則通過將新核心固件寫入先前由輔助軟件分區(qū)112占用的RSU86部分的全部或部分來繼續(xù)更新處理。為執(zhí)行此重寫,終止任何正在用戶站28上執(zhí)行的、且要求對輔助軟件分區(qū)112中的輔助軟件進行讀取訪問的剩余處理。一旦終止了(如果有的話)這些程序,從RAM82復(fù)制新的核心固件,并將其寫入RSU86。在圖4b中用新核心固件分區(qū)108’指示新的核心固件。如在此使用的,期望術(shù)語“重寫”和“被重寫的”包括將新數(shù)據(jù)放入非易失性存儲器中以替換先前數(shù)據(jù)的必需操作,并且包括在快速存儲器的情況中,在將新數(shù)據(jù)寫入其之前首先擦除該存儲器(如果需要這一步驟)。
同樣期望,為減少在RAM82內(nèi)所需的存儲器,可以像接收它時一樣將更新核心固件以遞增方式寫入,例如在更新256K字節(jié)塊中,假定在寫入之前能夠驗證接收到的更新是正確接收的。在這樣的例子中,由于在用戶站28接收到給定數(shù)量的更新數(shù)據(jù),因此,將其暫時存儲在RAM82內(nèi)并在RAM82驗證,然后寫入RSU86,同時下一接收的更新數(shù)據(jù)重寫先前接收的、已被暫時存儲在RAM82內(nèi)的更新。這樣,如下所述,可以在更新處理中無需終止下來自RAM82運行的各種應(yīng)用和處理,至少直至用戶站28重新啟動時。
如圖4b所示,在從所確定輔助軟件分區(qū)112開始的偏移開始進行重寫,從而新核心固件分區(qū)108’的末尾會和輔助軟件分區(qū)112的末尾重合。在上面的例子中,如果RSU86總計大小是8M字節(jié),且核心固件分區(qū)104大小是0.25M字節(jié),輔助軟件分區(qū)112大小是4M字節(jié),且核心固件分區(qū)108大小是3.75M字節(jié),則新核心固件分區(qū)108’重寫到輔助軟件分區(qū)112所在的偏移是從RSU86開始的4.25M字節(jié),假定實際上核心固件分區(qū)104出現(xiàn)在RSU86的開始。
在寫入新核心固件分區(qū)108’之后,由用戶站28驗證其內(nèi)容,該用戶站28從新核心固件分區(qū)108’讀回內(nèi)容,并將其和RAM82內(nèi)的新核心固件副本比較。如果寫入的新核心固件分區(qū)108’小于接收的來自RAM82的分區(qū),則在下一接收分區(qū)重寫暫時存儲在RAM82內(nèi)的上一分區(qū)之前,對這些更小分區(qū)的寫入向RAM82內(nèi)存儲的分區(qū)進行驗證。
在任何一種例子中,如果不能驗證從新核心固件分區(qū)108’讀取的內(nèi)容,則新核心固件分區(qū)108’或新核心固件分區(qū)108’的相關(guān)部分的寫入被再次執(zhí)行,且驗證/重寫處理一直重復(fù),直至內(nèi)容得到驗證為止。
當(dāng)驗證了新核心固件分區(qū)108’的內(nèi)容是正確寫入的時,對用戶站28,將新核心固件分區(qū)108’標(biāo)識為包含最新核心固件,并且然后通過將在核心固件分區(qū)108內(nèi)的原始核心固件標(biāo)記為“無效”來由用戶站28執(zhí)行對其的禁用。在用戶站28,其中核心固件分區(qū)108以及108’包括cramfs格式的Linux內(nèi)核等,通過將核心固件分區(qū)108的超級塊重寫來將在核心固件分區(qū)108內(nèi)的核心固件標(biāo)識為無效,從而將其改變?yōu)椴辉偈怯行С墘K。一旦這樣做,用戶站28的下一次重新啟動的引導(dǎo)裝載程序?qū)H定位新核心固件分區(qū)108’的超級塊,它是最新的有效核心固件分區(qū),且用戶站28從分區(qū)108’開始引導(dǎo)。
如從圖4b中清楚看見的,以上在無效核心固件分區(qū)108內(nèi)的結(jié)果以及輔助軟件分區(qū)112的剩余分區(qū)不再包含有用數(shù)據(jù)(如果存在的話)。用戶站28然后能夠從RAM82將輔助軟件寫入(或如果還沒有執(zhí)行,則從更新服務(wù)器36將其下載到RAM82),以在核心固件分區(qū)108的存儲空間內(nèi)和輔助軟件分區(qū)112的那個剩余分區(qū)(如果有的話)形成新的輔助軟件分區(qū)112’,如圖4c所示。另一選擇是,用戶站28可重新啟動,以執(zhí)行新的核心固件,并且可從更新服務(wù)器下載輔助軟件,并將其存儲在新的輔助軟件分區(qū)112’。一旦以和上述用于核心固件相似的方式驗證了新輔助軟件的寫入,用戶站28可以執(zhí)行輔助軟件(假定它早已重新啟動并正在運行新核心固件),或可以重新啟動,從而讓裝載程序引導(dǎo)新核心固件分區(qū)108’內(nèi)的更新的核心固件,并重啟由核心固件和輔助軟件兩者所提供的所有服務(wù)。這樣做時,操作系統(tǒng)會定位新核心固件分區(qū)108’的超級塊,并且,如果輔助軟件分區(qū)采用cramfs,則定位新輔助軟件分區(qū)112’的超級塊,并形成描述所重新分區(qū)的RSU86的數(shù)據(jù)結(jié)構(gòu)。
如從上面說明所清楚的,RSU86內(nèi)總是存在核心固件的有效副本,甚至在用戶站28關(guān)閉、電源斷開、需要重新啟動、或其他更新處理中的中斷時。在當(dāng)用戶站28在新核心固件分區(qū)108’寫入和驗證完成之前關(guān)閉,更新處理以被寫入到輔助軟件分區(qū)112上的新核心固件分區(qū)108’的情況中,用戶站28將從舊核心固件分區(qū)108來引導(dǎo),當(dāng)下一次再開啟該舊核心固件分區(qū)108時它仍是完整的。注意到缺少有效輔助軟件分區(qū)112,且要么重新開始整個更新處理,要么從更新服務(wù)器36能夠請求有效輔助軟件的傳送,并將其存儲在RSU86內(nèi)作為重新存儲的輔助軟件分區(qū)112,并且將更新處理推遲。例如當(dāng)網(wǎng)絡(luò)20使用過多,執(zhí)行更新的容量不是立即可用時會選擇后一選項。
假定執(zhí)行了成功的更新,則每當(dāng)期望再次更新用戶站28內(nèi)的核心固件時,新的核心固件分區(qū)108將重寫輔助軟件分區(qū)112’的一部分,以及新的輔助軟件分區(qū)112將會重寫舊的核心固件分區(qū)108’和舊的輔助軟件分區(qū)112’的剩余分區(qū),以再次獲得圖4a所示的配置。應(yīng)當(dāng)注意到,在新的核心固件分區(qū)108被驗證之后并不是必需要擦除舊核心固件分區(qū)108’的超級塊,因為如果在此階段更新中斷,則當(dāng)發(fā)生重新啟動時,引導(dǎo)裝載程序會在到達舊核心固件分區(qū)108’之前定位并使用新的核心固件分區(qū)108。
每個隨后的核心固件的更新都會導(dǎo)致用新核心固件分區(qū)重寫現(xiàn)有輔助軟件分區(qū),并用新輔助軟件分區(qū)重寫舊的核心固件分區(qū)以及輔助軟件分區(qū)的剩余部分。
應(yīng)當(dāng)注意,如在此使用的,期望術(shù)語“新輔助軟件”包括以下兩種情況輔助軟件中未發(fā)生變化且新輔助軟件僅指下載到用戶站28的未改變軟件的新副本的情況,以及其中下載更新的或另外改變的輔助軟件版本到用戶站28的情況。
如圖5a所示,如果期望在正常操作中使分區(qū)108和112的位置在RSU86內(nèi)恒定,則可將“舊”核心固件分區(qū)108復(fù)制到“舊”輔助軟件分區(qū)112上,以形成復(fù)制的舊核心固件分區(qū)108”。然后驗證此舊核心固件分區(qū)108”副本的寫入,一旦得到驗證,則通過重寫原始核心固件分區(qū)108的超級塊來將其標(biāo)識為無效,從而改變它,或使用任何其他適當(dāng)方式。如果因為任何原因用戶站28在該點要重新啟動,則引導(dǎo)裝載程序?qū)⒍ㄎ徊⑹褂脧?fù)制的核心固件分區(qū)108”的內(nèi)容。
下面,將“新”核心固件從RAM82重寫到原始核心固件分區(qū)108,如圖5b所示,并進行驗證。直至核心固件分區(qū)108的剩余分區(qū)的內(nèi)容被驗證以前,不將原始核心固件分區(qū)108的新核心固件的超級塊寫入到原始核心固件分區(qū)108中,此后將超級塊寫入并對其進行驗證。然后通過重寫或改變所復(fù)制的核心固件分區(qū)108”的超級塊或通過其他任何適當(dāng)方式來將其標(biāo)識為無效。用此方式,在驗證新核心固件分區(qū)108的寫入之前需要裝載核心固件的重新啟動或其他事件可以替代地采用所復(fù)制的核心固件分區(qū)108”。
最后,從RAM82復(fù)制新輔助軟件,從而形成輔助軟件分區(qū)112,如圖5c所示,且在使用之前驗證此分區(qū),然后用戶站28再次處在其常規(guī)操作配置中。雖然此處理導(dǎo)致分區(qū)108,112在RSU86內(nèi)總具有相同位置,但它需要執(zhí)行額外的寫入和驗證操作,以將核心固件分區(qū)108的內(nèi)容復(fù)制到所復(fù)制的核心固件分區(qū)108”,這就增加了執(zhí)行更新所需的時間,并且如果RSU86是快速存儲器,則可能導(dǎo)致RSU86更快損壞。
在本發(fā)明的本實施例中,更新在用戶站28內(nèi)的軟件是一個受管理的處理。這在諸如提供初級電話線替換的無線本地環(huán)的關(guān)鍵網(wǎng)絡(luò)或“總是開啟”網(wǎng)絡(luò)中特別重要。圖6顯示網(wǎng)絡(luò)20的管理系統(tǒng)層次,其包括網(wǎng)絡(luò)操作中心(NOC)200,無線扇區(qū)管理器204,其用于網(wǎng)絡(luò)20內(nèi)基站24中的每個扇區(qū),以及用戶站更新客戶端208,其用于由網(wǎng)絡(luò)20服務(wù)的每個用戶站28。
網(wǎng)絡(luò)操作中心200是集中式設(shè)備,其由網(wǎng)絡(luò)20的運營者控制,并且,除管理整個網(wǎng)絡(luò)20的用戶站更新之外,還執(zhí)行其他網(wǎng)絡(luò)管理功能,例如OAM&P等。無線扇區(qū)管理器204優(yōu)選的位于網(wǎng)絡(luò)20的各個基站24內(nèi),還可和更新服務(wù)器36其址或在其內(nèi)實現(xiàn)。如果基站24是全向(單個扇區(qū))基站,則在該基站24僅提供單個無線扇區(qū)管理器204。期望的是,更普遍的,基站24采用非全向(波束成形)天線,其允許基站服務(wù)于增強密度的用戶站28。例如,如果采用60度波束成形天線,則基站24可配置成6個不同的無線扇區(qū),每個扇區(qū)服務(wù)于由基站24服務(wù)的用戶站28總數(shù)的一個子集。這樣,在基站24提供6個無線扇區(qū)管理器204。最后,作為其核心固件的一部分的每個用戶站28包括更新客戶端208,它在用戶站28上執(zhí)行。
在圖6中,期望用虛線顯示的無線扇區(qū)管理器204代表多個這樣的無線扇區(qū)管理器204和它們相關(guān)的更新客戶端,因為NOC200可服務(wù)幾百個無線扇區(qū)管理器204,并通過它們,通過它們的更新客戶端208來服務(wù)幾千或更多用戶站28。
當(dāng)創(chuàng)建了用戶站28的輔助軟件或核心固件的更新時,并且網(wǎng)絡(luò)20的運營者希望實現(xiàn)時,網(wǎng)絡(luò)操作中心200確定裝載到由網(wǎng)絡(luò)20所服務(wù)的每個用戶站28內(nèi)的軟件當(dāng)前版本。正如本領(lǐng)域技術(shù)人員所知道的,可用多種方式執(zhí)行該確定。在本發(fā)明實施例中,每當(dāng)用戶站28開啟和/或每次執(zhí)行更新之后,每個用戶站28的更新客戶端208向服務(wù)該用戶站的無線扇區(qū)管理器204報告裝載到用戶站28的軟件的當(dāng)前版本。無線扇區(qū)管理器204將此信息轉(zhuǎn)發(fā)給網(wǎng)絡(luò)操作中心200,在此將該信息存入適當(dāng)數(shù)據(jù)庫。正如本領(lǐng)域技術(shù)人員已知的,可采用不同技術(shù)確定每個用戶站28的當(dāng)前裝載軟件,包括以適當(dāng)間隔輪詢更新客戶端208等。
一旦確定了網(wǎng)絡(luò)內(nèi)20或網(wǎng)絡(luò)20內(nèi)用戶站28的興趣子集內(nèi)的(例如,網(wǎng)絡(luò)運營者可能僅對更新特定城市內(nèi)的用戶站28感興趣)每個用戶站的當(dāng)前軟件裝載,網(wǎng)絡(luò)操作中心200確定應(yīng)當(dāng)更新的用戶站28。通常,期望更新網(wǎng)絡(luò)20內(nèi)的所有用戶站28,但還期望要求能更新用戶站28的選定子集,或甚至是單個用戶站28。
網(wǎng)絡(luò)操作中心200確保所期望更新軟件在更新服務(wù)器或服務(wù)器36上是可用的,該服務(wù)器服務(wù)具有要更新用戶站28的無線扇區(qū)管理器204,如果需要,則傳送更新的軟件到更新服務(wù)器36。然后,網(wǎng)絡(luò)操作中心200指示具有要更新用戶站28的無線扇區(qū)管理器204識別那些用戶站28,并指示它們起動更新。
一旦無線扇區(qū)管理器204從網(wǎng)絡(luò)操作中心200接收到更新指示,它確定它所管理的要更新的用戶站28的活動級別或狀態(tài)。理想的,僅當(dāng)它們在通信鏈路32上所需容量不再另外需要、和/或用戶站28沒有執(zhí)行會使更新處理中斷的最終用戶處理時才執(zhí)行更新。相應(yīng)的,無線扇區(qū)管理器204首先確定它可以在通信鏈路32上空閑出和/或具有發(fā)射更新的容量。期望的是,通常在最終用戶未使用通信鏈路32的深夜或凌晨執(zhí)行這樣的更新。然而,同樣期望能由指示無線扇區(qū)管理器204的網(wǎng)絡(luò)操作中心200給基本更新(例如穩(wěn)定網(wǎng)絡(luò)20操作或提供增強的安全性所需的更新等)分配更新優(yōu)先級,以盡早執(zhí)行更新,終止或中斷其它對通信鏈路32容量的使用和/或在要更新的用戶站28中斷,降級或中止最終用戶的活動。
一旦由無線扇區(qū)管理器204確定在通信鏈路32上它具有發(fā)射更新到用戶站28的容量,或在產(chǎn)生了容量的優(yōu)先級更新的情況中,它查詢每個要更新的用戶站28中的更新客戶端208,以確定這些用戶站28的狀態(tài)。該狀態(tài)指示目前在該用戶站28上發(fā)生的活動的級別和/或類型。
例如,用戶站28可以指示它已空閑了10分鐘(沒有最終用戶活動),或指示當(dāng)前正進行用于最終用戶的http會話等。因為通常將更新下載的傳送首先存儲在RAM存儲器82內(nèi),如果選定來存儲下載的必要存儲器數(shù)量(該數(shù)量可以是對所有更新而預(yù)定的數(shù)量,或可由無線扇區(qū)管理器204在它的狀態(tài)查詢中提供給更新客戶端208)在RAM存儲器82內(nèi)不可用,則用戶站28將在其給無線扇區(qū)管理器204的狀態(tài)報告中包含此信息。另一選擇是,用戶站23內(nèi)的更新客戶端208可以確定它是否能終止使用RAM的處理和/或應(yīng)用,從而騰空存儲器空間,并且如果可能,將在發(fā)送狀態(tài)響應(yīng)至無線扇區(qū)管理器204之前就這樣做。
無線扇區(qū)管理器204檢查從每個要更新的用戶站28接收的狀態(tài)響應(yīng),并確定此時可以將哪些用戶站包括在更新中。然后,這些用戶站28中每一個的更新客戶端208從無線扇區(qū)管理器204接收更新信息傳輸,該無線扇區(qū)管理器204通知用戶站28它們會經(jīng)歷更新,并指明要在其上發(fā)射更新的通信鏈路32的信道。
然后無線扇區(qū)管理器204啟動從更新服務(wù)器36到被指示處理更新的用戶站28的對更新的多點傳送傳輸。在本發(fā)明的實施例中,經(jīng)是以多點傳送傳輸經(jīng)UDP在IP上來發(fā)射更新,且每個發(fā)射分組包括CRC校驗和,以驗證分組的正確接收以及順序編號或其他唯一標(biāo)識符,從而每個用戶站28可以確定它是否正確接收到所有必需分組。在由用戶站28不正確接收或連同丟失一個或多個分組的情況中,當(dāng)傳輸進行時,該用戶站28可以發(fā)送重新發(fā)射請求給無線扇區(qū)管理器204,且所請求的分組能夠被重新發(fā)射。優(yōu)選的,在多點傳送信道上執(zhí)行此重新傳輸,并可用于所有正在更新的用戶站28(在多于一個用戶站請求重新傳輸相同分組的情況中),盡管也期望為此目的在由無線扇區(qū)管理器204為用戶站28所建立通信鏈路32的專用信道上進行此重新傳輸至用戶站。
在實施例中,一旦下載并驗證了整個更新,在用戶站中的更新客戶端必須確定何時執(zhí)行RSU86的更新。因為更新將要求重新啟動(重新開啟)用戶站28,因此,更新客戶端208試圖選擇對最終用戶出現(xiàn)最小服務(wù)中斷(如果有的話)的更新時間。同樣,期望這種更新通常在深夜或凌晨或最終用戶使用用戶站28的可能性低的任何其他時間執(zhí)行。
然而,在用戶站28內(nèi)的更新客戶端208還可以通過確定發(fā)生哪些最終用戶活動和/或自從上次最終用戶活動的時間來作出關(guān)于何時執(zhí)行更新的智能決定。例如,多于20分鐘以前進行上次最終用戶語音或數(shù)據(jù)連接的用戶站28可以做出合理假設(shè),它在隨后執(zhí)行更新的幾分鐘內(nèi)不會被最終用戶所使用。
同樣,還期望某些更新對網(wǎng)絡(luò)20操作具有充分的重要性,它們將具有分配給它們的優(yōu)先級,該優(yōu)先級能使更新客戶端208終止在用戶站上的最終用戶活動,以確保執(zhí)行更新。
當(dāng)更新客戶端208已確定可以執(zhí)行更新時,執(zhí)行上述討論的處理,用新固件分區(qū)108’或復(fù)制分區(qū)108等重寫輔助軟件分區(qū)112。
一旦執(zhí)行了成功的更新,并且用戶站28已重新啟動并執(zhí)行新的核心固件和/或輔助軟件,則發(fā)送更新狀態(tài)消息給無線扇區(qū)管理器204,通知其更新已完成,并且驗證由用戶站28執(zhí)行的軟件版本編號。然后無線扇區(qū)管理器204更新它對已被更新以及那些仍需要更新的用戶站28的記錄。
然后無線扇區(qū)管理器204通過一次或多次迭代,來對剩余的要更新的用戶站28重復(fù)該處理。期望直至無線扇區(qū)內(nèi)預(yù)先選定比例的要更新的用戶站28可用于更新時才開始更新。例如能夠選定除非至少其扇區(qū)內(nèi)50%的要更新的用戶站28可用于更新,否則無線扇區(qū)管理器204不會開始更新。如果沒有達到此閾值,則將更新推遲直至滿足此閾值,或直至網(wǎng)絡(luò)操作中心降低此閾值(例如到35%),或增加更新優(yōu)先級,從而強迫用戶站28實施更新。
由無線扇區(qū)管理器204通知網(wǎng)絡(luò)操作中心200更新的狀態(tài)。因此,網(wǎng)絡(luò)操作中心200可以確定已更新的用戶站28的數(shù)量,以及剩余要更新的數(shù)量。如果網(wǎng)絡(luò)操作中心200觀察到少于其預(yù)期的用戶站28執(zhí)行了更新,則它可為更新提供優(yōu)先級,從而強迫用戶站28準(zhǔn)備好進行更新等。
雖然期望在多數(shù)情況下核心固件和輔助軟件更新可作為一個更新來發(fā)向射,但是,同時也期望某些情況下需要首先發(fā)射核心固件更新,在用戶站28成功安裝該更新之后再發(fā)射輔助軟件更新。還期望在某些情況中需要僅更新輔助軟件。在此種情況下時,不更新核心固件,并在現(xiàn)有輔助軟件分區(qū)112寫入更新的輔助軟件。
圖7顯示上述更新處理的流程圖。當(dāng)網(wǎng)絡(luò)操作中心200想要更新網(wǎng)絡(luò)20內(nèi)的裝置時,在步驟300,確定需要安裝更新的裝置。在步驟304,傳送更新到更新服務(wù)器36(或多個服務(wù)器)或使該對更新服務(wù)器36(或多個服務(wù)器)可用,此將更該新傳送到要更新的裝置。
在步驟308,每個無線扇區(qū)管理器204確定它服務(wù)的哪些裝置可用于更新。在步驟312,無線扇區(qū)管理器204指示那些裝置它們將被更新,并提供更新通信的細節(jié),例如多點傳送參數(shù)等。
在步驟316,發(fā)射更新到要更新的裝置。每個預(yù)期裝置或者在傳輸完成時或者在傳輸發(fā)生時驗證傳輸更新的接收,且在步驟320,具有所接收的錯誤傳輸部分或具有所丟失的接收傳輸部分的裝置向無線扇區(qū)管理器204通知這一事實,并且該無線扇區(qū)管理其204會重新發(fā)射這些部分。
在步驟324,一旦裝置獲得更新的正確副本,則該裝置確定執(zhí)行更新的適當(dāng)時間。如上所述,該確定可以是無關(guān)重要的(即不考慮裝置狀態(tài)就執(zhí)行更新),或取決于裝置的狀態(tài),包括例如當(dāng)前在裝置上執(zhí)行的處理,自從執(zhí)行最終用戶處理的時間等的因素。
當(dāng)獲得更新和裝置的重新啟動時,在步驟328,該裝置向管理它的無線扇區(qū)管理器204通知它已被更新,并能夠提供其當(dāng)前裝載軟件的細節(jié)。
在步驟332,每個無線扇區(qū)管理器204確定是否有它管理的裝置要更新。如果存在這樣的裝置,根據(jù)需要再次執(zhí)行步驟308到328。如果沒有這樣的裝置,更新程序在步驟336完成。
雖然在此說明的實施例是本發(fā)明的特定實施,但是應(yīng)當(dāng)理解,這些實施例的組合、子集以及變化都在本發(fā)明范圍內(nèi)。
上述本發(fā)明的實施例僅是本發(fā)明的例子,并且本領(lǐng)域技術(shù)人員還可以實現(xiàn)它的替代方案和修正,而不背離僅有附隨權(quán)利要求限定的本
權(quán)利要求
1.一種更新在多個遠程裝置內(nèi)的軟件的方法,該裝置中每一個具有的非易失性可重寫存儲容量都不足夠大到可以存儲軟件的更新和先前的版本這兩者,且該裝置中每一個都連接到網(wǎng)絡(luò),該方法包括以下步驟(i)將更新放在更新服務(wù)器上,該更新包括至少核心固件更新;(ii)標(biāo)識連接到網(wǎng)絡(luò)的要更新的裝置;(iii)從更新服務(wù)器通過網(wǎng)絡(luò)傳送更新到所標(biāo)識的裝置,每個所標(biāo)識的裝置驗證該更新的接收,請求重新傳輸并接收任何先前未正確接收的更新部分;(iv)將所接收更新的核心固件部分寫入到非易失性可重寫存儲單元中,從而不重寫目前存儲在存儲單元內(nèi)的核心固件的先前版本;(v)驗證寫入到存儲單元的所接收更新的核心固件部分;(vi)將所驗證的更新核心固件標(biāo)識為要由該裝置所使用的有效核心固件,并將核心固件的先前版本標(biāo)識為不可用;以及(vii)重新啟動該裝置以裝載并執(zhí)行所更新的軟件。
2.權(quán)利要求1的方法,其中在步驟(iii)和(iv)之間,將核心固件先前版本復(fù)制到存儲在存儲單元內(nèi)的輔助軟件上并對其進行驗證,將該副本標(biāo)識為要由該裝置所使用的有效核心固件,并將原始的標(biāo)識為不可用。
3.根據(jù)權(quán)利要求2的方法,其中更新進一步包括所更新的輔助軟件,且由該裝置接收并驗證此輔助軟件,以及其中在步驟(vi)和(vii)之間,用輔助軟件更新來重寫不可用的核心固件先前版本。
4.根據(jù)權(quán)利要求1的方法,其中更新進一步包括所更新的輔助軟件,且由該裝置接收并驗證此輔助軟件,以及其中在步驟(vi)和(vii)之間,用輔助軟件更新來重寫不可用的核心固件先前版本。
5.根據(jù)權(quán)利要求1-4中任何一個的方法,其中步驟(ii)還包括該裝置向網(wǎng)絡(luò)通知其是否可用于更新。
6.一種用于通過通信鏈路來遠程更新在至少一個電子裝置內(nèi)的核心固件的系統(tǒng),該系統(tǒng)包括在至少一個電子裝置內(nèi)的存儲子系統(tǒng),包括非易失性可重寫存儲器,在其中存儲有核心固件,以及其足夠大到可以存儲輔助軟件,但不夠大到可以同時存儲核心固件、核心固件更新版本以及輔助軟件,該核心固件包括指令,其用于將核心固件更新版本寫入到非易失性可重寫存儲器中,從而不重寫核心固件先前版本,以及然后禁用核心固件先前版本,從而當(dāng)重新啟動該至少一個電子裝置時,裝載并執(zhí)行核心固件更新版本;以及更新服務(wù)器,其操作用于通過通信鏈路來傳送更新到至少一個電子裝置,該更新包括核心固件的更新版本。
7.根據(jù)權(quán)利要求6的系統(tǒng),其中核心固件包括指令,其用于將輔助軟件的更新版本寫入到非易失性可重寫存儲器,從而重寫至少一部分禁用的核心固件先前版本,但不重寫核心固件更新版本。
8.根據(jù)權(quán)利要求7的系統(tǒng),其中存儲子系統(tǒng)額外包括非易失性存儲器,該非易失性存儲器包括指令,該指令在當(dāng)電子裝置重新啟動時被執(zhí)行,并致使對非易失性可重寫存儲器進行掃描以尋找未禁用的核心固件版本,以及裝載并執(zhí)行那個核心固件版本。
9.一種用于通過通信鏈路來遠程更新至少一個電子裝置內(nèi)的核心固件和輔助軟件的系統(tǒng),該系統(tǒng)包括在至少一個電子裝置內(nèi)的存儲單元,其用于存儲核心固件和輔助軟件,包括非易失性可重寫存儲器,在其中存儲有在第一分區(qū),有包含核心固件的第一存儲內(nèi)容,以及在足夠大到可以存儲第一存儲內(nèi)容的第二分區(qū),有足夠小到可以存儲在第一分區(qū)且包含輔助軟件的第二存儲內(nèi)容,核心固件包括更新客戶端,該更新客戶端,在接收到第一存儲內(nèi)容的更新版本之后,將第一存儲內(nèi)容的更新版本寫入到重寫第二存儲內(nèi)容的第二分區(qū),以及禁用包含在第一分區(qū)中的第一存儲內(nèi)容,以及然后在接收到第二存儲內(nèi)容的更新版本之后,將第二存儲內(nèi)容的更新版本寫入到重寫所禁用的第一存儲內(nèi)容的第一分區(qū),并重新啟動電子裝置;以及非易失性存儲器,其內(nèi)存儲有電子裝置重新啟動時所執(zhí)行的引導(dǎo)裝載指令,該引導(dǎo)裝載指令包括指令,當(dāng)執(zhí)行該指令時,搜索非易失性可重寫存儲器以尋找未禁用的第一存儲內(nèi)容版本,以及當(dāng)查找到一個時將電子裝置的控制移交給存儲在該存儲內(nèi)容中的核心固件,以及更新服務(wù)器,其操作用于通過通信鏈路傳送更新到至少一個電子裝置,該更新包含第一和第二存儲內(nèi)容的更新版本。
10.一種用于通過通信鏈路來遠程更新至少一個電子裝置內(nèi)的核心固件和輔助軟件的系統(tǒng),該系統(tǒng)包括在至少一個電子裝置內(nèi)的存儲單元,其用于存儲核心固件和輔助軟件,包括非易失性可重寫存儲器,其內(nèi)存儲有在第一分區(qū),有包含核心固件的第一存儲內(nèi)容,以及在足夠大到可以存儲第一存儲內(nèi)容的第二分區(qū),有足夠小到可以存儲在第一分區(qū)且包含輔助軟件的第二存儲內(nèi)容,核心固件包括更新客戶端,該更新客戶端,在接收到第一存儲內(nèi)容的更新版本之后,將第一存儲內(nèi)容復(fù)制到重寫第二存儲內(nèi)容的第二分區(qū),將第一存儲內(nèi)容的更新版本寫入到重寫第一存儲內(nèi)容的第一分區(qū),以及然后在接收到第二存儲內(nèi)容的更新版本之后,將第二存儲內(nèi)容的更新版本寫入第二分區(qū),并重新啟動電子裝置;以及非易失性存儲器,其內(nèi)存儲有電子裝置重新啟動時所執(zhí)行的引導(dǎo)裝載指令,該引導(dǎo)裝載指令包括指令,當(dāng)執(zhí)行該指令時,搜索非易失性可重寫存儲器以尋找未禁用的第一存儲內(nèi)容版本,以及當(dāng)查找到一個時將電子裝置的控制移交給存儲在該存儲內(nèi)容中的核心固件,以及更新服務(wù)器,其操作用于通過通信鏈路傳送更新到至少一個電子裝置,該更新包含第一和第二存儲內(nèi)容的更新版本。
11.一種用于通過通信鏈路來遠程更新至少一個電子裝置內(nèi)的核心固件和輔助軟件的系統(tǒng),該系統(tǒng)包括在至少一個電子裝置內(nèi)的存儲單元,其用于存儲核心固件和輔助軟件,包括非易失性可重寫存儲器,其內(nèi)存儲有在第一分區(qū),有包含核心固件的第一存儲內(nèi)容,以及在足夠大到可以存儲第一存儲內(nèi)容的第二分區(qū),有足夠小到可以存儲在第一分區(qū)且包含輔助軟件的第二存儲內(nèi)容,核心固件包括更新客戶端,該更新客戶端,在接收到第一存儲內(nèi)容的更新版本之后,如果可能,則減少第二分區(qū)的大小,從而它恰好足夠大到可以存儲第一存儲內(nèi)容的更新版本,將第一存儲內(nèi)容的更新版本寫入到重寫第二分區(qū)先前內(nèi)容的第二分區(qū),以及禁用存儲在第一分區(qū)存儲的第一存儲內(nèi)容版本,以及然后在接收到第二存儲內(nèi)容的更新版本之后,如果可能,增加第一分區(qū)的大小,以包括不在第二分區(qū)內(nèi)的非易失性可重寫存儲器的任何部分,將第二存儲內(nèi)容的更新版本寫入重寫第一分區(qū)先前內(nèi)容的第一分區(qū),并重新啟動電子裝置;以及非易失性存儲器,其內(nèi)存儲有電子裝置重新啟動時所執(zhí)行的引導(dǎo)裝載指令,該引導(dǎo)裝載指令包括指令,當(dāng)執(zhí)行該指令時,搜索非易失性可重寫存儲器以尋找未禁用的第一存儲內(nèi)容版本,以及當(dāng)查找到一個時將電子裝置的控制移交給存儲在該存儲內(nèi)容中的核心固件,以及更新服務(wù)器,其操作用于通過通信鏈路傳送更新到至少一個電子裝置,該更新包含第一和第二存儲內(nèi)容的更新版本。
12.根據(jù)權(quán)利要求6-11中任意一個的系統(tǒng),其中寫入到非易失性可重寫存儲器是經(jīng)驗證的。
13.根據(jù)權(quán)利要求12的系統(tǒng),其中更新客戶端進一步操作用于向更新服務(wù)器通知在給定時間該至少一個電子裝置是否可用,更新服務(wù)器響應(yīng)于從更新客戶端接收的信息,以在當(dāng)該電子裝置不可用于更新時延遲到該電子裝置的更新。
14.根據(jù)權(quán)利要求13的系統(tǒng),其中更新服務(wù)器可以給更新優(yōu)先級,從而更新客戶端可使電子裝置可用于在另外情況下是不可用的更新。
15.一種用于電子裝置內(nèi)的存儲子系統(tǒng),包括非易失性可重寫存儲器,其中存儲有核心固件和輔助軟件,核心固件包括指令,其用于將核心固件更新版本寫入到該非易失性可重寫存儲器,從而重寫至少一部分輔助軟件,但不重寫核心固件先前版本,驗證核心固件更新版本,以及禁用核心固件先前版本,從而當(dāng)重新啟動該至少一個電子裝置時,裝載并執(zhí)行核心固件更新版本。
16.一種用于電子裝置內(nèi)的存儲子系統(tǒng),包括非易失性可重寫存儲器,其中存儲有核心固件,且其是足夠大到可以存儲核心固件和輔助軟件,但不足夠大到可以同時存儲核心固件、核心固件的更新版本以及輔助軟件,該核心固件包括指令,該指令用于將核心固件更新版本寫入到該非易失性可重寫存儲器,從而不重寫核心固件先前版本,驗證核心固件更新版本,以及禁用核心固件先前版本,從而當(dāng)重新啟動該至少一個電子裝置時,裝載并執(zhí)行核心固件更新版本。
17.根據(jù)權(quán)利要求15或16的存儲子系統(tǒng),其中核心固件包括指令,其用于將輔助軟件的更新版本寫入到非易失性可重寫存儲器,從而重寫至少一部分禁用的核心固件先前版本,但不重寫核心固件更新版本。
18.根據(jù)權(quán)利要求17的存儲子系統(tǒng),還包括非易失性存儲器,其包含指令,該指令在當(dāng)電子裝置重新啟動時執(zhí)行,并致使掃描非易失性可重寫存儲器以尋找未禁用核心固件版本,以及裝載并執(zhí)行該未禁用的核心固件版本。
19.為用于能執(zhí)行所存儲的指令以及接收這種指令的更新版本的電子裝置,一種用于存儲這種指令的存儲子系統(tǒng),包括非易失性可重寫存儲器,其內(nèi)存儲有在第一分區(qū),有第一存儲內(nèi)容,其包括至少允許電子裝置重新啟動、或當(dāng)進行更新時如果電子裝置重新啟動則繼續(xù)更新非易失性可重寫存儲器所需的指令;以及在足夠大到可以存儲第一存儲內(nèi)容的第二分區(qū),有第二存儲內(nèi)容,其足夠小到可以被存儲在第一分區(qū),并包括所有沒有包含在電子裝置重新啟動之后正常操作所需的第一存儲內(nèi)容中的指令,在第一存儲內(nèi)容中所存儲的指令包括指令,其在當(dāng)接收到第一存儲內(nèi)容的更新版本之后被執(zhí)行時,將第一存儲內(nèi)容更新版本寫入到重寫第二存儲內(nèi)容的第二分區(qū)中,并禁用包含在第一分區(qū)的第一存儲內(nèi)容;以及指令,其在當(dāng)接收到第二存儲內(nèi)容更新版本之后被執(zhí)行時,將第二存儲內(nèi)容更新版本寫入到重寫所禁用的第一存儲內(nèi)容的第一分區(qū),并重啟電子裝置;以及非易失性存儲器,其內(nèi)存儲有電子裝置重新啟動時所執(zhí)行的引導(dǎo)裝載指令,該引導(dǎo)裝載指令包括指令,當(dāng)執(zhí)行該指令時,搜索非易失性可重寫存儲器以尋找未禁用的第一存儲內(nèi)容版本,以及當(dāng)查找到一個時將電子裝置的控制移交給存儲在該存儲內(nèi)容中的指令。
20.為用于能執(zhí)行所存儲的指令以及接收這種指令的更新版本的電子裝置,一種用于存儲這種指令的存儲子系統(tǒng),包括非易失性可重寫存儲器,其內(nèi)存儲有在第一分區(qū),有第一存儲內(nèi)容,其包括至少允許電子裝置重新啟動、或當(dāng)進行更新時如果電子裝置重新啟動則繼續(xù)更新非易失性可重寫存儲器所需的指令;以及在足夠大到可以存儲第一存儲內(nèi)容的第二分區(qū),有第二存儲內(nèi)容,其包括所有沒有包含在電子裝置重新啟動之后正常操作所需的第一存儲內(nèi)容中的指令,在第一存儲內(nèi)容中所在存儲的指令包括指令,其在當(dāng)接收到第一存儲內(nèi)容的更新版本之后被執(zhí)行時,將第一存儲內(nèi)容復(fù)制到重寫第二存儲內(nèi)容的第二分區(qū)中,將第一存儲內(nèi)容更新版本寫入到重寫第一存儲內(nèi)容的第一分區(qū)中,以及指令,其在當(dāng)接收到第二存儲內(nèi)容更新版本之后被執(zhí)行時,將第二存儲內(nèi)容更新版本寫入到重寫所禁用的第一存儲內(nèi)容的第一分區(qū),并重啟電子裝置;以及非易失性存儲器,其內(nèi)存儲有電子裝置重新啟動時所執(zhí)行的引導(dǎo)裝載指令,該引導(dǎo)裝載指令包括指令,當(dāng)執(zhí)行該指令時,搜索非易失性可重寫存儲器以尋找未禁用的第一存儲內(nèi)容版本,以及當(dāng)查找到一個時將電子裝置的控制移交給存儲在該存儲內(nèi)容中的指令。
21.為用于能執(zhí)行所存儲的指令以及接收這種指令的更新版本的電子裝置,一種用于存儲這種指令的存儲子系統(tǒng),包括非易失性可重寫存儲器,其內(nèi)存儲有在要么以非易失性可重寫存儲器的起始為開始、要么以非易失性可重寫存儲器的末尾為結(jié)束的連續(xù)的第一分區(qū)中,有第一存儲內(nèi)容,其包括至少允許電子裝置重新啟動、或當(dāng)進行更新時如果電子裝置重新啟動則繼續(xù)更新非易失性可重寫存儲器所需的指令,以及在占用不在第一分區(qū)之內(nèi)的非易失性可重寫存儲器部分且足夠大到可以存儲第一存儲內(nèi)容的第二分區(qū)中,有第二存儲內(nèi)容,其包括所有電子裝置重新啟動之后正常操作所需的且沒有包含在第一存儲內(nèi)容中的指令,在第一存儲內(nèi)容中所存儲的指令包括指令,其在當(dāng)接收到第一存儲內(nèi)容的更新版本之后被執(zhí)行時,如果可能,則減少第二分區(qū)的大小,從而它恰好足夠大到可以存儲第一存儲內(nèi)容的更新版本,將第一存儲內(nèi)容的更新版本寫入到重寫第二分區(qū)先前內(nèi)容的第二分區(qū),以及禁用存儲在第一分區(qū)的第一存儲內(nèi)容,以及指令,其在接收到第二存儲內(nèi)容的更新版本之后被執(zhí)行時,如果可能,則增加第一分區(qū)的大小,以包括不是第二分區(qū)中的非易失性可重寫存儲器的任何部分,將第二存儲內(nèi)容的更新版本寫入到重寫第一分區(qū)先前內(nèi)容的第一分區(qū),并重新啟動電子裝置;以及非易失性存儲器,其內(nèi)存儲有電子裝置重新啟動時所執(zhí)行的引導(dǎo)裝載指令,該引導(dǎo)裝載指令包括指令,當(dāng)執(zhí)行該指令時,搜索非易失性可重寫存儲器以尋找未禁用的第一存儲內(nèi)容版本,以及當(dāng)查找到一個時將電子裝置的控制移交給存儲在該存儲內(nèi)容中的指令。
22.一種以核心固件更新版本來更新與輔助軟件一同存儲在電子裝置的非易失性可重寫存儲器內(nèi)的核心固件的方法,包括以下步驟(i)將核心固件更新版本寫入非易失性可重寫存儲器中,從而重寫輔助軟件的至少一部分,但不重寫核心固件的先前版本;以及(ii)禁用核心固件的先前版本,從而在重新啟動電子裝置時可以裝載并執(zhí)行該核心固件的更新版本。
23.一種以核心固件和輔助軟件更新版本來更新存儲在電子裝置非易失性可重寫存儲器內(nèi)的核心固件和輔助軟件先前版本的方法,包括以下步驟(i)將核心固件更新版本寫入到非易失性可重寫存儲器中,從而重寫至少一部分輔助軟件,但不重寫核心固件先前版本;(ii)禁用核心固件先前版本,從而當(dāng)重新啟動該電子裝置時,裝載并執(zhí)行該核心固件更新版本;以及(iii)將輔助軟件更新版本寫入到非易失性可重寫存儲器中,從而不重寫核心固件更新版本。
24.根據(jù)權(quán)利要求22或23的方法,其中,當(dāng)重新啟動電子裝置時,對非易失性可重寫存儲器進行掃描以尋找未禁用的核心固件版本,以及然后裝載并執(zhí)行那個核心固件版本。
25.一種將更新安裝到存儲在非易失性可重寫存儲器內(nèi)的軟件的方法,該存儲器不足夠大到容納該更新和該軟件兩者,該方法包括以下步驟將更新分為分離的可寫部分,其包括可存儲在不大于非易失性可重寫存儲器一半的核心部分;將非易失性可重寫存儲器分為分離的可重寫部分,其包括核心部分,該核心部分不大于非易失性可重寫存儲器的一半且包含對應(yīng)于更新的核心部分的軟件部分,以及輔助部分,其恰好足夠大到可以容納更新的核心部分;將更新的核心部分寫入到非易失性可重寫存儲器的輔助部分并驗證它;禁用包含在非易失性可重寫存儲器核心部分的先前軟件版本;以及將未包括在更新核心部分的更新部分寫入到未包括在非易失性可重寫存儲器核心部分內(nèi)的非易失性可重寫存儲器部分,并驗證它。
26.一種用于通過通信鏈路來遠程更新至少一個電子裝置的系統(tǒng),所述系統(tǒng)包括更新服務(wù)器,其操作用于通過通信鏈路來傳送更新到至少一個電子裝置,該更新包括核心固件和輔助軟件;易失性存儲器,其暫時存儲從更新服務(wù)器接收的傳送;在所述至少一個電子裝置內(nèi)的非易失性重寫存儲單元,其分為至少第一和第二分區(qū),第一分區(qū)存儲核心固件和輔助軟件版本之一,以及第二分區(qū)存儲核心固件和輔助軟件另一版本;以及在該裝置上執(zhí)行更新客戶端,且操作用于(i)用所接收的存儲在易失性存儲器內(nèi)的更新核心固件來重寫存儲在第一和第二分區(qū)其中之一的輔助軟件版本,并驗證此寫入的成功;(ii)當(dāng)下一次該裝置重新啟動時,配置該裝置來執(zhí)行存儲在(i)的核心固件;(iii)用所接收的存儲在易失性存儲器內(nèi)的更新輔助軟件來重寫存儲在第一和第二分區(qū)的另一個中的核心固件版本,并驗證此寫入的成功;(iv)重新啟動該裝置,以執(zhí)行更新的核心固件和更新的輔助軟件。
27.根據(jù)如權(quán)利要求26的系統(tǒng),其中所述更新客戶端進一步操作用于向更新服務(wù)器通知在給定時間該裝置是否可用于更新,更新服務(wù)器響應(yīng)于從更新服務(wù)器所接收的信息,以在當(dāng)該裝置不可用于更新時延遲到該裝置的更新。
28.根據(jù)權(quán)利要求27所要求的系統(tǒng),其中更新服務(wù)器可以給更新定優(yōu)先級,從而更新客戶端使該裝置可用于在另外情況下不可用的更新。
全文摘要
一種用于遠程更新至少一個連接到網(wǎng)絡(luò)的電子裝置上軟件的系統(tǒng)。該電子裝置具有劃分為至少兩個分區(qū)的非易失性重寫存儲單元,其中一個分區(qū)包含核心固件,且另一分區(qū)包含輔助軟件。當(dāng)在裝置接收到更新時,將所更新的核心固件寫入以重寫在包含輔助軟件的可重寫存儲單元內(nèi)的分區(qū)。當(dāng)這項完成并得到驗證時,禁用由裝置來執(zhí)行存儲在存儲單元內(nèi)的核心固件先前版本。然后,將更新輔助軟件寫入以重寫核心固件舊版本。當(dāng)完成該寫入時,裝置確定一個適當(dāng)時間,以重寫啟動來執(zhí)行更新軟件。在另一個實施例中,從其所位于的分區(qū)將裝置內(nèi)的當(dāng)前核心固件復(fù)制到另一分區(qū),重寫存儲在那里的輔助軟件。將接收到來更新裝置的新核心固件重寫到第一分區(qū),在更新失敗時,存在舊的復(fù)制核心固件,且當(dāng)成功更新第一分區(qū)時,將輔助軟件寫入到第二分區(qū),重寫所復(fù)制的舊核心固件。這樣,在裝置常規(guī)操作中保留了核心固件和輔助軟件在分區(qū)內(nèi)的位置。
文檔編號G06F13/00GK1585926SQ02822665
公開日2005年2月23日 申請日期2002年9月17日 優(yōu)先權(quán)日2001年9月17日
發(fā)明者馬克·弗雷澤, 菲利普·A·里瓦德 申請人:索馬網(wǎng)絡(luò)公司