一種基於BootRom的嵌入式系統啟動方法與流程
2023-07-28 18:02:26 2
本發明涉及嵌入式系統技術領域,特別是涉及一種基於bootrom的嵌入式系統啟動方法。
背景技術:
目前,在嵌入式系統及設備中,系統在啟動時上電首先默認執行bootrom程序,然後根據bootrom程序執行其他應用程式,這些應用程式包括作業系統程序,硬體設備驅動以及其他應用層程序。應用程式啟動的流程的步驟包括:設備上電後,bootrom程序啟動並運行,完成系統自檢並初始化系統參數設置;bootrom程序從存放其他應用程式的存儲器中加載相應的應用程式;bootrom程序解包或解壓縮應用程式並對應用程式完整性進行校驗;bootrom啟動對應的應用程式中的可執行程序,並執行它;嵌入式系統啟動過程完畢。
從上述啟動步驟中可以看到,對應的應用程式和嵌入式系統或設備啟動後需要執行的程序,是設備能夠正常工作並對外提供服務的核心。如果沒有該應用程式,設備將無法正常使用。所以,在系統上電時,需要使用bootrom程序按照步驟正確加載並啟動該應用程式。但是,這個過程就要求bootrom程序需要對應用程式的存儲位置,加密算法,是否壓縮等信息了解。隨著應用程式的升級或新版本發布,bootrom程序亦需伴隨進行相應的升級。
然而bootrom程序通常是在晶片出廠時固化在處理器晶片內部的,對其進行升級操作成本極高,同時bootrom的升級過程也是一個危險的過程,如果在升級過程中突然斷電或者由於其他突發因素,也可能會導致bootrom程序升級失敗,從而造成bootrom程序損壞,進而影響整個嵌入式系統的無法正常啟動。在實際的應用中,bootrom程序損壞是一個非常嚴重的問題,通常需要將嵌入式系統或設備送回廠家進行維修。因此如何在不升級bootrom程序的情況下,順利地完成對升級後的應用程式的啟動是亟待解決的問題。
技術實現要素:
本發明的目的是提供一種基於bootrom的嵌入式系統啟動方法,以實現在不升級bootrom程序的情況下,順利完成對升級後的應用程式的啟動。
為解決上述技術問題,本發明提供一種基於bootrom的嵌入式系統啟動方法,該方法包括:
系統上電,bootrom程序啟動並運行初始化操作;
bootrom程序查找到加載程序,並啟動和運行加載程序;
加載程序對應用程式進行解壓縮,並對應用程式進行解密;
加載程序啟動應用程式中的可執行程序,完成系統啟動。
優選的,應用程式作為一個數據段附加在加載程序中。
優選的,所述bootrom程序查找到加載程序,並啟動和運行加載程序,包括:
bootrom程序識別加載程序,加載並啟動加載程序。
優選的,所述加載程序對應用程式進行解壓縮,並對應用程式進行解密,包括:
加載程序識別應用程式的數據結構,為應用程式準備運行環境和運行參數;若應用程式為壓縮的加密後的程序,對應用程式進行解壓縮和解密。
優選的,所述加載程序啟動應用程式中的可執行程序,完成系統啟動,包括:
加載程序將應用程式放置到正確的位置,運行應用程式,使嵌入式系統正常運行並對外提供服務,完成系統啟動。
優選的,加載程序包括:加載程序文件頭、加載程序本身、應用程式文件頭以及應用程式本身;應用程式文件頭和應用程式本身組成應用程式。
優選的,在加載程序中,加載程序文件頭被bootrom程序識別,應用程式文件頭被加載程序本身識別。
本發明所提供的一種基於bootrom的嵌入式系統啟動方法,系統上電,bootrom程序啟動並運行初始化操作bootrom程序查找到加載程序,並啟動和運行加載程序;加載程序對應用程式進行解壓縮,並對應用程式進行解密;加載程序啟動應用程式中的可執行程序,完成系統啟動。可見,系統通過在啟動過程中依次運行bootrom程序,加載程序,應用程式來完成系統啟動。在bootrom程序和可執行的應用程式之間設置一加載程序,在系統或設備啟動過程中,bootrom程序先加載並運行加載程序,並將應用程式作為加載程序的一段數據,加載程序負責加載應用程式並為應用程式準備運行環境和運行參數,進而啟動應用程式,使得系統最終可以正常運行並對外提供相應的服務,完成系統啟動過程。如此通過使用加載程序可以解耦和消除bootrom程序和應用程式之間的密切關係,即當應用程式升級時,不需要升級bootrom程序,避免了bootrom程序由於應用程式的升級而引起的頻繁升級和繁瑣的操作,從而避免了由於bootrom程序在升級過程中由於突然斷電或者其他突發因素,導致升級失敗,造成嵌入式系統無法正常工作的情況,減少了維護過程,實現在不升級bootrom程序的情況下,順利完成對升級後的應用程式的啟動。
附圖說明
為了更清楚地說明本發明實施例或現有技術中的技術方案,下面將對實施例或現有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發明的實施例,對於本領域普通技術人員來講,在不付出創造性勞動的前提下,還可以根據提供的附圖獲得其他的附圖。
圖1為本發明所提供的一種基於bootrom的嵌入式系統啟動方法的流程圖。
具體實施方式
本發明的核心是提供一種基於bootrom的嵌入式系統啟動方法,以實現在不升級bootrom程序的情況下,順利完成對升級後的應用程式的啟動。
為了使本技術領域的人員更好地理解本發明方案,下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發明一部分實施例,而不是全部的實施例。基於本發明中的實施例,本領域普通技術人員在沒有做出創造性勞動前提下所獲得的所有其他實施例,都屬於本發明保護的範圍。
請參考圖1,圖1為本發明所提供的一種基於bootrom的嵌入式系統啟動方法的流程圖,該方法包括:
s11:系統上電,bootrom程序啟動並運行初始化操作;
s12:bootrom程序查找到加載程序,並啟動和運行加載程序;
s13:加載程序對應用程式進行解壓縮,並對應用程式進行解密;
s14:加載程序啟動應用程式中的可執行程序,完成系統啟動。
可見,系統通過在啟動過程中依次運行bootrom程序,加載程序,應用程式來完成系統啟動。在bootrom程序和可執行的應用程式之間設置一加載程序,在系統或設備啟動過程中,bootrom程序先加載並運行加載程序,並將應用程式作為加載程序的一段數據,加載程序負責加載應用程式並為應用程式準備運行環境和運行參數,進而啟動應用程式,使得系統最終可以正常運行並對外提供相應的服務,完成系統啟動過程。
如此通過使用加載程序可以解耦和消除bootrom程序和應用程式之間的密切關係,即當應用程式升級時,不需要升級bootrom程序,避免了bootrom程序由於應用程式的升級而引起的頻繁升級和繁瑣的操作,從而避免了由於bootrom程序在升級過程中由於突然斷電或者其他突發因素,導致升級失敗,造成嵌入式系統無法正常工作的情況,減少了維護過程,實現在不升級bootrom程序的情況下,順利完成對升級後的應用程式的啟動。
基於上述方法,具體的,應用程式作為一個數據段附加在加載程序中。
進一步的,步驟s12的過程具體為:bootrom程序識別加載程序,加載並啟動加載程序。
進一步的,步驟s13的過程具體為:加載程序識別應用程式的數據結構,為應用程式準備運行環境和運行參數;若應用程式為壓縮的加密後的程序,對應用程式進行解壓縮和解密。
進一步的,步驟s14的過程具體為:加載程序將應用程式放置到正確的位置,運行應用程式,使嵌入式系統正常運行並對外提供服務,完成系統啟動。
其中,加載程序包括:加載程序文件頭、加載程序本身、應用程式文件頭以及應用程式本身;應用程式文件頭和應用程式本身組成應用程式。
其中,在加載程序中,加載程序文件頭被bootrom程序識別,應用程式文件頭被加載程序本身識別。
詳細的,bootrom程序加載並啟動加載程序;加載程序本身能夠被bootrom程序識別,並加載程序自身可以識別應用程式的數據結構,應用程式作為一個數據段附加在加載程序中;加載程序運行並為應用程式準備運行環境和運行參數;加載程序從自身的數據段中對應用程式進行提取。如果應用程式是壓縮的或加密的,加載程序還需對該提取後的進行解壓縮或解密;加載程序將應用程式放置到正確的位置。
本方法中,系統通過在啟動過程中依次運行bootrom程序,加載程序,應用程式來完成系統啟動。本方法在bootrom程序和可執行的應用程式之間設置一加載程序。其中,加載程序被編譯成能夠被bootrom程序識別,且其自身能夠理解應用程式的數據結構。在系統或設備啟動過程中,bootrom程序先加載並運行加載程序,並將應用程式作為加載程序的一段數據,加載程序負責加載應用程式並為應用程式準備運行環境和運行參數,進而啟動應用程式,使得系統最終可以正常運行並對外提供相應的服務,完成系統啟動過程。
本方法中通過bootrom啟動加載程序,加載程序為應用程式準備運行環境和運行參數,並最終通過運行應用程式完成嵌入式系統的啟動,使其對外提供相應的服務。通過使用加載程序可以解耦和消除bootrom程序和應用程式之間的密切關係,即當應用程式升級時,不需要升級bootrom程序,避免了bootrom程序由於應用程式的升級而引起的頻繁升級和繁瑣的操作,從而避免了由於bootrom程序在升級過程中由於突然斷電或者其他突發因素,導致升級失敗,造成嵌入式系統無法正常工作的情況,減少了維護過程,可以在不升級bootrom程序的情況下,順利地完成對升級後的應用程式的啟動。
本方法應用於固化了bootrom程序的嵌入式系統中,該系統運行bootrom程序,應用程式及與其相匹配的加載程序。
基於本方法,具體的,首先bootrom程序上電啟動,根據配置在bootrom程序中的默認參數完成系統初始化工作;bootrom程序根據默認的加載參數,找到加載程序,並啟動和運行加載程序。其中,加載程序本身由文件頭,加載程序本身及應用程式組成。在文件頭的生成過程中,包含了加載程序的大小,應用程式的偏移位置,加密算法,加密密鑰,應用程式是否壓縮的信息。因此加載程序運行時可以根據文件頭中的這些信息解析並執行的相應操作完成應用程式的提取,解密及解壓縮等操作,並將應用程式放置到正確的可執行位置。
其次為應用程式的運行準備好運行環境和運行參數。最後加載程序執行跳轉指令,跳轉到應用程式的開始位置,開始執行應用程式,從而完成嵌入式系統的啟動過程。其中,加載程序需要滿足bootrom的設計規範,可以被bootrom程序識別,加載並運行,同時加載程序本身能夠理解應用程式及其包含的數據結構,應用程式本身作為一段數據添加到加載程序。
詳細的,系統啟動步驟如下:
1、系統上電後,bootrom程序完成系統自檢及初始化,完成系統初始運行參數設置;
2、bootrom程序加載並啟動加載程序;加載程序本身能夠被bootrom程序識別,並加載程序自身可以識別應用程式的數據結構,應用程式作為一個數據段附加在加載程序中;
3、加載程序運行並為應用程式準備運行環境和運行參數;加載程序從自身的數據段中對應用程式進行提取。如果應用程式是壓縮的或加密的,加載程序還需對該提取後的進行解壓縮或解密;
4、加載程序將應用程式放置到正確的位置;
5、運行應用程式使得嵌入式系統或設備正常運行被對外提供相應的服務;
6、系統啟動完成。
現有技術中,由於bootrom程序和應用程式之間存在對應關係,當應用程式升級時,則bootrom程序也需要相應的升級。而在實際應用中,應用程式的升級沒有風險且相對較為頻繁,新增功能或對原有功能的問題修復等都有可能引起一次應用程式升級操作。但是,對於bootrom程序來說,其本身是非常敏感並且重要的程序,對bootrom程序的頻繁升級操作會帶來比較大的風險,因此實際場景下要求對bootrom程序的升級次數越少越好,如非必要情況下最好不對bootrom程序進行升級操作。本方法在應用程式升級的前提下,可以不對bootrom程序進行升級,便可以啟動升級後的應用程式,從而使得該系統可以正常的工作。
本方法中,在bootrom程序和可執行的應用程式之間設置一加載程序。其中,加載程序被編譯成能夠被bootrom程序識別,且其自身能夠理解應用程式的數據結構。在系統或設備啟動過程中,bootrom程序先加載並運行加載程序,並將應用程式作為加載程序的一段數據,加載程序負責加載應用程式並為應用程式準備運行環境和運行參數,進而啟動應用程式,使得系統最終可以正常運行並對外提供相應的服務,完成系統啟動過程。
本方法的優點包括:通過使用加載程序可以解耦和消除bootrom程序和應用程式之間的密切關係;即當應用程式升級時,不需要升級bootrom程序,避免了bootrom程序由於應用程式的升級而引起的頻繁升級和繁瑣的操作;避免了由於bootrom程序在升級過程中由於突然斷電或者其他突發因素,導致升級失敗,造成嵌入式系統無法正常工作的情況;減少了維護維護風險,簡化應用程式升級過程。
以上對本發明所提供的一種基於bootrom的嵌入式系統啟動方法進行了詳細介紹。本文中應用了具體個例對本發明的原理及實施方式進行了闡述,以上實施例的說明只是用於幫助理解本發明的方法及其核心思想。應當指出,對於本技術領域的普通技術人員來說,在不脫離本發明原理的前提下,還可以對本發明進行若干改進和修飾,這些改進和修飾也落入本發明權利要求的保護範圍內。