專利名稱:啟動芯片軟件版本信息設置方法和裝置的制作方法
技術領域:
本發(fā)明涉及嵌入式系統(tǒng)技術領域,特別是涉及一種啟動芯片軟件(bootrom)版本信息設置方法和裝置。
背景技術:
bootrom是嵌入式系統(tǒng)中運行實時操作系統(tǒng)的引導程序,類似于PC機主板上的基本輸入輸出系統(tǒng)(BIOS,Basic Input Output System)程序。bootrom一般完成系統(tǒng)硬件的初始化配置,并加載系統(tǒng)的應用程序到內存指定位置運行。此外,bootrom軟件一般還具有設備上電自檢、文件上傳下載、應用程序版本升級等功能。一些嵌入式設備,例如在以太網交換機、路由器等設備內部的處理器上都內嵌有bootrom。
為了有利于嵌入式系統(tǒng)的更新和升級,便于bootrom的版本管理,通常在制作bootrom時會為其附加上一些版本信息,并將該版本信息也燒到boot芯片中。版本信息可以包括版本名稱、版本號、編譯時間和整個bootrom的校驗和等,為bootrom的后續(xù)維護帶來極大便利。嵌入式系統(tǒng)的開發(fā)維護人員可以依據版本信息確定嵌入式系統(tǒng)所采用的bootrom的版本,掌握不同版本bootrom之間的差異,配置優(yōu)化的bootrom,bootrom的版本信息還有利于分析bootrom與應用程序的兼容性等。
作為嵌入式系統(tǒng)中的核心部件,嵌入式處理器的體系架構種類繁多,如PowerPC,ARM,MIPS,X86等,而各種體系架構下的嵌入式處理器種類則更是不勝枚舉。bootrom作為系統(tǒng)引導程序的角色決定了其必須滿足特定嵌入式處理器對bootrom的特定要求,例如bootrom的大小、bootrom地址空間中開始執(zhí)行指令的起始地址、是否需要包含處理器缺省配置字等。
不同嵌入式處理器對bootrom的要求不同,特別是不同嵌入式處理器要求bootrom地址空間中開始執(zhí)行指令的起始地址不同,給實現一種通用的bootrom版本信息的設置方法帶來了困難。一些嵌入式處理器,上電后會從bootrom地址空間偏移地址0x100處開始執(zhí)行指令;而有些嵌入式處理器,上電后從bootrom地址空間的偏移地址0開始執(zhí)行指令;而有些嵌入式處理器,上電后從bootrom地址空間的最后0xFFFF_FFFC處開始執(zhí)行指令。為了避免bootrom中的版本信息放置的地址與bootrom開始執(zhí)行指令的起始地址發(fā)生沖突,現有的嵌入式處理器bootrom版本信息放置的地址大多取決于所使用的特定處理器,隨著嵌入式處理器的不同,bootrom版本信息放置的地址也不一樣。例如對于某些嵌入式處理器,將版本信息存放到bootrom地址空間的最后,而對于要求bootrom地址空間的最后部分存放指令或配置字的處理器,就將版本信息放到bootrom地址空間的前部或其他部分。
這種bootrom的版本信息的放置地址的差異,會增加bootrom后續(xù)維護工作的負擔,如果不清楚嵌入式處理器的型號及其特定的bootrom版本信息存放位置,是無法正確獲取bootrom的版本信息的,這樣對于bootrom的升級、維護、調試工作都造成了困難。另外,因為版本信息的放置地址不確定,嵌入式系統(tǒng)的開發(fā)維護人員也很難以設計一種可以通用的bootrom開發(fā)調試管理裝置,對各種嵌入式處理器的bootrom進行有效的調試、更新。
發(fā)明內容
有鑒于此,本發(fā)明的主要目的在于提供一種bootrom版本信息的設置方法,該方法能夠解決現有技術的bootrom版本信息設置方法過度依賴于不同嵌入式處理器的問題。
為達到上述目的,本發(fā)明的技術方案是這樣實現的一種啟動芯片軟件版本信息設置方法,該方法包括以下步驟在啟動芯片軟件的初始配置代碼中的跳轉指令地址和跳轉目的地址之間預留存放啟動芯片軟件版本信息的空間;將啟動芯片軟件版本信息添加至該預留空間內。
其中,存放啟動芯片軟件版本信息的空間設置有前標記和后標記。
該方法的添加啟動芯片軟件信息步驟中,進一步包括對啟動芯片軟版本信息求校驗和,將校驗和也添加至所述預留空間內。其中,校驗方式為循環(huán)冗余校驗。
本發(fā)明的啟動芯片軟件版本信息設置方法中,預留存放空間的步驟和添加版本信息步驟之間進一步包括編譯生成沒有版本信息的啟動芯片軟件,在啟動芯片軟件地址空間內查找預留空間的前后標記,獲得預留空間的具體位置。
本發(fā)明的啟動芯片軟件版本信息設置方法中,在添加版本信息步驟前進一步包括輸入啟動芯片軟件版本信息,檢驗啟動芯片軟件版本信息的正確性。
一種啟動芯片軟件版本信息設置裝置,所述裝置包括預留空間獲取模塊,接受輸入并檢驗模塊,啟動芯片軟件版本信息添加模塊,其中,預留空間獲取模塊用于從啟動芯片軟件中查找預留空間的前后標記,獲得預留空間的具體位置;接受輸入并檢驗模塊用于接受輸入的啟動芯片軟件版本信息,檢驗啟動芯片軟件版本信息的正確性;啟動芯片軟件版本信息添加模塊用于向啟動芯片軟件中添加啟動芯片軟件的版本信息。
其中,所述裝置還包括校驗和生成模塊,所述校驗和生成模塊用于生成啟動芯片軟件版本信息的校驗和。
本發(fā)明的bootrom版本信息的設置方法,按照一種預定的方式設置bootrom的版本信息,可以使得bootrom版本信息存放地址與嵌入式處理器型號無關。降低了bootrom后續(xù)維護工作的負擔。
另外,本發(fā)明的bootrom版本信息的設置裝置,能夠不考慮嵌入式處理器的型號,對所有按照本發(fā)明bootrom版本信息的設置方法設置的bootrom,均可以添加、更新其版本信息內容,使用方便。
圖1為本發(fā)明中bootrom版本信息設置方法的流程圖;圖2為本發(fā)明中bootrom版本信息設置裝置的結構簡圖。
具體實施例方式
下面結合附圖及具體實施例對本發(fā)明再作進一步詳細的說明。
如圖1所示,本發(fā)明的bootrom版本信息的設置方法,包括以下步驟(101)預留存放bootrom版本信息的空間,為預留空間設置前后標記。
對于以bootrom作為引導程序的嵌入式系統(tǒng)而言,其上電后首先需要執(zhí)行bootrom中的一段初始化指令,完成處理器及存儲器等硬件器件的配置工作,然后再引導嵌入式操作系統(tǒng)及應用程序的執(zhí)行。這段初始化指令通常源自以匯編語言文件形式存在的系統(tǒng)初始配置代碼。例如對于VxWorks系統(tǒng)而言,其匯編文件romInit.s就含有系統(tǒng)的初始配置代碼。
在系統(tǒng)初始配置代碼中一般會含有跳轉指令,使處理器跳轉到bootrom地址空間中的一個特定地址處執(zhí)行指令。例如在VxWorks系統(tǒng)中,對于PowerPC和ARM處理器,其上電后都會執(zhí)行“bl label”或“b label”指令,其中l(wèi)abel就是表示跳轉目的地址,也就是跳轉指令的下一條可執(zhí)行代碼的地址,這樣就可以在跳轉指令地址和跳轉目的地址之間留出一個預留空間??梢岳镁幾g器提供的偽指令,例如GNU C編譯器中的.fill或.byte指令,在跳轉指令之后開辟該預留空間,用來存放bootrom的版本信息。為了方便后續(xù)步驟中確定該預留空間的位置,可以為該預留空間設置前后標記,該標記可以是一個特定的字符,或者一個特定的數字。
(102)生成不含版本信息的bootrom。
bootrom的版本信息只是在最后bootrom確認完成的時候才需要添加進入,其余的過程中,并不需要時時都添加、更新該版本信息,所以,在bootrom的設置過程中,可以先只生成不含版本信息的bootrom,待bootrom的制作、更新確認完成之后,再根據版本和內容變動情況,添加合適的bootrom版本信息。
另外,為了方便bootrom的后續(xù)維護工作,可以利用本發(fā)明的設置bootrom版本信息的工具,該工具主要目的就是在需要的時候設置bootrom版本信息,因此,bootrom版本信息的設置工作也不需要在一開始就完成。
如果設置為每次都添加bootrom的版本信息,而不需要預先生成一個沒有版本信息的bootrom的情況,本步驟可以省略。
(103)查找預留空間的前后標記,獲得預留空間的具體位置。
對于一個已經編譯生成的bootrom,由于處理器型號的差異,步驟101中的預留空間雖然相對地址已經固定,但其絕對物理地址仍需定位,這種定位的方法就是查找預留空間的前后標記,具體流程是在bootrom中查找版本信息預留空間前標記,如果找到該標記,則進一步判斷是否有對應的預留空間后標記,如果成功則可以確認已經找到了預留空間。如果失敗,則確認為bootrom文件有誤。
(104)對版本信息求校驗和,將版本信息和校驗和添加入預留空間。
為bootrom版本信息求校驗和,該校驗方式可以是循環(huán)冗余校驗(CRC,Cyclic Redundancy Check),也可以采用其他的校驗方式,例如異或(XOR,eXclusive OR)校驗或求和校驗等,作為一個本發(fā)明的優(yōu)選實施例,設置校驗方式為CRC,該校驗和有利于確認bootrom版本信息添加和讀取的正確性。如果不需要確認bootrom版本信息添加和讀取的正確性的話,也可以不對其求校驗和。
然后將bootrom版本信息和版本信息的校驗和添加至該預留空間內。
在bootrom的后續(xù)維護工作中,由于采用本發(fā)明的方法,bootrom的版本信息的地址相對于跳轉指令的地址固定,只要直接查找跳轉指令的地址以及跳轉目的地址,就可以獲得bootrom版本信息的存放地址。如果bootrom版本信息的預留空間設置了前后標記,就直接查找bootrom版本信息預留空間的前后標記,也能獲得bootrom版本信息的存放地址。這樣就可以做到bootrom的版本信息存放地址與嵌入式處理器型號無關,對任何bootrom都能準確獲取版本信息。
為了方便上述bootrom版本信息的設置方法的實施,可以利用一種啟動芯片軟件版本信息設置裝置,該裝置以編譯好的含有版本信息預留空間的bootrom為處理對象。如圖2所示,該裝置包括預留空間獲取模塊,接受輸入并檢驗模塊,bootrom版本信息添加模塊,其中預留空間獲取模塊用于從bootrom地址空間中查找預留空間的前后標記,獲得預留空間的具體位置。預留空間獲取模塊在初始bootrom文件中查找版本信息預留空間前標記,如果找到該標記,則進一步判斷是否有對應的預留空間后標記,如果成功則可以確認已經找到了預留空間,否則,提示bootrom文件有誤。
接受輸入并檢驗模塊用于接受輸入的bootrom版本信息,檢驗bootrom版本信息的正確性。接受輸入并檢驗模塊提供一個人機交互界面,接受bootrom版本制作人員按照約定輸入的bootrom版本信息,例如版本名稱、版本號、編譯時間等,并檢查輸入信息的正確性,如果輸入的版本信息不是按照bootrom的約定方式或長度不正確,接受輸入并檢驗模塊將顯示版本信息不合法,提示重新輸入,直到輸入信息正確為止。
bootrom版本信息添加模塊用于向原有bootrom中添加bootrom的版本信息。
作為本發(fā)明的一個優(yōu)選實施例,該裝置還可以包括校驗和生成模塊,所述校驗和生成模塊用于計算輸入的bootrom版本信息的校驗和,該校驗和將作為后續(xù)工作中查詢bootrom版本信息時判斷信息合法性的依據,并可被添加bootrom版本信息和校驗和模塊添加進入bootrom中。
以上所述,僅為本發(fā)明的較佳實施例而已,并非用來限定本發(fā)明的保護范圍。本領域內技術人員應該能夠聯想到,設置預留空間不同的標記方式,對bootrom版本信息采用其他的校驗方法,bootrom版本信息中填入其它更多的內容,都應該屬于本發(fā)明的保護范圍。
權利要求
1.一種啟動芯片軟件版本信息設置方法,其特征在于,該方法包括以下步驟A、在啟動芯片軟件的初始配置代碼中的跳轉指令地址和跳轉目的地址之間預留存放啟動芯片軟件版本信息的空間;B、將啟動芯片軟件版本信息添加至該預留空間內。
2.根據權利要求1所述的啟動芯片軟件版本信息設置方法,其特征在于,所述步驟A的預留的存放啟動芯片軟件版本信息的空間設置有前標記和后標記。
3.根據權利要求1所述的啟動芯片軟件版本信息設置方法,其特征在于,所述步驟B中還進一步包括步驟對啟動芯片軟版本信息求校驗和,將校驗和也添加至所述預留空間內。
4.根據權利要求3所述的啟動芯片軟件版本信息設置方法,其特征在于,所述對啟動芯片軟版本信息求校驗和的校驗方式為循環(huán)冗余校驗。
5.根據權利要求2所述的啟動芯片軟件版本信息設置方法,其特征在于,步驟A與步驟B之間進一步包括編譯生成沒有版本信息的啟動芯片軟件,在啟動芯片軟件地址空間內查找預留空間的前后標記,獲得預留空間的具體位置。
6.根據權利要求1所述的啟動芯片軟件版本信息設置方法,其特征在于,所述步驟B之前進一步包括步驟輸入啟動芯片軟件版本信息,檢驗啟動芯片軟件版本信息的正確性。
7.一種啟動芯片軟件版本信息設置裝置,其特征在于所述裝置包括預留空間獲取模塊,接受輸入并檢驗模塊,啟動芯片軟件版本信息添加模塊,其中,預留空間獲取模塊用于從啟動芯片軟件中查找預留空間的前后標記,獲得預留空間的具體位置;接受輸入并檢驗模塊用于接受輸入的啟動芯片軟件版本信息,檢驗啟動芯片軟件版本信息的正確性;啟動芯片軟件版本信息添加模塊用于向啟動芯片軟件中添加啟動芯片軟件的版本信息。
8.根據權利要求7所述的啟動芯片軟件版本信息設置裝置,其特征在于,所述裝置還包括校驗和生成模塊,所述校驗和生成模塊用于生成啟動芯片軟件版本信息的校驗和。
全文摘要
本發(fā)明涉及一種啟動芯片軟件版本信息設置方法及裝置,該方法包括以下步驟在啟動芯片軟件的初始配置代碼中的跳轉指令地址和跳轉目的地址之間預留存放啟動芯片軟件版本信息的空間;將啟動芯片軟件版本信息添加至該預留空間內。通過在跳轉指令地址和跳轉目的地址之間的預留空間存放啟動芯片軟件的版本信息,本發(fā)明能夠實現啟動芯片軟件版本信息存放地址與嵌入式處理器型號無關,降低了啟動芯片軟件后續(xù)維護工作的負擔。
文檔編號G06F9/445GK101067791SQ20071011247
公開日2007年11月7日 申請日期2007年6月28日 優(yōu)先權日2007年6月28日
發(fā)明者劉一峰, 姬忠鶴, 高亞南 申請人:中興通訊股份有限公司