摘要:以VxWorks嵌入式實時操作系統(tǒng)為例,介紹了改進啟動代碼(Bootrom)功能的四點經(jīng)驗:(1)具備故障保護功能的Bootrom的自我在線更新;(2)增加重啟功能;(3)自動運行應用軟件;(4)多種應用軟件的選擇。
VxWorks是美國WindRiver System公司于1983年設計開發(fā)后個運行在目標機上的高性能、可裁減的嵌入式實時操作系統(tǒng)(RTOS)。它是一種功能強大而且比較復雜的操作系統(tǒng),包括了進程管理、存儲管理、設備管理、文件系統(tǒng)管理、網(wǎng)絡協(xié)議及系統(tǒng)應用等幾部分。VxWorks為程序員提供了高效的實時多任務調(diào)度、中斷管理、實時的系統(tǒng)資源以及實時的任務間通信。其核心功能主要有微內(nèi)核、任務間通信機制、網(wǎng)絡支持、文件系統(tǒng)和I/O管理、POSIX標準實時擴展以及C++等其他標準支持。在各種CPU平臺上提供了統(tǒng)一的編程接口和一致的運行特性,盡可能地屏蔽不同CPU之間的底層差異。應用程序員可以將盡可能多的精力放在應用程序本身,而不必關心系統(tǒng)資源的管理。VxWorks以其良好的可靠性和卓越的實時性被廣泛地應用在通信、軍事、航空、航天等高精類技術及實時要求極高的領域中,如衛(wèi)星通信、彈道制導、飛機導航等。
設計師通常利用VxWorks開發(fā)Bootrom代碼。Bootrom相當于PC機中的BIOS,它完成對加載過程中所需設備的初始化及驅(qū)動;然后,通過某種可選擇的通信手段(如網(wǎng)口、串口),將VxWorks內(nèi)核加載。VxWorks內(nèi)核相關于PC機上的操作系統(tǒng),如Linux、Windows。此外,Bootrom還提供了一些輔助功能,如地址內(nèi)容查看、地址內(nèi)容修改和Bootrom菜單顯示信息控制等功能。但是,在實際應用中,這些功能不夠豐富,便利性不足。本文介紹了幾點筆者在工作中行之有效的改進Bootrom功能的經(jīng)驗。
1 具備故障保護功能的Bootrom的自我在線更新
Bootrom一般以二進制文件的方式保存在非易失懷存儲介質(zhì),例如Flash、CF卡、EPROM中。通常需要仿無休止器、燒結器或JTAG工具等才能將代碼燒入這類介質(zhì),在實際應用中非常不便。以Flash為例介紹如何在線更新Bootrom。
首先,為了做到故障保護,防止在更新過程中發(fā)生更新文件出錯、斷電等災難性故障,Bootrom的數(shù)據(jù)必須在更新之前備份在Flash的另一區(qū)域。因此,F(xiàn)lash中必須存在兩片物理區(qū)域,暫且命名為PA和PB,每片512KB(假設Bootrom文件小于512KB)。兩片物理區(qū)域的起始地址可以互換,其中一片區(qū)域的起始地址必須為系統(tǒng)的上電啟動地址,這個地址因處理器而異,例如,PowerPC體系結構的處理器的啟動地址一般是0xfff00100,而MIPS體系結構的處理器的啟動地址是0xbfc00000。在邏輯上,以啟動地址開始的區(qū)域為主Boot區(qū),另一片區(qū)域為備Boot區(qū)。
為了實現(xiàn)地址互聯(lián)換,在CPU模塊和Flash芯片之間,增加了一片CPLD(可編程邏輯器件)和一個跳線或撥號開關,開關信號JP輸入到CPLD。CPU訪問Flash的地址信號和片選信號經(jīng)過CPLD進行地址互換,再到Flash芯片。如果不跳線(默認情況),JP信號為高,則PA的起始地址為啟動地址,PA為主Boot區(qū),PB為備Boot區(qū);否則,JP信號為低,PB的起始地址為啟動地址,PB為主Boot區(qū),PA為備Boot區(qū)。默認情況下,PA為主Boot區(qū)。如圖1。
如果系統(tǒng)中有兩片F(xiàn)lash芯片,可以不用CPLD,選用另一種地址互換方式,如圖2。兩個二選一邏輯實現(xiàn)兩片F(xiàn)lash片選信號(CS)的互換,從而實現(xiàn)了地址的互換。
地址互換機制屏蔽了PA和PB實際物理位置的差別,給底層軟件提供了一個統(tǒng)一的接口,帶來的好處不言而喻。Bootrom數(shù)據(jù)總線是從主Boot區(qū)備份到備Boot區(qū),系統(tǒng)總是從主Boot區(qū)啟動。
其次,編寫Flash擦寫驅(qū)動函數(shù)。Flash是一種讀寫非對稱器件,讀數(shù)據(jù)與普通器件一樣,比較簡單;而寫必須根據(jù)芯片廠商提供的算法,先擦除欲寫入數(shù)據(jù)的區(qū)域,以扇區(qū)(Sector)為單位,然后寫入數(shù)據(jù)。函數(shù)flashUpdate(char *sourceAddr,char *destAddr,int Length)集成了擦除和寫入兩個步驟。
再次,在文件bootConfig.cr Bootrom操作接口函數(shù)bootCmdLoop()中增加新命令“u”(update的編寫)。
switch(*(pLine++)){
……
case 'u'; /*更新Bootrom*/
…… /*下載更新代碼并更新*/
break;
……
}
“u”命令的實現(xiàn)流程如圖3。除了flashUpdate()之外,其它函數(shù)都由VxWorks本身提供。如果更新挫敗,則改變JP設置,從備份Bootrom啟動,再次更新Bootrom或運行應用軟件。
2 增加重啟功能
VxWorks的Bootrom用戶命令缺少重啟功能,給調(diào)試和實際應用帶來諸多不便。與Bootrom在線更新方法相同,增加這項功能其實并不難,只要在函數(shù)bootCmdLoop()中增加新命令“r”(reset的縮寫),在命令中調(diào)用系統(tǒng)重啟函數(shù)sysReboot()即可。SysReboot()由設計師根據(jù)系統(tǒng)的不同自行編寫。
Switch(*(pLine++)){
……
case 'r'; /*重啟系統(tǒng)*/
sysReboot();
break;
……
}
舉一反三,還可以根據(jù)需要在Bootrom中增加許多自己的命令。完成之后,不要忘了在Bootrom命令解釋函數(shù)bootHelp()中添加新增命令的用途、用法等幫助信息。
3 自動運行應用軟件
在實際應用中,一般將上層軟件和VxWorks映象鏈接在一起,暫且稱之為應用程序。默認情況下,當Bootrom運行后,它會倒計時7s,然后從啟動參數(shù)(BOOT_LINE)指定的路徑下載應用程序。但是,因為Bootrom提供了啟動參數(shù)修改命令,啟動參數(shù)可能由于某些原因發(fā)生更改。例如調(diào)試時需要從FTP服務器下載,或者疏忽好奇等,給下次應用帶來不少麻煩,很可能出現(xiàn)應用程序下載挫敗等故障。
為了保證自動啟動總是從固定路徑下載應用程序,而不受啟動參數(shù)的影響,需要修改文件bootConfig.c中的自動啟動函數(shù)autoboot()。例如,自動啟動總是從CF卡讀取應用程序。
if(bytesRead ==0){ /*倒計時期間沒有輸入*/
LoadApplicationImage();/*復制應用程序映象到起始地址為Entry的內(nèi)存中*/
go((FUNCPTR)ENTRY;/*從Entry地址開始運行*/
}
else{
……
}
Entry是應用程序的入口地址,VxWorks系統(tǒng)中該值是RAM_LOW_ADRS。LoadApplicationImage()函數(shù)將應用程序映旬從CF卡復制到起始地址為Entry的內(nèi)存中,然后將PC指針指向該地址,啟動系統(tǒng)。如果在倒計時期間有字符輸入,則進入Bootrom的命令界面,用戶可以修改啟動參數(shù),然后按“@”從啟動參數(shù)指定的路徑下載程序,而不影響調(diào)試,但是更改后的參數(shù)不會影響下次自動啟動的下載路徑。
4 多種應用軟件的選擇
在通信領域,許多產(chǎn)品的硬件平臺其實相同,區(qū)別在于應用軟件。不同的軟件塑造出了一個個特色鮮明的產(chǎn)品。如果能夠?qū)⒉煌能浖傻揭粋€硬件平臺上,由用戶在啟動時選擇,那么這個產(chǎn)品就擁有一機多能的特性,大大增強了產(chǎn)品的市場競爭力。
退而言之,即使硬件平臺只適合于一種應用軟件,將故障檢測程序作為另一種應用軟件,會帶給產(chǎn)品測試和現(xiàn)場維修人員諸多的方便。
參考以上三點經(jīng)驗,在Bootrom中增加這項功能并非難事。以兩個應用軟件為例,在函數(shù)bootCmdLoop()中增加新命令“o”(other的編寫),如下所示。
switch(*(pLine++)){
……
case 'o': /*啟動另一應用軟件*/
LoadAnoterApplicationImage();/*復制另一應用程序映象到起始地址為Entry的內(nèi)存中*/
AutoSystemVersionSet();/*詢問用戶是否將另一應用軟件設置為默認啟動*/
go((FUNCPTR)Entry);/*從Entry地址開始運行*/
break;
……
}
圖3
在Bootrom代碼中定義一個變量defaultVersion,用于記錄誰是默認的啟動軟件,該變量保存在Flash等非易失媒質(zhì)中。上電后,如果在倒計暑期間沒有任何輸入,系統(tǒng)自動啟動defaultVersion指定的應用軟件;否則,用戶進入命令界面。如果鍵入“o”命令,Bootrom調(diào)用函數(shù)LoadAnotherApplicationImage()將另一應用程序映象復制到起始地址為Entry的內(nèi)存區(qū)域,然后詢問用戶是否希望將另一應用程序設置為默認啟動;如果用戶回答“是”,更改defaultVersion值;否則,defaultVersion值不變。最后運行當前選定的應用軟件。
上述的幾點經(jīng)驗大部分是修改文件bootConfig.c的代碼。因為bootConfig.c是一個公用文件,為了不影響其它底層軟件的開發(fā),建議將它復制到當前Bootrom開發(fā)目錄下,并且在Makefile文件中增加定義:BOOTCONFIG=bootConfig.c。
嵌入式系統(tǒng)開發(fā)需要經(jīng)常開辟新的思路,一些微小的簡單改動通常能夠帶給產(chǎn)品新的功能和特征。啟動代碼是嵌入式系統(tǒng)的重要組成部分。筆者的以上四點經(jīng)驗在PowerPC處理器(MPC8260)平臺和MIPS處理器(RM7000A)平臺上得到了驗證,希望對其它系統(tǒng)的啟動代碼的開發(fā)有所借鑒和啟迪。
- Boot(35126)
- 進經(jīng)驗談(6686)
相關推薦
淺談zynq啟動,BootROM和FSBL等的執(zhí)行過程


2013D題 射頻寬帶放大器 全國一等獎設計方案
ARM嵌入式軟件編程經(jīng)驗談
FIFO經(jīng)驗談——來自華為內(nèi)部
FPGA 牛人經(jīng)驗談
FPGA幾個入門資料
FPGA牛人經(jīng)驗談
PCB布線經(jīng)驗談
PCB設計經(jīng)驗談
PCB設計經(jīng)驗談。
Protel 99 PCB設計經(jīng)驗談
TI電子書免費下載——《電源設計經(jīng)驗談》
VxWorks常用的Bootrom類型有哪些
[下載]超強PCB布線設計經(jīng)驗談附原理圖(1-6章)
[下載]超強PCB布線設計經(jīng)驗談附原理圖(1-6章)
[資料分享]+Android軟件安全審計及漏洞修復經(jīng)驗談
fpga經(jīng)驗談
fpga經(jīng)驗談(西安大唐電信)
fpga經(jīng)驗談分享
pcb設計經(jīng)驗談
pcb設計經(jīng)驗談 PDF資料
protel99se中文版教程
~~~~~21電源網(wǎng)的~~學電的可以參考下 順便拿點好東西
【下載】《電源設計經(jīng)驗談》-----TI工程師
國外牛人撰寫—電源設計經(jīng)驗談
如何使用TMS320LF2407A的bootrom
如何學好FPGA(大師經(jīng)驗談)絕對經(jīng)典!
工程師經(jīng)驗分享:PCB布線經(jīng)驗談zz
服務器選型經(jīng)驗談
維修經(jīng)驗談,軟驅(qū)故障巧解決
藍牙模塊:選擇經(jīng)驗談
西安大唐電信_fpga經(jīng)驗談
請問可以改BOOTROM里的bootloader程序嗎
超強PCB布線設計經(jīng)驗談附原理圖
超強PCB布線設計經(jīng)驗談附原理圖(2)
超強PCB布線設計經(jīng)驗談附原理圖(3)
超強PCB布線設計經(jīng)驗談附原理圖(4)
超強PCB布線設計經(jīng)驗談附原理圖(5)
超強PCB布線設計經(jīng)驗談附原理圖(6)
基于VxWorks的bootrom代碼改進

PCB布線設計經(jīng)驗談附原理圖(第一章)


PCB布線設計經(jīng)驗談附原理圖(第二章)


PCB布線設計經(jīng)驗談附原理圖(第三章)


PCB布局設計經(jīng)驗談附原理圖(第四章)


PCB布線設計經(jīng)驗談附原理圖(第五章)


PCB布線設計經(jīng)驗談附原理圖(第六章)


PCB布線設計經(jīng)驗談附原理圖(第四章)


PLC使用經(jīng)驗談

PLC使用經(jīng)驗談

局域網(wǎng)測試及故障排除經(jīng)驗談——傳統(tǒng)而經(jīng)典的技術

自制駐波表經(jīng)驗談(含電路圖)

I2C彩電總線維修經(jīng)驗談

這個冬天看電影吧!HTPC配置選擇經(jīng)驗談

充分利用 FTP分類賬戶設置經(jīng)驗談

高清PMP選購經(jīng)驗談

Protel繪圖經(jīng)驗談

VxWorks的bootrom代碼改進解析

焊接工藝技巧與電烙鐵使用經(jīng)驗談,Welding skills

50條電源設計的經(jīng)驗詳細說明

老工程師經(jīng)驗談,高速運算放大器電路PCB布線資料下載

評論