專利名稱:一種嵌入式系統的升級、備份方法和裝置的制作方法
技術領域:
本發明涉及嵌入式系統的升級技術,特別是指一種嵌入式系統的升級、備份方法 和裝置。
背景技術:
目前,在電信、通訊領域的嵌入式系統的升級應用中,采用插座式閃存(FLASH)芯 片作為引導只讀存儲器(B00TR0M),引導中央處理單元(CPU, Central Processing Unit) 加載應用程序版本的方法被廣泛地應用。該方法雖然能夠方便地進行BOOT引導程序的燒 結,但每燒結一次B00TR0M,就需拔插一次FLASH芯片。在系統軟件調試過程中或者在系統 升級維護的情況下,會經常需要更新BOOT引導程序,這樣,就需要多次燒結B00TR0M,而插 座式FLASH芯片經多次插拔后,芯片管腳容易造成損壞,由此導致系統無法正常啟動。采用嵌入式系統在線升級的方法可以避免上述問題的出現,而且還可以實現 B00TR0M的遠程在線升級,但在升級過程中經常會由于以下原因導致升級失敗在線升級過程中發生意外的外界因素、如斷電、設備復位、死機等;燒結了錯誤的BOOT引導程序。B00TR0M在線升級失敗后,系統無法正常啟動,由于現場無法回退或者恢復,進而 導致客戶業務中斷,這樣維護人員不得不去現場重新進行B00TR0M的升級,即插拔FLASH芯 片,造成了額外的成本損耗。另外,可編程邏輯器件(CPLD,ComplexProgrammable Logic Device)也是嵌入式 系統設計中常用的器件。一般情況下,CPLD都是在生產時直接燒結以后就不再更改,但是由 于功能更新或者設計失誤等原因,也使CPLD需要進行更新。這種情況下,如果系統不能實 現CPLD的在線更新功能,則只能通過聯合測試行為組織(JTAG,Joint Test Action Group) 燒結電纜進行現場升級工作,這無疑會增加產品的升級成本,給產品的維護工作帶來了極 大不便。因此,如何提供一種實現嵌入式系統可靠、簡單方便且成本低廉的升級方法,成為 業界急需解決的問題。
發明內容
有鑒于此,本發明的主要目的在于提供一種嵌入式系統的升級、備份方法和裝置, 能夠實現嵌入式系統可靠、簡單方便且成本低廉的升級。為達到上述目的,本發明的技術方案是這樣實現的本發明提供了一種嵌入式系統的升級、備份方法,該方法包括在板級支持包(BSP)調試階段,由插座式FLASH芯片中的BOOT引導程序引導中央 處理單元(CPU)啟動,并通過CPU對可編程邏輯器件(CPLD)進行在線升級;在初始使用階段,對貼片式FLASH芯片中的主BOOT引導程序進行升級,并由升級 后的所述主BOOT引導程序引導CPU啟動,并在CPU啟動成功時,CPU加載應用程序版本;在CPU啟動失敗時,由備BOOT引導程序引導CPU啟動,并在CPU啟動成功時,CPU加載應用程 序版本。在BSP調試階段,該方法進一步包括通過控制電路選擇由插座式FLASH芯片中的 BOOT引導程序引導CPU啟動,進行所述BSP調試。所述CPLD在線升級完成后,該方法進一步包括重新啟動嵌入式系統,通過所述 CPLD將所述貼片式FLASH芯片劃分為主BOOT區、程序區和備BOOT區。在進行BSP調試時,該方法還包括所述插座式FLASH芯片將自身的BOOT引導程 序燒結到所述貼片式FLASH芯片的主BOOT區和備BOOT區,得到所述主BOOT引導程序和備 BOOT引導程序。在初始使用階段,通過所述CPLD確定由主BOOT引導程序引導CPU啟動;所述由升級后的主BOOT引導程序引導CPU啟動時,該方法進一步包括CPLD根據 自身寄存器的標志位的值判斷所述弓I導CPU啟動是否成功。CPLD判定所述引導CPU啟動成功時,該方法進一步包括所述CPU讀取所述升級后的主BOOT引導程序和備BOOT引導程序,并進行校驗和 比較,并在所述升級后的主BOOT弓I導程序和備BOOT弓I導程序不一致時,依據所述升級后的 主BOOT引導程序對所述備BOOT引導程序進行同步,并在同步成功時,所述CPU讀取程序區 中的應用程序版本并加載。CPLD判定所述引導CPU啟動失敗時,該方法進一步包括所述CPLD選擇由備BOOT 引導程序引導CPU啟動,并在啟動成功時,由所述CPU修改所述寄存器的標志位的值。依據所述寄存器的標志位的值所述備BOOT引導程序引導CPU啟動成功時,該方法 進一步包括所述CPU讀取所述升級后的主BOOT引導程序和備BOOT引導程序,并進行校驗和 比較,并在所述升級后的主BOOT引導程序和備BOOT引導程序不一致時,依據所述備BOOT 引導程序對所述升級后的主BOOT引導程序進行回退,并在回退成功后,所述CPU讀取程序 區中的應用程序版本并加載。在初始使用階段所述CPU啟動成功后,該方法進一步包括通過CPU對CPLD進行 在線升級。所述BSP調試階段和所述初始使用階段中,通過CPU對CPLD進行在線升級,具體 為利用遠端網管設備通過業務通道或者管理通道和本地設備建立通訊連接;通過加載控制單元把遠端服務器文件下載到本地設備的文件系統中;通過CPU的通用可編程輸入/輸出(1/0) 口模擬聯合測試行為組織(JTAG)下載 接口,并通過所述JTAG下載接口對所述CPLD進行升級文件的在線升級;加載CPLD版本到隨機存儲器(RAM)中,并重新啟動嵌入式系統,完成CPLD的在線 升級。本發明還提供了一種嵌入式系統的升級、備份裝置,該裝置包括插座式FLASH芯 片、貼片式FLASH芯片、CPU和CPLD,其中 所述插座式FLASH芯片,用于在BSP調試階段,通過自身的BOOT弓|導程序弓|導CPU
啟動;
所述貼片式FLASH芯片,用于在初始使用階段,通過自身升級后的主BOOT引導程 序引導CPU啟動;還用于,在CPU啟動失敗時,通過備BOOT引導程序引導CPU啟動;所述CPU,用于在BSP調試階段自身啟動后,對所述CPLD進行在線升級;還用于在 所述升級后的主BOOT引導程序引導自身啟動成功時、或者備BOOT引導程序引導自身啟動 成功時,加載應用程序版本;所述CPLD,用于在BSP調試階段,CPU啟動成功后進行在線升級。該裝置進一步包括控制電路,用于在BSP調試階段選擇由所述插座式FLASH芯片 的BOOT弓I導程序弓丨導CPU啟動。所述CPLD,在自身的在線升級完成后,進一步用于將所述貼片式FLASH芯片劃分 為主BOOT區、程序區和備BOOT區;在初始使用階段,還用于確定由主BOOT引導程序引導 CPU啟動;并在所述升級后的主BOOT引導程序引導CPU啟動時,用于判斷所述引導CPU啟 動是否成功;相應的,所述升級后的主BOOT引導程序引導CPU啟動成功時,所述CPU進一步用 于,確定所述升級后的主BOOT弓I導程序和備BOOT弓I導程序不一致時,依據所述升級后的主 BOOT引導程序對所述備BOOT引導程序進行同步,并在同步成功時,讀取程序區中的應用程 序版本并加載;相應的,所述升級后的主BOOT弓丨導程序弓丨導CPU啟動失敗時,所述CPLD進一步用 于,選擇由備BOOT引導程序引導CPU啟動。所述備BOOT引導程序引導CPU啟動成功時,所述CPU進一步用于,確定所述升級 后的主BOOT引導程序和備BOOT引導程序不一致時,依據所述備BOOT引導程序對所述升級 后的主BOOT引導程序進行回退,并在回退成功后,讀取程序區中的應用程序版本并加載。在初始使用階段所述CPU啟動成功后,所述CPU進一步用于,對所述CPLD進行在 線升級。本發明的升級、備份方案,在BSP調試階段,使用插座式FLASH芯片作為B00TR0M 引導CPU啟動;在初始使用階段,默認使用貼片式FLASH芯片的主BOOT引導程序引導CPU 啟動,當啟動失敗時,由CPLD控制使用貼片式FLASH芯片的備BOOT引導程序引導CPU啟 動,如此,在主BOOT引導程序升級成功時,可以對備BOOT引導程序同步升級;在主BOOT引 導程序升級失敗時,可以依據備BOOT引導程序對主BOOT引導程序進行回退;如此可以實現 可靠的BOOT引導程序的遠程升級,提高了設備的可維護性。同時,程序存儲區與主備BOOT 區都存儲在貼片式FLASH芯片的一體化的結構也節約了存儲器資源,降低了產品的成本和 體積。另外,本發明中CPLD獨立于CPU最小系統,如此在初始使用階段CPU的啟動可以 不依賴于CPLD ;并且,CPU啟動后可模擬JTAG下載接口對CPLD進行在線升級,節約了產品 的維護成本,給產品的升級維護帶來了方便。
圖1為本發明嵌入式系統的升級、備份方法流程示意圖;圖2為BSP調試階段嵌入式系統的升級、備份方法流程示意圖;圖3為引導B00TR0M選擇示意圖4為本發明嵌入式系統的硬件結構示意圖;圖5為初始使用階段嵌入式系統的升級、備份方法流程示意圖;圖6為本發明嵌入式系統的升級、備份裝置的結構示意圖。
具體實施例方式下面結合附圖和具體實施例對本發明的技術方案進一步詳細闡述。本發明的嵌入式系統中采用兩片FLASH芯片作為B00TR0M。其中,兩片FLASH芯 片分別為一個小容量的插座式FLASH芯片、和一個大容量的貼片式FLASH芯片。將貼片式 FLASH芯片劃分為三個分區主BOOT區(MBOOT)、程序區(APPVER)、和備BOOT區(SLBOOT)。基于上述的嵌入式系統,本發明嵌入式系統的升級、備份方法流程如圖1所示,包 括步驟101,在BSP調試階段,由插座式FLASH芯片中的BOOT引導程序引導CPU啟 動,并通過CPU對CPLD進行在線升級。步驟102,在初始使用階段,對貼片式FLASH芯片中的主BOOT引導程序進行升級, 并由升級后的主BOOT引導程序引導CPU啟動;在CPU啟動成功時,CPU加載應用程序版本。步驟103,在CPU啟動失敗時,由備BOOT引導程序引導CPU啟動,并在CPU啟動成 功時,CPU加載應用程序版本。本發明嵌入式系統的升級、備份方案主要應用于嵌入式系統正常使用前的準備階 段,該階段的應用場景有兩種第一種,在前期的板級支持包(BSP,Board Support Package)調試階段和后期的 初始使用階段,嵌入式系統中都包含插座式FLASH芯片和貼片式FLASH芯片;第二種,在前期的BSP調試階段,嵌入式系統中包含插座式FLASH芯片和貼片式 FLASH芯片;在后期的初始使用階段,嵌入式系統中只包含貼片式FLASH芯片。下面通過具體的實施例來說明本發明的嵌入式系統的升級、備份方法,其中,BSP 調試階段流程如圖2所示,包括以下步驟步驟201,通過控制電路選擇由插座式FLASH芯片引導CPU啟動。相較于貼片式FLASH芯片,插座式FLASH芯片燒結方便。預先在插座式FLASH芯 片中燒結BOOT引導程序,在進行BSP調試時,通過一個控制電路來選擇通過插座式FLASH 芯片的BOOT引導程序來引導CPU啟動,進行BSP測試,其中控制電路可以通過一個跳線器 來實現。如圖3所示為引導B00TR0M選擇示意圖,當系統確定由插座式FLASH芯片系統引 導CPU啟動時,通過控制電路選擇插座式FLASH芯片作為片選信號CSO的映像空間;選擇 貼片式FLASH芯片作為片選信號CSl的映像空間。如果系統需要由貼片式FLASH芯片引導 CPU啟動時,則可以通過控制電路選擇貼片式FLASH芯片作為片選信號CSO的映像空間。該步驟中CPU的啟動可以稱為CPU最小系統的啟動。步驟202,通過CPU的通用可編程輸入/輸出(1/0) 口模擬JTAG下載接口,對CPLD 進行在線升級。CPU最小系統啟動后,對CPLD進行在線升級,具體實現如下1、利用遠端網管設備通過業務通道或者管理通道和本地設備建立通訊連接。其中,本地設備指本發明的嵌入式系統所在的設備。2、通過加載控制單元把遠端服務器文件下載到本地設備的文件系統中。基于上述通訊連接,本地設備上的加載控制單元將遠端服務器上CPLD的升級文 件下載到本地設備的文件系統中。所述的加載控制單元和文件系統獨立于本發明的嵌入式 系統。3、通過CPU的I/O 口模擬JTAG下載接口,對CPLD進行升級文件的在線升級。4、加載CPLD版本到隨機存儲器(RAM,Random Access Memory)中,并重新初始化 配置系統、即重新啟動該嵌入式系統,可以通過遠程控制命令來重新啟動系統。步驟203,插座式FLASH芯片將BOOT引導程序燒結到貼片式FLASH芯片。在進行BSP調試時,插座式FLASH芯片自動檢測貼片式FLASH芯片,并將自身的 BOOT引導程序燒結到貼片式FLASH芯片的ΜΒ00Τ區和SLB00T區。如此ΜΒ00Τ區的BOOT引 導程序即為主BOOT弓丨導程序、SLB00T區的BOOT弓丨導程序即為備BOOT弓丨導程序。在進行主、 備BOOT引導程序的燒結之前,可以通過CPLD對貼片式FLASH芯片進行分區、即主ΜΒ00Τ、 APPVER、SLB00T,具體在硬件上的實現將通過圖4進行說明。從該流程可以看出,CPU最小系統的啟動不依賴于CPLD,即在CPLD為空白時(沒 有進行在線升級,加載CPLD版本),CPU的最小系統也可以通過插座式FLASH芯片的BOOT 弓丨導程序啟動,該功能在硬件的實現將通過圖4進行說明。在后續初始使用階段,需要通過貼片式FLASH芯片中的BOOT弓丨導程序弓丨導CPU啟 動,此時CPU的啟動依賴于CPLD。因此,在BSP調試階段需要對CPLD進行在線升級,并加載 CPLD版本,使CPLD不為空。下面具體說明一下在初始使用階段本發明方法的具體實現如果包含插座式 FLASH芯片,則系統通過控制電路選擇由貼片式FLASH芯片引導CPU啟動;如果不包含插座 式FLASH芯片,則默認由貼片式FLASH芯片引導CPU啟動。其中,貼片式FLASH芯片的ΜΒ00Τ 區和SLB00T區用于儲存同一個BOOT引導程序;APPVER區用于存儲系統運行的應用程序版 本。這種應用程序版本和BOOT引導程序都存儲在貼片式FLASH芯片的一體化結構即節約 了系統的成本。如圖4所示為本發明嵌入式系統的硬件結構示意圖,其中,貼片式FLASH芯片的最 高三位地址線Ah、Ah-I、Ah-2弓I入CPLD、CPU上對應Ah、Ah_l、Ah_2的三位地址線C_Ah、C_ Ah-U C_Ah-2也引入CPLD。其中,Ah、Ah_l、Ah_2且默認下拉,如此,在BSP調試階段可以 確保CPLD為空時,CPU的最小系統也可以從插座式FLASH芯片啟動、即在BSP調試階段CPU 最小系統獨立于CPLD,不依賴CPLD也能夠啟動。本發明中,在初始使用階段默認CPU從ΜΒ00Τ區啟動,具體的,可以根據需要對Ah、 Ah_l、Ah_2接入CPLD的管腳的初始值進行設置、如為000時,表明從ΜΒ00Τ區啟動。另夕卜, CPLD通過Ah、Ah_l、Ah_2還可以對貼片式FLASH芯片進行分區,如通常情況下BOOT空間不 超過511,則可以選擇貼片式FLASH芯片最低位的511空間作為ΜΒ00Τ區,最高位的511 空間作為SLB00T區,中間的空間作為APPVER區。如果需要使用更大的空間來作為APPVER 區,則可以增加CPLD控制貼片式FLASH芯片所使用的高位地址線,這樣可以通過CPLD使用 全部的FLASH芯片空間,避免資源的浪費和空間地址不連續的問題,同時也不會給CPLD增 加過多的負擔。
基于圖4,初始使用階段中本發明的更新、備份方法流程如圖5所示,包括以下步 驟步驟501,升級MBOOT區的BOOT弓丨導程序,得到最新的BOOT弓丨導程序,并引導CPU啟動。本發明中,嵌入式系統默認使用MBOOT區的BOOT引導程序引導CPU啟動,此時 CPLD上對應貼片式FLASH芯片最高三位地址線的管腳值為預設的初始值、如000 ;當需要進 行BOOT引導程序的更新、升級時,只對ΜΒ00Τ區的BOOT引導程序進行升級,具體的可以采 用現有技術中通過網管系統進行遠程在線升級的方法,此處不再贅述。需要指出的是,在BSP調試階段CPU是依據插座式FLASH芯片的BOOT引導程序啟 動的,因此CPU的硬件配置字與插座式FLASH芯片的數據位寬是對應的。但是,插座式FLASH 芯片和貼片式FLASH芯片的數據位寬可能不同,如插座式FLASH的數據位寬一般是8位,而 貼片式FLASH的數據位寬一般是16或8位,因此,當插座式FLASH芯片和貼片式FLASH芯 片的數據位寬不同時,系統需要先通過控制電路依據當前貼片式FLASH芯片的數據位寬設 置CPU的硬件配置字,然后系統才能讀取ΜΒ00Τ區的BOOT引導程序引導CPU啟動;如果相 同,則不需要設置配置字,直接讀取ΜΒ00Τ區的BOOT弓丨導程序弓丨導CPU啟動。 當對ΜΒ00Τ區的BOOT弓丨導程序在線升級完成后,該嵌入式系統重啟(可以通過遠 程控制命令來重新啟動系統),并使用ΜΒ00Τ區最新的BOOT引導程序引導CPU啟動。步驟502,CPLD判斷引導CPU啟動是否成功,如果是,執行步驟503 ;如果否,執行 步驟507。如果ΜΒ00Τ區的最新BOOT引導程序引導CPU啟動成功,則CPU啟動后修改CPLD 寄存器的標志位、如根據需要將該標志位設置為1 ;相應的,如果引導CPU啟動未成功,此時 CPLD寄存器的標志位可以為默認值、如0。因此,CPLD根據自身寄存器的標志位值就可判 定引導CPU啟動是否成功。較佳地,此處可以預設一個定時器,因為CPU啟動需要一段時間,因此,可以在該 定時器到時時,CPLD開始讀取自身的寄存器標志位,進行引導CPU啟動是否成功的判斷。如果引導CPU啟動成功,說明此次ΜΒ00Τ區的BOOT引導程序升級成功,執行步 503 ;否則,說明升級失敗,執行步驟507。步驟503,判斷ΜΒ00Τ區和SLB00T區的BOOT引導程序是否一致,如果否,執行步驟 504;如果是,執行步驟512。CPU依據ΜΒ00Τ區最新的BOOT引導程序成功啟動后,分別讀取ΜΒ00Τ區和SLB00T 區的BOOT弓I導程序,進行校驗和比較,如果兩者不一致,則執行步驟504 ;如果兩者一致,則 執行步驟512。步驟504,同步SLB00T區的BOOT引導程序。CPU依據ΜΒ00Τ區最新的BOOT引導程序對SLB00T區的BOOT引導程序進行同步、 即對SLB00T區的BOOT引導程序進行升級。步驟505,判斷同步是否成功,如果否,執行步驟506 ;如果是,執行步驟512。
對SLB00T區的BOOT弓丨導程序升級完成后,CPU再對ΜΒ00Τ區和SLB00T區的BOOT 引導程序進行校驗和比較,如果一致,說明升級成功,輸出升級成功信息、如通過外接打印 機打印Write SlBoot OK ;如果不一致,說明升級失敗。
步驟506,輸出同步失敗信息。當SLBOOT區的BOOT引導程序升級失敗后,輸出同步失敗信息、如通過外接打印機 打印燒錄失敗(Write SlBoot twice failed),然后,執行步驟512。步驟507,通過SLBOOT區的BOOT引導程序引導CPU啟動。CPLD根據自身寄存器的標志位確定CPU從MBOOT區啟動失敗后,修改自身對應 貼片式FLASH芯片最高三位地址線的管腳值、如111,系統依據修改后的管腳值,使CPU從 SLBOOT區啟動。由于SLBOOT中為原始燒結的BOOT引導程序,且沒有經過升級,因此CPU根 據該BOOT引導程序能夠啟動成功,啟動成功后,CPU對CPLD中寄存器的標志位的值進行修 改、如置為1 ;如果啟動失敗,則說明該貼片式FLASH芯片可能損壞。步驟508,判斷ΜΒ00Τ區和SLB00T區的BOOT引導程序是否一致,如果否,執行步驟 509 ;如果是,執行步驟512。該步驟的實現同步驟503,此處不再贅述。步驟509,回退ΜΒ00Τ區的BOOT引導程序。因為ΜΒ00Τ區的BOOT引導程序升級失敗,因此,此時若ΜΒ00Τ區和SLB00T區的 BOOT引導程序是不一致,則需要依據SLB00T區的BOOT引導程序對ΜΒ00Τ區的BOOT引導程 序進行回退,使其恢復到升級之前的狀態。步驟510,判斷回退是否成功,如果否,執行步驟511 ;如果是,執行步驟512。 對ΜΒ00Τ區的BOOT弓丨導程序回退完成后,CPU再對ΜΒ00Τ區和SLB00T區的BOOT 引導程序進行校驗和比較,如果一致,說明回退成功,輸出回退成功信息、如通過外接打印 機打印Write MBoot 0K,然后執行步驟512 ;如果不一致,說明回退失敗。步驟511,輸出回退失敗信息。當ΜΒ00Τ區的BOOT引導程序回退失敗后,輸出回退失敗信息、如通過外接打印機 打印燒錄失敗(Write MBoot twice failed),然后,執行步驟512。步驟512,CPU加載應用程序版本。當CPU從ΜΒ00Τ區、或者從SLB00T區啟動成功后,CPLD將圖4中貼片式FLASH芯 片的最高三位地址線Ah、Ah_l、Ah_2,與CPU上對應的三位地址線C_Ah、C_Ah_l、C_Ah_2連 通,使CPU讀取并加載貼片式FLASH芯片中APPVER區存儲的系統運行的應用程序版本。圖5的流程主要是針對嵌入式系統中B00TR0M、即BOOT引導程序的升級,其中,貼 片式FLAH芯片中ΜΒ00Τ區和SLB00T區的BOOT引導程序互為主備,當ΜΒ00Τ區的BOOT引 導程序升級失敗時,可以從備用的SLB00T區的BOOT引導程序啟動CPU,并恢復升級失敗的 ΜΒ00Τ區的BOOT引導程序,因此,提高了 B00TR0M遠程升級的可靠性,同時也提高了嵌入式 系統的可維護性。在初始使用階段以及后續的正常使用階段中,CPU啟動后,也可以進行CPLD的在 線升級。在升級CPLD的過程中,也需要保證嵌入式系統運行正常,為此,本發明提供一種 CPLD在線升級的方法,該方法同步驟202中對CPLD在線升級的方法,此處不再贅述。另外,基于本發明的方法,當嵌入式系統進入正常使用狀態時,根據實際需要,CPU 可以依賴CPLD選擇從ΜΒ00Τ區、或者SLB00T區啟動,具體的,由CPLD根據實際情況確定由 ΜΒ00Τ區的BOOT引導程序引導CPU啟動時,將自身對應貼片式芯片最高三位地址線的管腳 值進行設置、如000 ;當確定由SLB00T區的BOOT引導程序引導CPU啟動時,對上述管腳值進行設置、如111。為了實現上述升級、備份方法,本發明提供了一種嵌入式系統的升級、備份裝置, 如圖6所示,該裝置包括插座式FLASH芯片10、貼片式FLASH芯片20、CPU 30和CPLD 40, 其中插座式FLASH芯片10,用于在BSP調試階段,通過自身的BOOT引導程序引導CPU 30啟動;貼片式FLASH芯片20,用于在初始使用階段,通過自身升級后的主BOOT引導程序 引導CPU 30啟動;還用于,在CPU 30啟動失敗時,通過備BOOT引導程序引導CPU 30啟動;CPU 30,用于在BSP調試階段自身啟動后,對CPLD 40進行在線升級;還用于在升 級后的主BOOT引導程序引導自身啟動成功時、或者備BOOT引導程序引導自身啟動成功時, 加載應用程序版本;CPLD 40,用于在BSP調試階段,CPU 30啟動成功后進行在線升級。該裝置可以包括一個控制電路50,用于在BSP調試階段選擇由插座式FLASH芯片 10的BOOT引導程序引導CPU 30啟動。CPLD 40,在自身的在線升級完成后,進一步用于將貼片式FLASH芯片20劃分為主 BOOT區、程序區和備BOOT區;在初始使用階段,還用于確定由主BOOT引導程序引導CPU 30 啟動;并在升級后的主BOOT引導程序引導CPU 30啟動時,判斷引導CPU 30啟動是否成功;相應的,升級后的主BOOT引導程序引導CPU 30啟動成功時,CPU 30進一步用于, 確定升級后的主BOOT引導程序和備BOOT引導程序不一致時,依據升級后的主BOOT引導程 序對備BOOT引導程序進行同步,并在同步成功時,讀取程序區中的應用程序版本并加載;相應的,升級后的主BOOT引導程序引導CPU 30啟動失敗時,CPLD 40進一步用于, 選擇由備BOOT引導程序引導CPU 30啟動。備BOOT引導程序引導CPU 30啟動成功時,CPU 30進一步用于,確定升級后的主 BOOT弓I導程序和備BOOT弓I導程序不一致時,依據備BOOT弓|導程序對升級后的主BOOT弓丨導 程序進行回退,并在回退成功后,讀取程序區中的應用程序版本并加載。在初始使用階段,CPU 30啟動成功后,CPU 30進一步用于,對CPLD 40進行在線升級。以上所述,僅為本發明的較佳實施例而已,并非用于限定本發明的保護范圍。
權利要求
1.一種嵌入式系統的升級、備份方法,其特征在于,該方法包括在板級支持包(BSP)調試階段,由插座式閃存(FLASH)芯片中的BOOT引導程序引導中 央處理單元(CPU)啟動,并通過CPU對可編程邏輯器件(CPLD)進行在線升級;在初始使用階段,對貼片式FLASH芯片中的主BOOT引導程序進行升級,并由升級后的 所述主BOOT引導程序引導CPU啟動,并在CPU啟動成功時,CPU加載應用程序版本;在CPU 啟動失敗時,由備BOOT引導程序引導CPU啟動,并在CPU啟動成功時,CPU加載應用程序版 本。
2.根據權利要求1所述嵌入式系統的升級、備份方法,其特征在于,在BSP調試階段, 該方法進一步包括通過控制電路選擇由插座式FLASH芯片中的BOOT弓丨導程序弓丨導CPU啟 動,進行所述BSP調試。
3.根據權利要求2所述嵌入式系統的升級、備份方法,其特征在于,所述CPLD在線升級 完成后,該方法進一步包括重新啟動嵌入式系統,通過所述CPLD將所述貼片式FLASH芯片 劃分為主BOOT區、程序區和備BOOT區。
4.根據權利要求3所述嵌入式系統的升級、備份方法,其特征在于,在進行BSP調試時, 該方法還包括所述插座式FLASH芯片將自身的BOOT弓|導程序燒結到所述貼片式FLASH芯 片的主BOOT區和備BOOT區,得到所述主BOOT引導程序和備BOOT引導程序。
5.根據權利要求4所述嵌入式系統的升級、備份方法,其特征在于,在初始使用階段, 通過所述CPLD確定由主BOOT引導程序引導CPU啟動;所述由升級后的主BOOT引導程序引導CPU啟動時,該方法進一步包括CPLD根據自身 寄存器的標志位的值判斷所述引導CPU啟動是否成功。
6.根據權利要求5所述嵌入式系統的升級、備份方法,其特征在于,CPLD判定所述弓I導 CPU啟動成功時,該方法進一步包括所述CPU讀取所述升級后的主BOOT引導程序和備BOOT引導程序,并進行校驗和比 較,并在所述升級后的主BOOT弓丨導程序和備BOOT弓丨導程序不一致時,依據所述升級后的主 BOOT引導程序對所述備BOOT引導程序進行同步,并在同步成功時,所述CPU讀取程序區中 的應用程序版本并加載。
7.根據權利要求5所述嵌入式系統的升級、備份方法,其特征在于,CPLD判定所述弓I導 CPU啟動失敗時,該方法進一步包括所述CPLD選擇由備BOOT引導程序引導CPU啟動,并 在啟動成功時,由所述CPU修改所述寄存器的標志位的值。
8.根據權利要求7所述嵌入式系統的升級、備份方法,其特征在于,依據所述寄存器的 標志位的值所述備BOOT引導程序引導CPU啟動成功時,該方法進一步包括所述CPU讀取所述升級后的主BOOT引導程序和備BOOT引導程序,并進行校驗和比較, 并在所述升級后的主BOOT弓I導程序和備BOOT弓I導程序不一致時,依據所述備BOOT弓|導程 序對所述升級后的主BOOT引導程序進行回退,并在回退成功后,所述CPU讀取程序區中的 應用程序版本并加載。
9.根據權利要求1至8任一所述嵌入式系統的升級、備份方法,其特征在于,在初始使 用階段所述CPU啟動成功后,該方法進一步包括通過CPU對CPLD進行在線升級。
10.根據權利要求9所述嵌入式系統的升級、備份方法,其特征在于,所述BSP調試階段 和所述初始使用階段中,通過CPU對CPLD進行在線升級,具體為利用遠端網管設備通過業務通道或者管理通道和本地設備建立通訊連接; 通過加載控制單元把遠端服務器文件下載到本地設備的文件系統中; 通過CPU的通用可編程輸入/輸出(I/O) 口模擬聯合測試行為組織(JTAG)下載接口, 并通過所述JTAG下載接口對所述CPLD進行升級文件的在線升級;加載CPLD版本到隨機存儲器(RAM)中,并重新啟動嵌入式系統,完成CPLD的在線升級。
11.一種嵌入式系統的升級、備份裝置,其特征在于,該裝置包括插座式FLASH芯片、 貼片式FLASH芯片、CPU和CPLD,其中所述插座式FLASH芯片,用于在BSP調試階段,通過自身的BOOT引導程序引導CPU啟動;所述貼片式FLASH芯片,用于在初始使用階段,通過自身升級后的主BOOT引導程序引 導CPU啟動;還用于,在CPU啟動失敗時,通過備BOOT引導程序引導CPU啟動;所述CPU,用于在BSP調試階段自身啟動后,對所述CPLD進行在線升級;還用于在所述 升級后的主BOOT引導程序引導自身啟動成功時、或者備BOOT引導程序引導自身啟動成功 時,加載應用程序版本;所述CPLD,用于在BSP調試階段,CPU啟動成功后進行在線升級。
12.根據權利要求11所述嵌入式系統的升級、備份裝置,其特征在于,該裝置進一步包 括控制電路,用于在BSP調試階段選擇由所述插座式FLASH芯片的BOOT弓丨導程序引導CPU 啟動。
13.根據權利要求11所述嵌入式系統的升級、備份裝置,其特征在于,所述CPLD,在自身的在線升級完成后,進一步用于將所述貼片式FLASH芯片劃分為主 BOOT區、程序區和備BOOT區;在初始使用階段,還用于確定由主BOOT弓丨導程序引導CPU啟 動;并在所述升級后的主BOOT引導程序引導CPU啟動時,用于判斷所述引導CPU啟動是否 成功;相應的,所述升級后的主BOOT引導程序引導CPU啟動成功時,所述CPU進一步用于,確 定所述升級后的主BOOT引導程序和備BOOT引導程序不一致時,依據所述升級后的主BOOT 引導程序對所述備BOOT引導程序進行同步,并在同步成功時,讀取程序區中的應用程序版 本并加載;相應的,所述升級后的主BOOT引導程序引導CPU啟動失敗時,所述CPLD進一步用于, 選擇由備BOOT引導程序引導CPU啟動。
14.根據權利要求13所述嵌入式系統的升級、備份裝置,其特征在于,所述備BOOT引導 程序引導CPU啟動成功時,所述CPU進一步用于,確定所述升級后的主BOOT引導程序和備 BOOT引導程序不一致時,依據所述備BOOT引導程序對所述升級后的主BOOT引導程序進行 回退,并在回退成功后,讀取程序區中的應用程序版本并加載。
15.根據權利要求13所述嵌入式系統的升級、備份裝置,其特征在于,在初始使用階段 所述CPU啟動成功后,所述CPU進一步用于,對所述CPLD進行在線升級。
全文摘要
本發明公開了一種嵌入式系統的升級、備份方法和裝置,包括在板級支持包(BSP)調試階段,由插座式閃存(FLASH)芯片中的BOOT引導程序引導中央處理單元(CPU)啟動,并通過CPU對可編程邏輯器件(CPLD)進行在線升級;在初始使用階段,對貼片式FLASH芯片中的主BOOT引導程序進行升級,并由升級后的主BOOT引導程序引導CPU啟動,并在CPU啟動成功時,CPU加載應用程序版本;在CPU啟動失敗時,由備BOOT引導程序引導CPU啟動,并在CPU啟動成功時,CPU加載應用程序版本。通過本發明可以實現嵌入式系統可靠、簡單方便且成本低廉的升級。
文檔編號G06F11/14GK102073517SQ20091023823
公開日2011年5月25日 申請日期2009年11月23日 優先權日2009年11月23日
發明者何瑞金, 潘杰, 邱煒 申請人:中興通訊股份有限公司