專(zhuān)利名稱(chēng):一種軟件升級(jí)方法、存儲(chǔ)媒介和軟件升級(jí)設(shè)備的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及通信領(lǐng)域,具體涉及一種軟件升級(jí)方法、存儲(chǔ)媒介和軟件升級(jí) 設(shè)備。
背景技術(shù):
在電信設(shè)備升級(jí)軟件時(shí),需要將軟件從媒介中升級(jí)到設(shè)備系統(tǒng)中,而通常 的做法需要復(fù)位重啟設(shè)備,這樣做經(jīng)常會(huì)中斷業(yè)務(wù),造成一定的損失,因而如 果能在避免重啟硬件的情況下完成軟件的升級(jí),便能最小程度地減少升級(jí)對(duì)業(yè) 務(wù)的影響。
如圖1所示,某一軟件在內(nèi)存中的地址是固定的,該圖是一個(gè)間隔內(nèi)存使用 示意圖,軟件會(huì)根據(jù)在內(nèi)存中的地址運(yùn)行,即軟件運(yùn)行區(qū)。在進(jìn)行軟件的升級(jí) 更新時(shí),需要將軟件升級(jí)到系統(tǒng)中,而按照現(xiàn)有方法,必須對(duì)硬件進(jìn)行重啟,
使用擴(kuò)展bootrom指令才能對(duì)軟件進(jìn)行搬移,實(shí)現(xiàn)升級(jí)軟件復(fù)位重啟運(yùn)行的過(guò)程 與系統(tǒng)第一次上電啟動(dòng)的流程沒(méi)有區(qū)別,包含了如圖2所示的四個(gè)過(guò)程:硬件(如 CPU)的重啟,硬件初始化和自檢,解壓軟件,啟動(dòng)軟件。具體來(lái)說(shuō),這四個(gè) 過(guò)程是這樣的。 其中
硬件的重啟如果更換了硬件的驅(qū)動(dòng)軟件、邏輯軟件等,在這些情況下都 需要重啟硬件。
硬件初始化和自檢其主要意義在于檢查硬件是否存在問(wèn)題,在這里的初 始化是指硬件重啟后boot階段的初始化,在軟件啟動(dòng)時(shí)也會(huì)進(jìn)行一些硬件初始 化,這些初始化,是為了恢復(fù)硬件的初始狀態(tài)。
解壓軟件指,通過(guò)可運(yùn)行的代碼從媒介中讀取軟件,然后把可執(zhí)行代碼解 壓縮到內(nèi)存中的主機(jī)軟件運(yùn)行區(qū)中。
啟動(dòng)軟件的過(guò)程,就是從主機(jī)軟件的內(nèi)存中的起始位置開(kāi)始運(yùn)行指令,完 成主機(jī)軟件的初始化和各種系統(tǒng)任務(wù)。
在系統(tǒng)中,所有的單板從上電啟動(dòng)到軟件成功運(yùn)行一般都要經(jīng)過(guò)上述一系
列的過(guò)程。如圖3所示,軟件升級(jí)更新時(shí),需要將軟件搬移到系統(tǒng)中,以軟件保 存在閃存FLASH中為例,在單板上一般有一個(gè)bootrom啟動(dòng)芯片,也就是我們常 說(shuō)的BIOS (Basic Input/Output System,基本輸入/輸出系統(tǒng)),bootrom芯片中 的指令是固化在里面的。另外,用于保存各種文件的FLASH芯片,其中保存有 擴(kuò)展bootrom指令,是由基本bootrom通過(guò)I/0設(shè)備寫(xiě)到FLASH中的,而FLASH中 保存的軟件的應(yīng)用指令是由擴(kuò)展bootrom通過(guò)I/0設(shè)備寫(xiě)到FLASH中的。在單板 上電啟動(dòng)時(shí),PC指針將會(huì)跳轉(zhuǎn)到bootrom芯片中某個(gè)固定的地址開(kāi)始執(zhí)行, bootrom芯片進(jìn)行簡(jiǎn)單的硬件初始化(比如片選的初始化)之后,開(kāi)始跳轉(zhuǎn)到 FLASH中的擴(kuò)展bootrom指令,執(zhí)行擴(kuò)展bootrom指令,擴(kuò)展bootrom指令對(duì)所有 的硬件進(jìn)行初始化并做適當(dāng)?shù)呐渲?,然后將FLASH中的軟件搬移到隨機(jī)存儲(chǔ)器 RAM中,完成軟件的啟動(dòng)。
硬件的重啟、初始化和自檢過(guò)程非常耗時(shí),這一過(guò)程會(huì)消耗大量的時(shí)間, 并影響業(yè)務(wù)的進(jìn)ff。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明所要解決的技術(shù)問(wèn)題就在于,提供一種軟件升級(jí)方法、 存儲(chǔ)々某介和軟件升級(jí)設(shè)備,以解決現(xiàn)有技術(shù)中在軟件升級(jí)時(shí)需要重啟系統(tǒng)所引 起的時(shí)間消耗及業(yè)務(wù)中斷問(wèn)題。
一種軟件升級(jí)方法,包括以下步驟
當(dāng)接收到軟件升級(jí)通知時(shí),設(shè)備執(zhí)行存^f某介中的軟件升級(jí)指令,進(jìn)行軟 件升級(jí)。
其中,所迷存^i某介為內(nèi)存時(shí),設(shè)備執(zhí)行內(nèi)存中預(yù)設(shè)固定地址區(qū)域內(nèi)存儲(chǔ) 的所述指令,進(jìn)行4t件升級(jí)。
其中,在系統(tǒng)上電啟動(dòng)時(shí)將軟件升級(jí)指令寫(xiě)入并保存于所述固定地址中。
其中,通過(guò)啟動(dòng)芯片bootrom將軟件升級(jí)指令寫(xiě)入并保存于所述固定地址中。
其中,所述存^i某介為閃存FLASH或者硬盤(pán)時(shí),所述軟件升級(jí)指令以文件 的形式保存在所述媒介中,設(shè)備執(zhí)行所迷存#^某介中的所述文件。 較佳地,所述軟件升級(jí)指令運(yùn)行時(shí)執(zhí)行以下步驟 Cl、軟件升級(jí)指令從媒介中讀取軟件; C2、軟件升級(jí)指令將所述軟件搬移到內(nèi)存中的軟件運(yùn)行區(qū)。 其中,所述步驟C1中包括軟件升級(jí)指令從閃存FLASH、內(nèi)存或者硬盤(pán)任 一種媒介中讀取軟件。 其中,步驟C2為
軟件升級(jí)指令將所述軟件搬移并解壓到內(nèi)存中的軟件運(yùn)行區(qū)。
較佳地,在步驟C2后還進(jìn)一步包括
C3、軟件升級(jí)指令跳轉(zhuǎn)到軟件在軟件運(yùn)行區(qū)的起始地址,運(yùn)行所述軟件。
本發(fā)明還提供了一種存儲(chǔ)媒介,該存儲(chǔ)媒介中存儲(chǔ)有用戶預(yù)設(shè)的軟件升級(jí) 指令,在收到觸發(fā)指令時(shí)執(zhí)行所存儲(chǔ)的指令,實(shí)現(xiàn)軟件的升級(jí)。
其中,所述存儲(chǔ)i某介為FLASH、硬盤(pán)或者內(nèi)存中的任一種。
其中,所述存儲(chǔ)媒介為內(nèi)存時(shí),所述預(yù)設(shè)的指令存儲(chǔ)在內(nèi)存中的固定地址 空間。
其中,所述存儲(chǔ)媒介為FLASH或者硬盤(pán)時(shí),所述預(yù)設(shè)指令以文件的形式存 儲(chǔ)在所迷存儲(chǔ)媒介中。
本發(fā)明還提供了一種軟件升級(jí)設(shè)備,包括存儲(chǔ)有用戶預(yù)設(shè)的指令的存儲(chǔ)々某 介,在收到觸發(fā)指令時(shí),執(zhí)行所述指令,實(shí)現(xiàn)軟件的升級(jí)。
其中,所述存儲(chǔ)媒介為內(nèi)存時(shí),所述預(yù)設(shè)的指令存儲(chǔ)在內(nèi)存中的固定地址 空間內(nèi)。 其中,所述存儲(chǔ)媒介為FLASH或者硬盤(pán)時(shí),所述預(yù)設(shè)指令以文件的形式存 儲(chǔ)在所述存儲(chǔ)媒介中。
由于采用以上方案,當(dāng)接收到軟件升級(jí)通知時(shí),設(shè)備執(zhí)行存儲(chǔ)媒介中的軟 件升級(jí)指令,進(jìn)行軟件升級(jí),在硬件不必進(jìn)行重啟的情況下直接實(shí)現(xiàn)軟件的升 級(jí),從而節(jié)省了系統(tǒng)重啟的時(shí)間,并避免系統(tǒng)業(yè)務(wù)的中斷。
圖l示出了系統(tǒng)的內(nèi)存使用示意圖。
圖2示出了現(xiàn)有系統(tǒng)重啟的流程示意圖。
圖3示出了現(xiàn)有技術(shù)中單板啟動(dòng)的硬件流程示意圖。
圖4示出了本發(fā)明所進(jìn)行的軟件內(nèi)存運(yùn)行區(qū)劃分示意圖。
圖5示出了本發(fā)明實(shí)現(xiàn)系統(tǒng)升級(jí)重啟的過(guò)程示意圖。
具體實(shí)施例方式
下面結(jié)合附圖和具體實(shí)施例對(duì)本發(fā)明予以詳細(xì)說(shuō)明。
本發(fā)明提供了一種軟件升級(jí)的方法,當(dāng)接收到軟件升級(jí)通知時(shí),設(shè)備執(zhí)行 存儲(chǔ)々某介中存儲(chǔ)的軟件升級(jí)指令,進(jìn)行軟件升級(jí)。
本發(fā)明還提供了 一種存 介,該存儲(chǔ)媒介中存儲(chǔ)用戶預(yù)設(shè)的升級(jí)指令, 在收到觸發(fā)指令時(shí)執(zhí)行所存儲(chǔ)的指令。該存儲(chǔ)々某介可以為內(nèi)存、硬盤(pán),也可以 是閃存FLASH。當(dāng)存儲(chǔ)媒介為內(nèi)存時(shí),存儲(chǔ)的是軟件升級(jí)指令,這段升級(jí)指令 存儲(chǔ)在內(nèi)存中的一塊固定的地址中,具體的存儲(chǔ)方法下文會(huì)有描述;而當(dāng)存儲(chǔ) 媒介是硬盤(pán)或者閃存時(shí),該軟件升級(jí)指令就以文件的形式存儲(chǔ)在所述存儲(chǔ)媒介 中。
本發(fā)明還提供了一種軟件升級(jí)設(shè)備,包括存儲(chǔ)有用戶預(yù)設(shè)的指令的存儲(chǔ)媒 介,在收到觸發(fā)指令時(shí),執(zhí)行所述指令,實(shí)現(xiàn)軟件的升級(jí)。該存儲(chǔ)媒介可以為
內(nèi)存、硬盤(pán),也可以是閃存FLASH。同樣,當(dāng)存儲(chǔ)媒介為內(nèi)存時(shí),存儲(chǔ)的是軟 件升級(jí)指令,這段升級(jí)指令存儲(chǔ)在內(nèi)存中的一塊固定的地址中;而當(dāng)存 介 是硬盤(pán)或者閃存時(shí),該軟件升級(jí)指令就以文件的形式存儲(chǔ)在所述存儲(chǔ)媒介中。
由于在系統(tǒng)正常運(yùn)行的情況下,升級(jí)軟件主動(dòng)復(fù)位時(shí),能夠保證當(dāng)前的硬 件系統(tǒng)的正常,只需要直接進(jìn)行軟件的搬移即可完成軟件的升級(jí)。以存儲(chǔ)媒介 為內(nèi)存為例,在本發(fā)明中,對(duì)所述內(nèi)存軟件運(yùn)行區(qū)重新進(jìn)行規(guī)劃。在主機(jī)軟件 運(yùn)行區(qū)中劃分一塊固定的地址,如圖4所示,稱(chēng)之為特殊指令區(qū),用于保存軟件 升級(jí)指令,替代擴(kuò)展bootrom指令的部分功能。在具體實(shí)施例中,這一劃分方法 可以通過(guò)以下步驟實(shí)現(xiàn)基于VxWorks文件系統(tǒng),在編譯軟件時(shí)通過(guò)配置文件 對(duì)內(nèi)存空間的使用進(jìn)行配置,即把主機(jī)軟件的運(yùn)行起始地址(圖3中的 RAM—LOW_ADRS )后移一段地址,通過(guò)代^碼的方式控制對(duì)所述地址空間不進(jìn) 行訪問(wèn),這樣實(shí)際軟件運(yùn)行時(shí),就有一段空余內(nèi)存,從而將這一部分地址劃分 出來(lái)只用于存放升級(jí)指令,作為特殊指令區(qū)。在以后的軟件升級(jí)中,便可以在 避免對(duì)硬件進(jìn)4亍重啟的情況下將軟件升級(jí)到系統(tǒng)中。
軟件升級(jí)指令在系統(tǒng)上電啟動(dòng)時(shí)通過(guò)bootrom寫(xiě)入特殊指令區(qū),之后只要系 統(tǒng)不掉電,這段指令就會(huì)一直保存,在以后軟件的各個(gè)版本的升級(jí)中,都可以 順口運(yùn)行該指令,在避免對(duì)硬件進(jìn)4亍重啟的情況下將軟件升級(jí)到系統(tǒng)中。
如圖5所示,當(dāng)系統(tǒng)需要進(jìn)行軟件升級(jí)更新時(shí),通過(guò)外部命令的觸發(fā),PC 指針將會(huì)跳轉(zhuǎn)到內(nèi)存中存放軟件升級(jí)指令的地址,執(zhí)行特殊指令區(qū)域中的軟件 升級(jí)指令,所述指令通過(guò)底層接口,屏蔽所有中斷和異常,完全控制CPU資源, 從而不需要進(jìn)行》更件初始化。
軟件升級(jí)指令從媒介中讀取軟件,然后把可執(zhí)行代碼搬移到內(nèi)存中的主機(jī) 軟件運(yùn)行區(qū)中,替代了擴(kuò)展bootrom指令的部分功能,當(dāng)可執(zhí)行代碼經(jīng)過(guò)壓縮時(shí), 還可以將其進(jìn)行解壓縮。媒介可以是內(nèi)存、硬盤(pán),也可以是FLASH等存儲(chǔ)媒介。 至此,就實(shí)現(xiàn)了軟件的升級(jí)過(guò)程。以升級(jí)軟件存放在FLASH為例,升級(jí)指令首 先從FLASH中把軟件讀入內(nèi)存,然后對(duì)升級(jí)軟件進(jìn)行解壓,把解壓后的升級(jí)軟 件放入軟件運(yùn)行區(qū),還可以對(duì)升級(jí)指令進(jìn)行配置,在解壓完成后,能夠立即跳
轉(zhuǎn)到主機(jī)軟件適衧區(qū),從主機(jī)軟件在內(nèi)存中的起始位置開(kāi)始運(yùn)行指令,完成主 機(jī)軟件的初始化和各種系統(tǒng)任務(wù),實(shí)現(xiàn)所述舊軟件的替換。
當(dāng)軟件升級(jí)指令存儲(chǔ)在FLASH或者硬盤(pán)中時(shí),軟件升級(jí)指令就以一個(gè)文件 的形式存放,由于FLASH或者硬盤(pán)的物理屬性,即使在系統(tǒng)掉電的情況下,該 升級(jí)指令也可以永久保存。相應(yīng)地,所述軟件升級(jí)方法同樣可以適用到FLASH 或者硬盤(pán)等存儲(chǔ)媒介。
通過(guò)所述方案,升級(jí)軟件時(shí),可以避免對(duì)硬件的重啟和自檢等過(guò)程,省去 硬件重啟和自檢的時(shí)間,同樣實(shí)現(xiàn)對(duì)軟件的升級(jí),這對(duì)于一些啟動(dòng)時(shí)有大量硬 件自檢的系統(tǒng),可以非常顯著地減少系統(tǒng)重啟的時(shí)間,避免業(yè)務(wù)的中斷。
以上所述僅是本發(fā)明的優(yōu)選實(shí)施方式,應(yīng)當(dāng)指出,對(duì)于本技術(shù)領(lǐng)域的普通 技術(shù)人員來(lái)說(shuō),在不脫離本發(fā)明原理的前提下,還可以作出若干改進(jìn)和潤(rùn)飾, 這些改進(jìn)和潤(rùn)飾也應(yīng)視為本發(fā)明的保護(hù)范圍。
權(quán)利要求
1、一種軟件升級(jí)方法,其特征在于,包括以下步驟當(dāng)接收到軟件升級(jí)通知時(shí),設(shè)備執(zhí)行存儲(chǔ)媒介中的軟件升級(jí)指令,進(jìn)行軟件升級(jí)。
2、 如權(quán)利要求l所述的軟件升級(jí)方法,其特征在于,所述存儲(chǔ)媒介為內(nèi)存 時(shí),設(shè)備執(zhí)行內(nèi)存中預(yù)設(shè)固定地址區(qū)域內(nèi)存儲(chǔ)的所述指令,進(jìn)行軟件升級(jí)。
3、 如權(quán)利要求2所述的軟件升級(jí)時(shí)方法,其特征在于,在系統(tǒng)上電啟動(dòng)時(shí) 將軟件升級(jí)指令寫(xiě)入并保存于所述固定地址中。
4、 如權(quán)利要求2或3所述的軟件升級(jí)方法,其特征在于,通過(guò)啟動(dòng)芯片 bootrom將軟件升級(jí)指令寫(xiě)入并保存于所述固定地址中。
5、 如權(quán)利要求l所述的軟件升級(jí)方法,其特征在于,所述存儲(chǔ)媒介為閃存 FLASH或者硬盤(pán)時(shí),所述軟件升級(jí)指令以文件的形式保存在所述媒介中,設(shè)備 執(zhí)行所述存儲(chǔ)媒介中的所述文件。
6、 如權(quán)利要求l、 2或者5任一所述的軟件升級(jí)方法,其特征在于,所述軟 件升級(jí)指令運(yùn)行時(shí)執(zhí)行以下步驟Cl、軟件升級(jí)指令從媒介中讀取軟件;C2、軟件升級(jí)指令將所述軟件搬移到內(nèi)存中的軟件運(yùn)行區(qū)。
7、 如權(quán)利要求6所述的軟件升級(jí)方法,其特征在于,所述步驟C1中包括 軟件升級(jí)指令從閃存FLASH、內(nèi)存或者硬盤(pán)任一種媒介中讀取軟件。
8、 如權(quán)利要求6所述的軟件升級(jí)方法,其特征在于,步驟C2為 軟件升級(jí)指令將所述軟件搬移并解壓到內(nèi)存中的軟件運(yùn)行區(qū)。
9、 如權(quán)利要求6所述的軟件升級(jí)方法,其特征在于,在步驟C2后還進(jìn)一步 包括C3、軟件升級(jí)指令跳轉(zhuǎn)到軟件在軟件運(yùn)行區(qū)的起始地址,運(yùn)行所述軟件。
10、 一種存儲(chǔ)媒介,其特征在于,該存儲(chǔ)媒介中存儲(chǔ)有用戶預(yù)設(shè)的軟件升 級(jí)指令,在收到觸發(fā)指令時(shí)執(zhí)行所存儲(chǔ)的指令,用于實(shí)現(xiàn)軟件的升級(jí)。
11、 如權(quán)利要求10所述的存儲(chǔ)媒介,其特征在于,所述存儲(chǔ)媒介為FLASH、硬盤(pán)或者內(nèi)存中的任一種。
12、 如權(quán)利要求ll所述的存儲(chǔ)媒介,其特征在于,所述存儲(chǔ)媒介為內(nèi)存時(shí), 所述預(yù)設(shè)的指令存儲(chǔ)在內(nèi)存中的固定地址空間內(nèi)。
13、 如權(quán)利要求ll所述的存儲(chǔ)媒介,其特征在于,所述存儲(chǔ)媒介為FLASH 或者硬盤(pán)時(shí),所述預(yù)設(shè)指令以文件的形式存儲(chǔ)在所述存儲(chǔ)媒介中。
14、 一種軟件升級(jí)設(shè)備,其特征在于,包括存儲(chǔ)有用戶預(yù)設(shè)的指令的存儲(chǔ) 媒介,在收到觸發(fā)指令時(shí),執(zhí)行所述指令,實(shí)現(xiàn)軟件的升級(jí)。
15、 如權(quán)利要求14所述的軟件升級(jí)設(shè)備,其特征在于,所述存儲(chǔ)媒介為內(nèi) 存時(shí),所述預(yù)設(shè)的指令存儲(chǔ)在內(nèi)存中的固定地址空間內(nèi)。
16、 如權(quán)利要求14所述的軟件升級(jí)設(shè)備,其特征在于,所述存儲(chǔ)媒介為 FLASH或者硬盤(pán)時(shí),所述預(yù)設(shè)指令以文件的形式存儲(chǔ)在所述存儲(chǔ)媒介中。
全文摘要
本發(fā)明公開(kāi)了一種軟件升級(jí)方法,所述方法包括當(dāng)接收到軟件升級(jí)通知時(shí),設(shè)備執(zhí)行存儲(chǔ)媒介中的軟件升級(jí)指令,進(jìn)行軟件升級(jí)。利用本方法進(jìn)行軟件升級(jí)時(shí),可以省去硬件重啟和自檢的時(shí)間,對(duì)于一些啟動(dòng)時(shí)有大量硬件自檢的系統(tǒng),能非常顯著地減少系統(tǒng)重啟的時(shí)間。
文檔編號(hào)G06F9/445GK101101555SQ20061006152
公開(kāi)日2008年1月9日 申請(qǐng)日期2006年7月5日 優(yōu)先權(quán)日2006年7月5日
發(fā)明者王震宇, 勇 鄒 申請(qǐng)人:華為技術(shù)有限公司