本發明涉及衛星導航技術領域,尤其涉及一種GNSS接收機系統升級方法。
背景技術:
當前,針對諸如GNSS(Global Navigation Satellite System,全球導航衛星系統)接收機之類的嵌入式設備進行系統固件升級時,若遇到諸如意外斷電、操作按鍵失誤等非正常操作情況,均可能導致嵌入式設備系統受到嚴重的損壞,甚至使得設備變成“磚頭”,即便能夠重新開機運行,也非常可能在非正常升級后丟失諸如配置信息等關鍵數據,進而致使設備無法正常運行。
用戶遇到上述非正常升級情況時,若想將設備恢復到升級前的正常狀態,往往需要將設備返回廠家進行修復處理,這就大大增加了用戶使用及維護的成本,同時也給廠家的售后增加了許多壓力。
技術實現要素:
針對上述存在的問題,本發明提供一種嵌入式系統升級方法,可應用于諸如GNSS接收機系統等嵌入式系統設備中,通過升級控制程序來檢測設備是否具有固件升級包,若無時則通過打包程序將諸多升級相關數據打包為一個固件升級包,并在后續調用該固件升級包進行 升級時通過上述的升級控制程序對固件升級包進行解包操作,以對設備進行固件升級;同時,在上述固件升級失敗時,通過固件恢復程序調取備份的最小系統數據進行啟動后,調用上述的固件升級包以進行正常升級操作,進而完成對系統的恢復及升級。
為了實現上述目的,本發明采取的技術方案為:
一種嵌入式設備升級方法,所述嵌入式設備包括備份存儲設備,且該備份存儲設備中預存有最小系統環境數據,所述方法包括:
步驟S1,開機啟動時,檢測是否存在升級失敗信息;若存在,則繼續步驟S2;否則,繼續步驟S3;
步驟S2,調取所述最小系統環境數據;
步驟S3,啟動所述嵌入式設備;
步驟S4,監測是否存在固件升級包;若存在,則繼續步驟S6;否則,繼續步驟S9;
步驟S5,對所述固件升級包進行解包操作,以對所述嵌入式設備進行升級操作;
步驟S6,判斷所述升級操作是否成功,若成功,則繼續步驟S7;否則,繼續步驟S9;
步驟S7,更新所述備份存儲設備中預存的所述最小系統環境數據,并將所述固件升級包存儲或更新至所述備份存儲設備;
步驟S8,所述嵌入式設備重啟;
步驟S9,升級過程結束。
上述的嵌入式設備升級方法,所述嵌入式設備為GNSS接收機。
上述的嵌入式設備升級方法,所述升級失敗信息為所述嵌入式設備的內核設置的啟動失敗標志,所述方法還包括:
步驟S11,檢測到所述嵌入式設備的內核設置有啟動失敗標志時,重啟所述嵌入式設備;
步驟S12,利用U-Boot讀取啟動標志,并判斷該啟動標志是否置位;若置位,則繼續步驟S2;否則,繼續步驟S3。
上述的嵌入式設備升級方法,所述方法中的步驟S4包括:
步驟S41,檢測在線升級目錄下是否存在所述固件升級包;若存在,則繼續步驟S5;否則,繼續步驟S42;
步驟S42,檢測外置存儲設備中是否存在所述固件升級包,若存在,則繼續步驟S5;否則,繼續步驟S43;
步驟S43,檢測是否存在固件升級相關數據;若存在,則繼續步驟S44;否則,繼續步驟S9;
步驟S44,將所述固件升級相關數據打包為固件升級包。
上述的嵌入式設備升級方法,所述方法中的步驟S43包括:
步驟S431,檢測在線升級目錄下是否存在固件升級相關數據;若存在,則繼續步驟S44;否則,繼續步驟S432;
步驟S432,檢測外置存儲設備中是否存在固件升級相關數據;若存在,則繼續步驟S44;否則,繼續步驟S9。
上述的嵌入式設備升級方法,所述方法中的步驟S5包括:
步驟S51,讀取所述固件升級包的頭部,并判斷該頭部的PN號是否與所述嵌入式設備的PN號相符;若相符則繼續步驟S52;否則, 繼續步驟S9;
步驟S52,計算并判斷所述固件升級包的md5的值是否與所述頭部中md5的值相符;若相符則繼續步驟S53;否則,繼續步驟S9;
步驟S53,釋放所述固件升級包并解密升級腳本;
步驟S54,備份關鍵配置信息和重要程序后,關閉所有正在運行的程序;
步驟S55執行升級任務,并將升級過程記錄至日志文件。
上述的嵌入式設備升級方法,所述固件升級相關數據包括U-Boot、kernel、rootfs、3g、radio和升級腳本。
附圖說明
通過閱讀參照以下附圖對非限制性實施例所作的詳細描述,本發明及其特征、外形和優點將會變得更加明顯。在全部附圖中相同的標記指示相同的部分。并未可以按照比例繪制附圖,重點在于示出本發明的主旨。
圖1為本申請實施例嵌入式設備升級方法中升級操作的流程示意圖;
圖2為本申請實施例嵌入式設備升級方法中升級操作失敗后重啟的流程示意圖。
具體實施方式
下面結合附圖和具體的實施例對本發明作進一步的說明,但是不 作為本發明的限定。
本申請記載了一種嵌入式設備升級方法,該嵌入式設備(如GNSS接收機等)包括備份存儲設備,且該備份存儲設備中預存有最小系統環境數據,以用于升級操作失誤或失敗時能夠啟動嵌入式設備,所述方法包括:
步驟S1,開機啟動時,檢測是否存在升級失敗信息(如嵌入式設備的內核設置的啟動失敗標志等);若存在,則繼續步驟S2;否則,繼續步驟S3;
步驟S2,調取所述最小系統環境數據;
步驟S3,啟動所述嵌入式設備;
步驟S4,監測是否存在固件升級包;若存在,則繼續步驟S6;否則,繼續步驟S9;
步驟S5,對所述固件升級包進行解包操作,以對所述嵌入式設備進行升級操作;
步驟S6,判斷所述升級操作是否成功,若成功,則繼續步驟S7;否則,繼續步驟S9;
步驟S7,更新所述備份存儲設備中預存的所述最小系統環境數據,并將所述固件升級包存儲或更新至所述備份存儲設備;
步驟S8,所述嵌入式設備重啟;
步驟S9,升級過程結束。
優選的,上述步驟S1可包括:
步驟S11,檢測到所述嵌入式設備的內核設置有啟動失敗標志時, 重啟所述嵌入式設備;
步驟S12,利用U-Boot讀取啟動標志,并判斷該啟動標志是否置位;若置位,則繼續步驟S2;否則,繼續步驟S3。
優選的,上述的步驟S4可包括:
步驟S41,檢測在線升級目錄下是否存在所述固件升級包;若存在,則繼續步驟S5;否則,繼續步驟S42;
步驟S42,檢測外置存儲設備中是否存在所述固件升級包,若存在,則繼續步驟S5;否則,繼續步驟S43;
步驟S43,檢測是否存在固件升級相關數據(如U-Boot、kernel、rootfs、3g、radio和升級腳本等);若存在,則繼續步驟S44;否則,繼續步驟S9;
步驟S44,將所述固件升級相關數據打包為固件升級包。
進一步的,上述的步驟S43可包括:
步驟S431,檢測在線升級目錄下是否存在固件升級相關數據;若存在,則繼續步驟S44;否則,繼續步驟S432;
步驟S432,檢測外置存儲設備中是否存在固件升級相關數據;若存在,則繼續步驟S44;否則,繼續步驟S9。
優先的,上述的步驟S5可包括:
步驟S51,讀取所述固件升級包的頭部,并判斷該頭部的PN號是否與所述嵌入式設備的PN號相符;若相符則繼續步驟S52;否則,繼續步驟S9;
步驟S52,計算并判斷所述固件升級包的md5的值是否與所述頭 部中md5的值相符;若相符則繼續步驟S53;否則,繼續步驟S9;
步驟S53,釋放所述固件升級包并解密升級腳本;
步驟S54,備份關鍵配置信息和重要程序后,關閉所有正在運行的程序;
步驟S55執行升級任務,并將升級過程記錄至日志文件。
為了具體的闡明本發明的技術方案,下面就以GNSS接收機的MAC地址為例進行詳細的說明:
如圖1~2所示,本實施例一種嵌入式設備升級的方法中,具體可通過三個模塊來實現,如可通過打包模塊將固件升級相關數據(例如uboot、kernel、rootfs、3g、radio及升級腳本等)固件成一個固件升級包,利用固件恢復系統在U-Bboot啟動時負責檢查系統是否損壞,并在損壞是執行恢復程序,而升級控制模塊則可實現諸如檢查有無固件升級包、與用戶交互操作及固件解包等功能。
具體的,參見圖1所示,利用升級控制模塊進行操作時,可包括:
首先,通過檢測在線升級目錄下是否有固件升級包(即固件包),若不存在,則繼續檢查外置的存儲設備(諸如U盤或便攜式硬盤等)中是否存在固件升級包,若均不存在,則結束升級;否則就調取并讀出固件升級包的頭部,并判斷該頭部中的PN號與該嵌入式設備自身的PN號是否相符,若不相符,也結束升級操作,而若相符則繼續計算固件升級包的md5的值與上述的頭部中md5的值相同,若不相同也結束升級操作,若相同,則是否上述的固件升級包。
其次,解密上述的固件升級包,并將關鍵配置及重要程序進行備份后,關閉嵌入式設備上當前正在運行的所有程序,并基于上述的固件升級包進行升級任務。
之后,在上述升級操作完成后,記錄升級過程的相關數據信息至日志文件,并判斷升級操作是否成功,若不成功,則升級操作結束;否則,則恢復備份信息(即對存儲設備中用于緊急啟動的最小系統環境數據進行更新),并將固件升級包寫入上述的存儲設備(即備份分區)中。
最后,嵌入設備重啟(即機器重啟),以完成固件升級操作。
進一步的,參見圖2所示,當嵌入式設備的系統被破壞而無法啟動時則可包括:
首先,在上述嵌入式設備在系統啟動失敗后,可利用其內核設置啟動失敗標志,并重啟該嵌入式設備。
其次,利用U-Boot讀取啟動標志,并判斷該啟動標志是否置位,若無置位,則正常啟動系統;否則,則讀取備份分區中的最小系統環境數據到內存。
之后,重啟系統并掛載上述的最小系統環境數據的內存分區,并讀出備份分區中存儲的固件升級包到內存中。
最后,執行正常升級流程,以對系統進行升級恢復
綜上所述,本申請記載的一種嵌入式系統升級方法,可應用于諸如GNSS接收機系統等嵌入式系統設備中,通過升級控制程序來檢測 設備是否具有固件升級包,若無時則通過打包程序將諸多升級相關數據打包為一個固件升級包,并在后續調用該固件升級包進行升級時通過上述的升級控制程序對固件升級包進行解包操作,以對設備進行固件升級;同時,在上述固件升級失敗時,通過固件恢復程序調取備份的最小系統數據進行啟動后,調用上述的固件升級包以進行正常升級操作,進而完成對系統的恢復及升級,即本實施例提供的嵌入式系統升級方法,不僅可以實現多樣的升級方式,且具有較高的可擴展性,即便意外導致機器升級失敗用戶也可以自行進行回復處理,同時可靠性、易用性都非常高,進而大大提升了產品的性能及用戶的滿意度。
本領域技術人員應該理解,本領域技術人員結合現有技術以及上述實施例可以實現所述變化例,在此不予贅述。這樣的變化例并不影響本發明的實質內容,在此不予贅述。
以上對本發明的較佳實施例進行了描述。需要理解的是,本發明并不局限于上述特定實施方式,其中未盡詳細描述的設備和結構應該理解為用本領域中的普通方式予以實施;任何熟悉本領域的技術人員,在不脫離本發明技術方案范圍情況下,都可利用上述揭示的方法和技術內容對本發明技術方案做出許多可能的變動和修飾,或修改為等同變化的等效實施例,這并不影響本發明的實質內容。因此,凡是未脫離本發明技術方案的內容,依據本發明的技術實質對以上實施例所做的任何簡單修改、等同變化及修飾,均仍屬于本發明技術方案保護的范圍內。