專利名稱:一種軟件升級的方法及系統的制作方法
技術領域:
本發明涉及軟件領域,尤其涉及一種軟件升級的方法及系統。
技術背景現有的軟件升級和回退的方法為首先將軟件的新版本通過命令加載到 系統的FLASH或EPROM中,之后,復位系統,即重啟系統,在系統啟動過 程中從FLASH或EPROM中讀出、并運行該FLASH或EPROM中的軟件,實現 軟件升級,如
圖1所示;在軟件的新版本無法使用的情況下,將軟件原有的版 本通過命令加載到系統的FLASH或EPROM中,重新運行,實現軟件回退。從上述內容可以看出,系統在使用軟件的新版本進行升級后,可能因為 某種原因,導致該軟件的新版本功能出現異常,使得軟件加載的命令無法使 用,軟件就無法回退到原有的版本;另外,升級后的新版本軟件可能會出現 無法啟動的情況,造成無法通過命令更新FLASH中的軟件版本;再有, FLASH屬于慢速設備,寫FLASH的過程會需要較長的時間,使得軟件的回退 時間較長。現有技術存在的這些缺陷,使得系統在進行軟件升級的時候,不 可避免的存在很大的風險,可能對相關的業務造成較大的影響。發明內容本發明的實施例提供了一種軟件升級的方法及系統,解決現有技術存在 的問題,從而達到在軟件升級后,若出現異常情況,保證系統快速回退到該 軟件的原來版本,最大程度地保證業務不因軟件升級出現的異常而受影響。本發明的實施例是通過以下技術方案實現一種軟件升級的方法,軟件保留區中存儲有軟件的新版本,所述方法包括判斷所述軟件的新版本是否已被讀取;當所述軟件的新版本沒有被讀取過時,從所述軟件保留區讀取并運行所 述軟件的新版本,進行軟件升級;當所述軟件的新版本已被讀取過時,讀取并運行所述軟件的穩定版本, 所述穩定版本包括所述軟件的原來版本;所述軟件保留區為快速存儲設備中預先指定的 一塊區域。一種軟件升級的方法,軟件保留區中沒有軟件的新版本存在時,讀取并 運行所述軟件的穩定版本,所述穩定版本包括所述軟件的原來版本。一種軟件升級的系統,所述系統包括存儲模塊、外部存儲媒介模塊、判 斷模塊和運行模塊;存儲模塊設置于快速存儲設備的指定區域中,用于存儲軟件的新版本;外部存儲媒介模塊用于存儲軟件的穩定版本,所述穩定版本包括軟件的 原來版本;判斷模塊用于判斷存儲模塊中的所述軟件的新版本是否已經被讀取 過,在確定存儲模塊中的所述軟件的新版本沒有被讀取過時,通知運行模塊 讀取、運行存儲模塊中的所述軟件的新版本;在確定存儲模塊中的所述軟件 的新版本已被讀取過時,通知運行模塊讀取、運行外部存儲媒介模塊中所述 軟件的原來版本;運行模塊用于根據判斷模塊的通知,讀取、運行所述軟件的指定版 本,所述指定版本包括所述軟件的新版本和所述軟件的原來版本。一種軟件升級的系統,所述系統包括存儲模塊、外部存儲媒介模塊、判 斷模塊和運行模塊,存儲模塊設置于快速存儲設備的指定區域中,用于存儲軟件的新版本;外部存儲媒介模塊用于存儲軟件的穩定版本,所述穩定版本包括軟件的 原來版本;判斷模塊用于判斷存儲模塊中有沒有軟件的新版本存在,在確定存儲 模塊中沒有所述軟件的新版本存在時,通知運行模塊讀取、運行外部存儲媒 介模塊中的所述軟件的原來版本;運行模塊用于根據判斷模塊的通知,讀取、運行所述軟件的原來版本。由上述本發明的實施例提供的技術方案可以看出,本發明的實施例提供 了一種軟件升級的方法及系統,實現在軟件升級后,若出現異常情況,保證 系統快速回退到原有的軟件版本,最大程度地保證業務不因軟件升級出現異 常而受影響。 附困說明圖1為現有技術提供的軟件升級流程示意圖;圖2為本發明的實施例提供的加載軟件新版本的流程示意圖;圖3為本發明的實施例提供的軟件升級的流程示意圖。
具體實施方式
作為軟件產品,每開發到一定階段、可執行指定功能后,都需要將當前 的軟件固化下來,以版本形式作為產品發布。每當一個軟件有新版本發布 時,該軟件的舊版本可能會有升級的需要,但軟件升級后如果影響了軟件的 基本功能,就必須在最短的時間內回退到該軟件的原來版本,避免對相關業 務造成過多的影響。本發明的實施例提供的軟件升級的方法及系統很好地解決了現有軟件升 級技術中存在的問題,并且在軟件升級失敗的情況下,能夠快速回退到原來 的軟件版本,最大程度地保證業務不受軟件升級失敗的影響。實現本發明的實施例所提供的軟件升級的技術方案,需要預先在快速存 儲設備中劃分一塊固定的區域,用于存儲軟件的最新版本,所述區域被稱之 為快速存儲設備的軟件保留區;在設備重新啟動后,如果快速存儲設備的軟 件保留區內有軟件的新版本存在,本發明實施方式需要判斷所述軟件保留區 中軟件的新版本是否已經被讀取過;如果所述軟件保留區內沒有軟件的新版 本存在,則可以直接從外部存儲媒介(如FLASH)中讀取所述軟件的原來版 本。當所述軟件保留區中軟件的新版本沒有被讀取過時,從所述軟件保留區 讀取并運行所述軟件的新版本,進行軟件升級;當所述軟件保留區中軟件的新版本已經被讀取過時,清除所述軟件保留 區中軟件的新版本,從外部存儲媒介中讀取并運行該軟件的穩定版本,該穩定 版本可以為該軟件的原來版本,也可以為該軟件采用新版本升級后的穩定版 本。需要說明的是,這里判斷所述軟件的新版本是否已經被讀取過,可以通 過判斷所述軟件的新版本是否有已讀取標識來實現。所述軟件的新版本在第 一次被讀取時,會被設置已讀取標識;已讀取標識可以設置在所述軟件保留 區中;由于進行了已讀取判斷,所以在軟件的新版本升級出現故障時,可以 直接讀取軟件的原來版本,避免了加載命令出現故障,無法回退到軟件的原 來版本的現象,而且,也避免了將軟件的原來版本寫入到FLASH的過程,從 而提高了軟件回退的可靠性,減少了軟件回退的延遲時間。在實現軟件的快 速回退的同時,可以清除所述軟件保留區內軟件的新版本,也可以不清除所 述軟件保留區內軟件的新版本。所述軟件保留區中可以保存至少一個軟件的新版本,即,所述軟件保留 區中的軟件的新版本的數量可以是多個,所述軟件的種類可以是一種,也可 以是多種。這里提到的快速存儲設備是相對于外部存儲々某介而言,比如內存就是一 種快速存儲設備,在下面的說明中,以內存作為快速存儲設備一個具體例子 來說明本發明實施例提供的技術方案。在內存中劃分固定區域的方式有多種,在此,僅以VXWORKS (嵌入式 實施操作系統)內存劃分方式為例,說明一種內存劃分的方式。VXWORKS 的文件系統,其內存劃分在編譯時就可以確定,只需在程序中通過編寫代碼 的方式,指定一段內存地址,并不對指定的這段內存地址進行任何其他的操 作,僅用于保存軟件的最新版本,通過這種方式,就能預留一塊"軟件保留 區"。系統重啟過程中,不清除這塊固定區域中的內容。本發明的實施例中提供的軟件升級的技術方案適用于系統軟件,也適用 于應用軟件。下面,結合圖2和圖3分別說明本發明的實施例提供的加栽軟件的最新版 本的流程以及軟件升級的方法的具體步驟如圖2所示,加栽軟件的最新版本時,需要通過系統命令,將軟件的最新 版本保存在亊先為其預留的內存的軟件保留區中,即將軟件的最新版本寫入 所述軟件保留區;然后復位系統即可完成加栽。復位系統即重啟系統。如圖3所示,本發明實施例提供的軟件升級的方法的具體步驟為步驟30,系統重啟時,判斷內存的軟件保留區中是否有軟件的新版本存 在;確定所述軟件保留區中沒有軟件的新版本存在時,執行步驟31;確定所 述軟件保留區中有軟件的新版本存在時,執行步驟32;步驟31,系統從FLASH中讀取、運行軟件的原來版本即可,所述軟件的 原來版本指的是該軟件升級前的版本;需要說明的是,在此,FLASH僅僅是 作為一種存儲媒介,用戶也可以根據自己的需要選擇其他的存儲媒介,比如 EPROM或者移動硬盤;步驟32,所述軟件保留區內有軟件的最新版本存在,判斷內所述軟件保留區中的軟件的新版本是否已經設置"已讀取"標志;確定所述軟件的新版本未設置"已讀取"標志時,執行步驟33;確定所述軟件的新版本設置"已 讀取"標志時,執行步驟34;步驟33,從軟件保留區中讀取、運行所述軟件保留區內的未設置"已讀 取"標志的軟件的新版本,同時為所述軟件的新版本設置"已讀取"標志; 執行步驟35;步驟34,清除軟件保留區中的已設置"已讀取"標志的軟件的新版本, 執行步驟31,實現軟件回退的功能;這是因為系統無法啟動軟件的新版本, 或者是系統在正常啟動軟件的新版本后出現異常而被復位,系統再次啟動 時,發現"軟件保留區"中的軟件版本已經設置了 "已讀取"標志,則清除 "軟件保留區"內容,運行FLASH中軟件的原來版本,啟動所述軟件,實現 軟件回退;步驟35,在指定時間內連續運行該軟件,判斷所述軟件的新版本在指定 時間內的運行是否正常;確定所述軟件的新版本在指定時間內的運行正常 時,執行步驟36;否則,執行步驟34;步驟36,確定所述軟件的新版本在指定時間內運行正常時,即完成軟件 升級功能;將所述軟件保留區中保存的所述軟件的新版本寫入FLASH,同時 清除所述軟件保留區中保存的所述軟件的新版本,也可以不清除所述軟件保 留區中保存的所述軟件的新版本;這是因為所述軟件的新版本經過在指定時間內的運行后,可以保證該軟 件的正常使用,且所述軟件的新版本已足夠穩定,此時將所述軟件的新版本 寫入FLASH中,作為該軟件的穩定版本保存,保證該軟件在以后的升級過程 中出現異常時可以迅速回退到該軟件的穩定版本,這里需要說明的是,將所 述軟件的新版本寫入FLASH的過程可以為將所述軟件的原來版本更新為所述 軟件的新版本,即用所述軟件的新版本覆蓋所述軟件的原來版本,也可以為直接將所述軟件的新版本寫入到FLASH中,不用覆蓋所述軟件的原來版本; 同時清除內存的軟件保留區中的軟件的新版本,騰出存儲空間,為保存該軟 件的下一個最新版本或者其他軟件的最新版本估文準備,也可以不清除內存的 軟件保留區中的軟件的新版本。下面對本發明的實施例提供軟件升級的系統進行說明 所述系統包括存儲模塊、外部存儲媒介模塊、判斷模塊、運行模塊和清 除模塊;存儲模塊設置于內存中預先指定的區域內,用于存儲軟件的最新版本;判斷模塊主要用于判斷存儲模塊中的所述軟件的新版本是否已經被讀取 過,判斷模塊可以通過存儲模塊中所述軟件的新版本是否被設置已讀取標 志,判斷所述軟件的新版本是否已經被讀取過;在判斷模塊判斷所述軟件的新版本是否被設置已讀取標志之前,需要判 斷存儲模塊中是否有軟件的新版本存在;當判斷模塊確定存儲模塊中沒有軟件的新版本存在時,判斷模塊通知運 行模塊讀取、運行外部存儲媒介模塊中軟件的穩定版本;當判斷模塊確定存儲模塊中有軟件的新版本存在,且存儲模塊中的軟件 版本已設置了已讀取標志時,可以通知清除模塊清除所述軟件的新版本,也 可以不通知清除模塊清除所述軟件的新版本,同時通知運行模塊讀取、運行 外部存儲媒介模塊中所述軟件的穩定版本;這里需要特別說明的是存儲模塊中的軟件版本已設置已讀取標志的情 況可以包括以下兩種情況,第一種情況指的是存儲模塊中的軟件版本已經執 行了該軟件的升級操作,并且升級成功,這種情況下,如果判斷模塊沒有通 知清除模塊清除該軟件版本,那么在系統執行到這個步驟時,就會發現該軟 件版本被設置了已讀取標志,這種情況,外部存儲媒介模塊中穩定版本為該 軟件升級成功的軟件版本;第二種情況指的是存儲模塊中的軟件版本業已執行該軟件的升級操作,但是由于升級失敗,而使得系統重啟,這種情況下, 判斷模塊也會發現存儲模塊中的該軟件版本被設置已讀取標志,判斷模塊通 知清除模塊清除存儲模塊中的軟件版本,這種情況下,外部存儲媒介模塊中穩定版本為該軟件升級前的軟件版本,即軟件的原來版本;在判斷模塊確定存儲模塊中軟件的新版本沒有被設置已讀取標志,即沒有被讀取過時,通知運行模塊讀取、運行存儲模塊中的所述軟件的新版本;在運行模塊運行所述軟件的新版本時,判斷模塊需要判斷所述軟件的新 版本在指定時間內是否能夠正常運行;判斷模塊確定指定時間內所述軟件的 新版本正常運行時,通知運行模塊將存儲模塊中所述軟件的新版本寫入外部 存儲媒介模塊,同時清除存儲模塊中所述軟件的新版本,需要注意的是,在 此,也可以不清除存儲模塊中所述軟件的新版本;判斷模塊確定指定時間內 所述軟件的新版本不能正常運行,即出現故障時,系統重新啟動,即出現存 儲模塊中的軟件版本已設置已讀取標志的第二種情況,系統按照前述步驟執 行操作即可以實現軟件回退。所述運行模塊用于根據判斷模塊的通知,讀取、運行所述軟件的指定版 本;并在初次讀取存儲模塊中所述軟件的新版本時,為其設置已讀取標志。所述外部存儲媒介模塊用于存儲軟件的穩定版本,該穩定版本包括該軟 件的原來版本,在判斷模塊確定運行模塊在指定時間內能夠運行正常所述軟 件的新版本時,判斷模塊通知運行模塊將存儲模塊中所述軟件的新版本寫入 所述外部存儲媒介模塊'中,此時被寫入外部存儲媒介模塊中的該軟件的新版 本也是該軟件的穩定版本;所述外部存儲媒介模塊可以為FLASH或 EPROM,也可以是硬盤等存儲媒介。上述內容中提到的軟件的新版本指的是軟件用于升級的軟件版本,軟件 的原來版本指的是軟件升級前的軟件版本,隨著軟件的不斷升級,軟件的原 來版本、軟件的新版本會不斷地被更新,因此,軟件的新版本和軟件的原來版本均為相對的。從上述內容可以看出,本發明的實施例提供了 一種軟件升級的方法及系 統,在軟件升級后,若出現異常情況,保證系統快速回退到軟件的原有版 本,最大程度地保證業務不因軟件升級出現異常而受影響。以上所述,僅為本發明較佳的具體實施方式
,但本發明的保護范圍并不 局限于此,任何熟悉本技術領域的技術人員在本發明揭露的技術范圍內,可 輕易想到的變化或替換,都應涵蓋在本發明的保護范圍之內。因此,本發明 的保護范圍應該以權利要求書的保護范圍為準。
權利要求
1. 一種軟件升級的方法,其特征在于,軟件保留區中存儲有軟件的新版本,所述方法包括判斷所述軟件的新版本是否已被讀取;當所述軟件的新版本沒有被讀取過時,從所述軟件保留區讀取并運行所述軟件的新版本,進行軟件升級;當所述軟件的新版本已被讀取過時,讀取并運行所述軟件的穩定版本,所述穩定版本包括所述軟件的原來版本;所述軟件保留區為快速存儲設備中預先指定的一塊區域。
2、 根據權利要求1所述的方法,其特征在于,所述方法包括當判斷出所述軟件的新版本已被讀取時,清除軟件保留區中所述軟件的 新版本。
3、 根據權利要求1所述的方法,其特征在于,所述運行所述軟件的新版 本的步驟包括所述軟件的新版本在指定時間內運行正常時,將所述軟件的 原來版本更新為所述軟件的新版本,并清除所述軟件保留區中所述軟件的新 版本。
4、 一種軟件升級的方法,其特征在于,軟件保留區中沒有軟件的新版本 存在時,讀取并運行所述軟件的穩定版本,所述穩定版本包括所述軟件的原 來版本。
5、 根據權利要求1所述的方法,其特征在于,所述快速存儲設備為內 存,所述軟件的原來版本存儲于非易失性存儲介質FLASH中。
6、 一種軟件升級的系統,其特征在于,所述系統包括存儲模塊、外部存 儲媒介模塊、判斷模塊和運行模塊;存儲模塊設置于快速存儲設備的指定區域中,用于存儲軟件的新版本; 外部存儲媒介模塊用于存儲軟件的穩定版本,所述穩定版本包括軟件的 原來版本;判斷模塊用于判斷存儲模塊中的所述軟件的新版本是否已經被讀取過,在確定存儲模塊中的所述軟件的新版本沒有被讀取過時,通知運行模塊讀取、運行存儲模塊中的所述軟件的新版本;在確定存儲模塊中的所述軟件的新版本已被讀取過時,通知運行模塊讀取、運行外部存儲媒介模塊中所述軟件的原來版本;運行模塊用于根據判斷模塊的通知,讀取、運行所述軟件的指定版 本,所述指定版本包括所述軟件的新版本和所述軟件的原來版本。
7、 根據權利要求6所述的系統,其特征在于,所述系統還包括清除模 塊,所述清除模塊用于在判斷模塊確定所述軟件的新版本已被讀取過時,清 除軟件保留區中的所述軟件的新版本。
8、 根據權利要求6所述的系統,其特征在于,所述快速存儲設備為內存。
9、 根據權利要求6所述的系統,其特征在于,判斷模塊判斷所述運行模 塊在指定時間內是否能夠正常運行存儲模塊中軟件的新版本;判斷模塊確定 指定時間內所述軟件正常運行時,判斷模塊通知運行模塊將所述軟件在存儲 模塊中的軟件的新版本寫入所述外部存儲媒介模塊,并通知清除模塊清除存 儲模塊中的所述軟件的新版本;所述外部存儲媒介模塊包括非易失性存儲介 質FLASH 。
10、 一種軟件升級的系統,其特征在于,所述系統包括存儲模塊、外部 存儲媒介模塊、判斷模塊和運行模塊,其中,存儲模塊設置于快速存儲設備的指定區域中,用于存儲軟件的新版本; 外部存,介模塊用于存儲軟件的穩定版本,所述穩定版本包括軟件的 原來版本;判斷模塊用于判斷存儲模塊中有沒有軟件的新版本存在,在確定存儲 模塊中沒有所述軟件的新版本存在時,通知運行模塊讀取、運行外部存儲媒 介模塊中的所述軟件的原來版本;運行模塊用于根據判斷模塊的通知,讀取、運行所述軟件的原來版本。
全文摘要
本發明的實施例涉及軟件領域,尤其涉及軟件升級領域。本發明的實施例提供了一種軟件升級的方法及系統,在軟件保留區中存儲有軟件的新版本時,判斷所述軟件的新版本是否已被讀取;確認所述軟件的新版本沒有被讀取過時,從所述軟件保留區讀取并運行所述軟件的新版本,進行軟件升級;確認所述軟件的新版本已被讀取過時,讀取并運行所述軟件的原來版本;解決現有技術存在的問題,從而達到在軟件升級后,若出現異常情況,保證系統快速回退到原有的軟件版本,最大程度地保證業務不因軟件升級出現的異常而受到影響。
文檔編號G06F11/14GK101231592SQ200710007509
公開日2008年7月30日 申請日期2007年1月26日 優先權日2007年1月26日
發明者王震宇, 勇 鄒 申請人:華為技術有限公司