專利名稱:基于usb接口的嵌入式軟件升級方法及系統的制作方法
技術領域:
本發明涉及嵌入式系統技術領域,特別涉及一種基于USB接口的嵌入式軟件升級方法及系統。
背景技術:
嵌入式系統是指完全嵌入到受控器件內部、為特定應用而設計的專用計算機系統,其通常與受控器件集成在一起推出,受限于器件的工作環境要求,嵌入式系統的體積、功耗、性能和功能通常會受到一定限制。由于嵌入式系統是軟硬件結合的系統,即使不對硬件進行改動,也能通過軟件的升級使嵌入式系統的性能進一步得到提升,因此軟件升級是 嵌入式系統后期升級維護的一項重要內容。隨著嵌入式系統內容和服務越來越新、越來越豐富,軟件升級也變得越來越重要和頻繁,軟件升級的效率和可靠性往往成為嵌入式系統乃至整個受控器件的性能和可靠性的重要評估指標。現有技術中,嵌入式系統軟件升級的一般過程為將升級文件放在U盤上,同時在嵌入式系統中保存有升級管理程序,升級過程中依靠升級管理程序來完成控制。整個升級過程就是將新版本的升級文件拷貝到應用程序的指定位置(有時拷貝的同時也覆蓋掉原低版本文件),升級成功后嵌入式系統重啟會自動加載新版本文件運行。但是,發明人在實現本發明的過程中發現,受體積和功能的限制,現有技術的嵌入式系統通常不具備錯誤處理能力,但其在軟件升級過程一旦發生任何錯誤均會直接導致嵌入式系統重新啟動,由于嵌入式系統并不對錯誤進行修正,因而通常不會立即再次嘗試升級。在此情況下,對于不覆蓋原有文件的升級方式,原文件顯然可直接使用繼續工作,升級失敗的重啟顯得沒有必要,浪費時間;而對于覆蓋原有文件的升級方式,由于原有文件已受損,失敗重啟只會使整個系統無法使用,同樣是種沒有意義的操作。此外,由于升級管理程序保存在嵌入式系統中,升級時僅更新功能軟件無法對管理程序進行更新,一旦管理程序存在錯誤將導致整個系統無法進行有效的升級,只能通過其他手段替換掉錯誤的管理程序(如借助其他設備對ROM進行重寫)再進行升級。或者當升級涉及到管理程序時,同樣需要先通過其他手段升級管理程序,再進行功能軟件的升級。上述問題導致嵌入式系統的軟件升級過程復雜繁瑣、耗費時間且極易發生錯誤。另外,對于顯示裝置極其簡單甚至是沒有顯示裝置的嵌入式器件(如機頂盒等),由于升級管理程序保存在嵌入式系統中,即使對升級過程中的出錯信息進行記錄,也很難在顯示裝置上進行詳細的顯示,依靠嵌入式系統本身很難分析出錯原因和迅速改正錯誤。
發明內容
(一 )要解決的技術問題針對現有技術的缺點,本發明為了解決現有技術中嵌入式軟件升級極易發生錯誤的問題,提出了一種基于USB接口的嵌入式軟件升級方法及系統。( 二 )技術方案
為了實現上述目的,一方面,本發明提供了一種基于USB接口的嵌入式軟件升級方法,所述方法包括步驟SI,設備開啟,啟動操作系統,自動啟動運行升級引導程序;S2,升級引導程序加載USB驅動,檢測USB接口是否有USB存儲器件;如沒有發現USB存儲器件,則執行步驟S7 ;如發現有USB存儲器件,則執行步驟S3 ;S3,進一步掃描USB存儲器件,在USB存儲器件上查找升級管理程序;如未找到升級管理程序,則執行步驟S7 ;如找到升級管理程序,則執行步驟S4 ;
S4,將升級管理程序拷貝到系統內存,在系統內存中運行啟動升級管理程序;如不能成功啟動升級管理程序,則向USB存儲器件輸出相應出錯信息后執行步驟S7 ;如成功啟動升級管理程序,則執行步驟S5 ;S5,升級管理程序進一步掃描USB存儲器件,查找USB存儲器件上是否有新版本的升級文件;如未在USB存儲器件上找到新版本升級文件或新版本升級文件的版本有效性存在問題,則向USB存儲器件輸出相應出錯信息后執行步驟S7 ;如新版本升級文件有效性無問題,則執行步驟S6;S6,執行升級,將新版本升級文件拷貝到系統閃存中的指定位置;若升級成功,則重啟設備后運行新系統執行步驟S7 ;如升級不成功,則根據USB存儲器件的出錯信息,修改升級管理程序或升級文件后轉至步驟SI再次嘗試升級;S7,啟動其它應用程序,使設備處于正常工作狀態。另一方面,本發明還同時提供一種基于USB接口的嵌入式軟件升級系統,所述系統包括升級引導模塊、升級管理模塊和工作模塊,所述升級引導模塊包括引導模塊、USB檢測模塊、升級管理程序查找模塊和升級管理程序啟動模塊,所述升級管理模塊包括升級文件查找模塊和升級模塊;其中,引導模塊,用于在設備開啟并啟動操作系統后,自動啟動運行升級引導程序;USB存儲器件檢測模塊,用于在升級引導程序加載USB驅動后,檢測USB接口是否有USB存儲器件;如沒有發現USB存儲器件,則啟動工作模塊;如發現有USB存儲器件,則啟動升級管理程序查找模塊;升級管理程序查找模塊,用于進一步掃描USB存儲器件,在USB存儲器件上查找升級管理程序;如未找到升級管理程序,則啟動工作模塊;如找到升級管理程序,則啟動升級管理程序運行模塊;升級管理程序啟動模塊,用于將升級管理程序拷貝到系統內存,在系統內存中運行啟動升級管理程序;如不能成功啟動升級管理程序,則向USB存儲器件輸出相應出錯信息后啟動工作模塊;如成功啟動升級管理程序,則啟動升級文件查找模塊;升級文件查找模塊,用于使升級管理程序進一步掃描USB存儲器件,查找USB存儲器件上是否有新版本的升級文件;如未在USB存儲器件上找到新版本升級文件或新版本升級文件的版本有效性存在問題,則向USB存儲器件輸出相應出錯信息后啟動工作模塊;如新版本升級文件有效性無問題,則啟動升級模塊;升級模塊,用于將新版本升級文件拷貝到系統閃存中的指定位置;若升級成功,則重啟設備后運行新系統啟動工作模塊;如升級不成功,則根據USB存儲器件的出錯信息,修改升級管理程序或升級文件后重新啟動引導模塊再次嘗試升級;
工作模塊,用于啟動其它應用程序,使設備處于正常工作狀態。(三)有益效果本發明的技術方案中,將整個升級程序分為系統閃存中的升級引導程序和U盤中的升級管理程序,通過該方式,在升級管理程序存在問題導致升級不成功時,能夠很容易的在U盤上進行修改升級管理程序本身。此外,由于升級引導程序很簡單、占用空間很小,僅用來啟動U盤上的升級管理程序,和軟件版本和升級過程沒有直接關系,因此其出錯的概率很小,也不必頻繁修改甚至完全無需修改,這樣使升級出錯的修正工作變得容易。由于本發明的操作系統啟動后,在升級無法正常進行時,會直接啟動其它應用程序進入工作狀態,可有效減少操作系統重啟浪費的時間和對當前工作造成的影響。最后,本發明中將升級過程中出現的任何錯誤都詳細記錄在U盤上,隨后借助PC進行錯誤分析和修改,尤其適合機頂盒這樣的顯示裝置簡單、存儲空間有限的嵌入式系統的錯誤修正。
圖I為本發明的實施例中基于USB接口的嵌入式軟件升級方法的處理流程示意圖;圖2為本發明的實施例中基于USB接口的嵌入式軟件升級系統的模塊結構示意圖。
具體實施例方式下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例是本發明的一部分實施例,而不是全部的實施例。基于本發明中的實施例,本領域普通技術人員在沒有做出創造性勞動的前提下所獲得的所有其他實施例,都屬于本發明保護的范圍。發明提供了一種靈活、方便的基于USB接口的軟件升級方法及系統,可以解決當升級管理程序本身出現bug或升級管理程序具有局限性時無法順利實現USB接口的軟件升級功能的問題。本發明把可執行升級管理程序從嵌入式系統軟件中獨立出來放置到USB存儲器件(如U盤等)上,并在設備的嵌入式系統中設置升級引導程序,用來將U盤上的升級管理程序拷貝到系統RAM并運行,實現升級;并且如果由于升級管理程序本身有BUG或由于新老版本差異大而導致升級出錯,會自動的把相應出錯信息輸出到U盤中,便于分析原因和修改。具體地,參見圖1,本發明的實施例中基于USB接口的嵌入式軟件升級方法包括步驟SI,設備開啟,啟動操作系統,自動啟動運行升級引導程序;S2,升級引導程序加載USB驅動,檢測USB接口是否有USB存儲器件(如U盤等);如沒有發現USB存儲器件,則執行步驟S7 ;如發現有USB存儲器件,則執行步驟S3 ;S3,進一步掃描USB存儲器件,在USB存儲器件上查找升級管理程序;如未找到升級管理程序,則執行步驟S7 ;如找到升級管理程序,則執行步驟S4 ;S4,將升級管理程序拷貝到系統內存(如RAM等),在系統內存中運行啟動升級管理程序;如不能成功啟動升級管理程序,則向USB存儲器件輸出相應出錯信息后執行步驟S7 ;如成功啟動升級管理程序,則執行步驟S5 ;S5,升級管理程序進一步掃描USB存儲器件,查找USB存儲器件上是否有新版本的升級文件;如未在USB存儲器件上找到新版本升級文件或新版本升級文件的版本有效性存在問題,則向USB存儲器件輸出相應出錯信息后執行步驟S7 ;如新版本升級文件有效性無問題,則執行步驟S6;S6,執行升級,將新版本升級文件拷貝到系統閃存中的指定位置;若升級成功,則重啟設備后運行新系統執行步驟S7 ;如升級不成功,則根據USB存儲器件的出錯信息,修改升級管理程序或升級文件后轉至步驟SI再次嘗試升級;S7,啟動其它應用程序,使設備處于正常工作狀態。下面結合具體的實施例對本發明的方法做進一步的說明。以海信傳媒HIT500型 機頂盒軟件從3. 2版本升級到4. I版本為例,這兩個版本差別很大應用軟件在3. 2版本中所在的目錄只有一個Aisr/local/app,而4. I版本由于應用種類和數量增多,除了 Aisr/local/app目錄外,還新創建了一個目錄/usr/local/business用來存儲部分應用軟件,由于目錄Aisr/local/business只是在4. I的系統上創建的,3. 2版本沒有,所以3. 2版本的升級管理程序沒有創建該目錄的相關操作,這樣,3. 2版本升級管理程序就不能支持從3. 2版本到4. I版本的升級,如果該升級管理程序是固化在嵌入式系統中的話,那它就不能完成從3. 2到4. I版本升級,只能通過其它方式來完成,比如先升級到一個過渡版本,再從過渡版本升級到4. I版本,但會使得升級過程變得更復雜,耗時長,也增加了升級過程中出問題的幾率。此外,由于機頂盒本身只有很簡單的顯示裝置,因此升級過程及出錯信息很難通過機頂盒顯示屏幕去顯示,況且有很多情況是未知的,如升級管理程序帶有BUG、新老版本差異大導致兼容性差等,而簡單的出錯類型提示并不足以使工作人員找到問題所在。采用本發明的方法就可以很好的解決上述問題,以下是該機頂盒軟件升級的具體操作步驟I.嵌入式系統中升級之前的軟件版本是3. 2,USB設備中的升級管理程序版本也是3. 2,由于3. 2版本升級管理程序沒有創建目錄八isr/local/business的操作,所以該版本不支持從3. 2到4. I的軟件升級。2.由于升級管理程序不是固化在嵌入式系統中,而是在USB設備上,這樣,可以單獨將USB設備上的3. 2版本升級管理程序進行更新(創建目錄/usr/local/business等操作),更新到4. I版本,使得其支持從3. 2版本到4. I版本的軟件升級。3.將存儲4. I版本升級管理程序的USB設備插入到嵌入式系統中,重啟機頂盒就可以完成從3. 2到4. I的軟件升級過程了。4.如果升級過程中有問題,可以將USB設備中的升級管理程序再次更新,更新后將USB設備插入到嵌入式系統中,重啟系統重新開始升級,直到升級成功。這樣,對機頂盒來說,本發明的方法具有以下優勢I.由于設置了升級引導程序,升級管理程序本身或U盤存儲的有問題,無法正常啟動升級管理程序時,系統會繼續執行其它應用程序,運行舊版本,使機頂盒仍可以正常使用;2.在執行升級時是訪問U盤并將其上的升級管理程序拷貝到RAM中運行的,而不像現有技術那樣是從系統的FLASH中拷貝到RAM中運行的,這樣一方面節約了 FLASH的存儲空間,另一方面,由于升級管理程序放置在U盤上,在升級出錯時很容易拿到PC上去分析原因和修改。本領域普通技術人員可以理解,實現上述實施例方法中的全部或部分步驟是可以通過程序來指令相關的硬件來完成,所述的程序可以存儲于一計算機可讀取存儲介質中,該程序在執行時,包括上述實施例方法的各步驟,而所述的存儲介質可以是R0M/RAM、磁碟、光盤、存儲卡等。因此,與本發明的方法相對應的,本發明還同時包括一種基于USB接口的嵌入式軟件升級系統,該系統通常以與方法各步驟相對應的功能模塊的形式表示;如圖2所示,所述系統包括升級引導模塊、升級管理模塊和工作模塊,所述升級引導模塊包括引導模塊、USB檢測模塊、升級管理程序查找模塊和升級管理程序啟動模塊,所述升級管理模塊包括升級文件查找模塊和升級模塊;其中,引導模塊,用于在設備開啟并啟動操作系統后,自動啟動運行升級引導程序;USB存儲器件檢測模塊,用于在升級引導程序加載USB驅動后,檢測USB接口是否有USB存儲器件;如沒有發現USB存儲器件,則啟動工作模塊;如發現有USB存儲器件,則啟 動升級管理程序查找模塊;升級管理程序查找模塊,用于進一步掃描USB存儲器件,在USB存儲器件上查找升級管理程序;如未找到升級管理程序,則啟動工作模塊;如找到升級管理程序,則啟動升級管理程序運行模塊;升級管理程序啟動模塊,用于將升級管理程序拷貝到系統內存,在系統內存中運行啟動升級管理程序;如不能成功啟動升級管理程序,則向USB存儲器件輸出相應出錯信息后啟動工作模塊;如成功啟動升級管理程序,則啟動升級文件查找模塊;升級文件查找模塊,用于使升級管理程序進一步掃描USB存儲器件,查找USB存儲器件上是否有新版本的升級文件;如未在USB存儲器件上找到新版本升級文件或新版本升級文件的版本有效性存在問題,則向USB存儲器件輸出相應出錯信息后啟動工作模塊;如新版本升級文件有效性無問題,則啟動升級模塊;升級模塊,用于將新版本升級文件拷貝到系統閃存中的指定位置;若升級成功,則重啟設備后運行新系統啟動工作模塊;如升級不成功,則根據USB存儲器件的出錯信息,修改升級管理程序或升級文件后重新啟動引導模塊再次嘗試升級;工作模塊,用于啟動其它應用程序,使設備處于正常工作狀態。可以看出,本發明的技術方案中,將整個升級程序分為系統閃存中的升級引導程序和U盤中的升級管理程序,通過該方式,在升級管理程序存在問題導致升級不成功時,能夠很容易的在U盤上進行修改升級管理程序本身。此外,由于升級引導程序很簡單、占用空間很小,僅用來啟動U盤上的升級管理程序,和軟件版本和升級過程沒有直接關系,因此其出錯的概率很小,也不必頻繁修改甚至完全無需修改,這樣使升級出錯的修正工作變得容易。由于本發明的操作系統啟動后,在升級無法正常進行時,會直接啟動其它應用程序進入工作狀態,可有效減少操作系統重啟浪費的時間和對當前工作造成的影響。最后,本發明中將升級過程中出現的任何錯誤都詳細記錄在U盤上,隨后借助PC進行錯誤分析和修改,尤其適合機頂盒這樣的顯示裝置簡單、存儲空間有限的嵌入式系統的錯誤修正。以上實施方式僅用于說明本發明,而并非對本發明的限制,有關技術領域的普通技術人員,在不脫離本發明的精神和范圍的情況下,還可以做出各種變化和變型,因此所有等同的技術方案也屬于本發明的范疇, 本發明的發明保護范圍應由權利要求限定。
權利要求
1.一種基于USB接ロ的嵌入式軟件升級方法,其特征在于,所述方法包括步驟 Si,設備開啟,啟動操作系統,自動啟動運行升級引導程序; S2,升級引導程序加載USB驅動,檢測USB接ロ是否有USB存儲器件;如沒有發現USB存儲器件,則執行步驟S7 ;如發現有USB存儲器件,則執行步驟S3 ; S3,進ー步掃描USB存儲器件,在USB存儲器件上查找升級管理程序;如未找到升級管理程序,則執行步驟S7 ;如找到升級管理程序,則執行步驟S4 ; S4,將升級管理程序拷貝到系統內存,在系統內存中運行啟動升級管理程序;如不能成功啟動升級管理程序,則向USB存儲器件輸出相應出錯信息后執行步驟S7 ;如成功啟動升級管理程序,則執行步驟S5; S5,升級管理程序進ー步掃描USB存儲器件,查找USB存儲器件上是否有新版本的升級文件;如未在USB存儲器件上找到新版本升級文件或新版本升級文件的版本有效性存在問題,則向USB存儲器件輸出相應出錯信息后執行步驟S7 ;如新版本升級文件有效性無問題,則執行步驟S6 ; S6,執行升級,將新版本升級文件拷貝到系統閃存中的指定位置;若升級成功,則重啟設備后運行新系統執行步驟S7 ;如升級不成功,則根據USB存儲器件的出錯信息,修改升級管理程序或升級文件后轉至步驟SI再次嘗試升級; S7,啟動其它應用程序,使設備處于正常工作狀態。
2.根據權利要求I所述的方法,其特征在于,步驟S5中,在向USB存儲器件輸出相應出錯信息時,分別記錄不存在新版本升級文件的問題和新版本升級文件的版本有效性問題。
3.根據權利要求I所述的方法,其特征在于,步驟S6中,根據USB存儲器件的出錯信息,在PC機上對升級管理程序或升級文件進行修改。
4.根據權利要求I所述的方法,其特征在于,所述升級引導程序存儲在所述設備的ROM中。
5.根據權利要求I所述的方法,其特征在于,所述設備為機頂盒、電視或移動終端。
6.一種基于USB接ロ的嵌入式軟件升級系統,其特征在干,所述系統包括升級引導模塊、升級管理模塊和工作模塊,所述升級引導模塊包括引導模塊、USB檢測模塊、升級管理程序查找模塊和升級管理程序啟動模塊,所述升級管理模塊包括升級文件查找模塊和升級模塊;其中, 引導模塊,用于在設備開啟并啟動操作系統后,自動啟動運行升級引導程序; USB檢測模塊,用于在升級引導程序加載USB驅動后,檢測USB接ロ是否有USB存儲器件;如沒有發現USB存儲器件,則啟動工作模塊;如發現有USB存儲器件,則啟動升級管理程序查找模塊; 升級管理程序查找模塊,用于進ー步掃描USB存儲器件,在USB存儲器件上查找升級管理程序;如未找到升級管理程序,則啟動工作模塊;如找到升級管理程序,則啟動升級管理程序運行模塊; 升級管理程序啟動模塊,用于將升級管理程序拷貝到系統內存,在系統內存中運行啟動升級管理程序;如不能成功啟動升級管理程序,則向USB存儲器件輸出相應出錯信息后啟動工作模塊;如成功啟動升級管理程序,則啟動升級文件查找模塊; 升級文件查找模塊,用于使升級管理程序進ー步掃描USB存儲器件,查找USB存儲器件上是否有新版本的升級文件;如未在USB存儲器件上找到新版本升級文件或新版本升級文件的版本有效性存在問題,則向USB存儲器件輸出相應出錯信息后啟動工作模塊;如新版本升級文件有效性無問題,則啟動升級模塊; 升級模塊,用于將新版本升級文件拷貝到系統閃存中的指定位置;若升級成功,則重啟設備后運行新系統啟動工作模塊;如升級不成功,則根據USB存儲器件的出錯信息,修改升級管理程序或升級文件后重新啟動引導模塊再次嘗試升級; 工作模塊,用于啟動其它應用程序,使設備處于正常工作狀態。
7.根據權利要求6所述的系統,其特征在于,在升級文件查找模塊向USB存儲器件輸出相應出錯信息時,分別記錄不存在新版本升級文件的問題和新版本升級文件的版本有效性問題。
8.根據權利要求6所述的系統,其特征在于,所述系統進ー步包括錯誤修正模塊,用 于根據USB存儲器件的出錯信息,在PC機上對升級管理程序或升級文件進行修改。
9.根據權利要求6所述的系統,其特征在于,所述升級引導程序存儲在所述設備的ROM中。
10.根據權利要求6所述的系統,其特征在于,所述設備為機頂盒、電視或移動終端。
全文摘要
本發明涉及嵌入式系統技術領域,提供了一種基于USB接口的嵌入式軟件升級方法及系統。該方法包括設備開啟后運行升級引導程序,在USB存儲器件上查找升級管理程序并將升級管理程序拷貝到系統內存運行;查找USB存儲器件上的新版本的升級文件進行升級;若任一步驟無法繼續則直接使設備處于正常工作狀態,同時根據USB存儲器件的出錯信息,修改升級管理程序或升級文件后再次嘗試升級。本發明中,將整個升級程序分為系統閃存中的升級引導程序和U盤中的升級管理程序,在升級管理程序存在問題導致升級不成功時,能夠很容易地在U盤上進行修改升級管理程序本身。此外在無法正常升級時直接進入工作狀態,有效減少重啟時間和對當前工作的影響。
文檔編號G06F13/38GK102662689SQ20121006660
公開日2012年9月12日 申請日期2012年3月15日 優先權日2012年3月15日
發明者劉立華 申請人:青島海信傳媒網絡技術有限公司