《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 業界動態 > Bootrom功能改進經驗談

Bootrom功能改進經驗談

2008-08-04
作者:王 江

??? 摘 要: 以VxWorks嵌入式實時操作系統為例,介紹了改進啟動代碼(Bootrom)功能的四點經驗:(1)具備故障保護功能的Bootrom的自我在線更新;(2)增加重啟" title="重啟">重啟功能;(3)自動運行應用軟件" title="應用軟件">應用軟件;(4)多種應用軟件的選擇。
??? 關鍵詞: Bootrom? 嵌入式實時操作系統? FTP

?

??? VxWorks 是美國 Wind River System 公司于1983年設計開發的一個運行在目標機上的高性能、可裁減的嵌入式實時操作系統(RTOS)。它是一種功能強大而且比較復雜的操作系統,包括了進程管理、存儲管理、設備管理、文件系統管理、網絡協議及系統應用等幾部分。VxWorks為程序員提供了高效的實時多任務調度、中斷管理、實時的系統資源以及實時的任務間通信。其核心功能主要有微內核、任務間通信機制、網絡支持、文件系統和I/O管理、POSIX標準實時擴展以及C++等其他標準支持。在各種CPU平臺上提供了統一的編程接口和一致的運行特性,盡可能地屏蔽不同CPU 之間的底層差異。應用程序" title="應用程序">應用程序員可以將盡可能多的精力放在應用程序本身,而不必關心系統資源的管理。VxWorks以其良好的可靠性和卓越的實時性被廣泛地應用在通信、軍事、航空、航天等高精尖技術及實時性要求極高的領域中,如衛星通信、彈道制導、飛機導航等。
??? 設計師通常利用VxWorks開發Bootrom代碼。Bootrom相當于PC機中的BIOS,它完成對加載過程中所需設備的初始化及驅動;然后,通過某種可選擇的通信手段(如網口、串口),將VxWorks內核加載。VxWorks內核相當于PC機上的操作系統,如Linux、Windows。此外,Bootrom還提供了一些輔助功能,如地址內容查看、地址內容修改和Bootrom菜單顯示信息控制等功能。但是,在實際應用" title="實際應用">實際應用中,這些功能不夠豐富,便利性不足。本文介紹了幾點筆者在工作中行之有效的改進Bootrom功能的經驗。
1 具備故障保護功能的Bootrom的自我在線更新
??? Bootrom一般以二進制文件的方式保存在非易失性存儲介質,例如Flash、CF卡、EPROM中。通常需要仿真器、燒結器或JTAG工具等才能將代碼燒入這類介質,在實際應用中非常不便。以Flash為例介紹如何在線更新Bootrom。
??? 首先,為了做到故障保護,防止在更新過程中發生更新文件出錯、斷電等災難性故障,Bootrom的數據必須在更新之前備份在Flash的另一區域。因此,Flash中必須存在兩片物理區域,暫且命名為PA和PB,每片512KB(假設Bootrom文件小于512KB)。兩片物理區域的起始地址可以互換,其中一片區域的起始地址必須為系統的上電啟動地址,這個地址因處理器而異,例如, PowerPC體系結構的處理器的啟動地址一般是0xfff00100,而MIPS體系結構的處理器的啟動地址是0xbfc00000。在邏輯上,以啟動地址開始的區域為主Boot區,另一片區域為備Boot區。
??? 為了實現地址互換,在CPU模塊和Flash芯片之間,增加了一片CPLD(可編程邏輯器件)和一個跳線或撥號開關,開關信號JP輸入到CPLD。CPU訪問Flash的地址信號和片選信號經過CPLD進行地址互換,再到Flash芯片。如果不跳線(默認情況),JP信號為高,則PA的起始地址為啟動地址,PA為主Boot區,PB為備Boot區;否則,JP信號為低,PB的起始地址為啟動地址,PB為主Boot區,PA為備Boot區。默認情況下,PA為主Boot區。如圖1。

?


?? 如果系統中有兩片Flash芯片,可以不用CPLD,選用另一種地址互換方式,如圖2。兩個二選一邏輯實現兩片Flash片選信號(CS)的互換,從而實現了地址的互換。

?


??? 地址互換機制屏蔽了PA和PB實際物理位置的差別,給底層軟件提供了一個統一的接口,帶來的好處不言而喻。Bootrom數據總是從主Boot區備份到備Boot區,系統總是從主Boot區啟動。
??? 其次,編寫Flash擦寫驅動函數。Flash是一種讀寫非對稱器件,讀數據與普通器件一樣,比較簡單;而寫必須根據芯片廠商提供的算法,先擦除欲寫入數據的區域,以扇區(Sector)為單位,然后寫入數據。函數flashUpdate(char *sourceAddr, char *destAddr, int Length)集成了擦除和寫入兩個步驟。
??? 再次,在文件bootConfig.c的Bootrom命令操作接口函數bootCmdLoop()中增加新命令“u”(update的縮寫)。
??? switch (*(pLine++)){
??? ……
????? ?case ‘u’:??/* 更新Bootrom */
??????????? ?……???/* 下載更新代碼并更新 */
???????break;
??? ……
??? }
??? “u”命令的實現流程如圖3。除了flashUpdate()之外,其它函數都由VxWorks本身提供。如果更新失敗,則改變JP設置,從備份Bootrom啟動,再次更新Bootrom或運行應用軟件。

?

2 增加重啟功能

??? VxWorks的Bootrom用戶命令缺少重啟功能,給調試和實際應用帶來諸多不便。與Bootrom在線更新方法相同,增加這項功能其實并不難,只要在函數bootCmdLoop()中增加新命令“r”(reset的縮寫),在命令中調用系統重啟函數sysReboot()即可。sysReboot()由設計師根據系統的不同自行編寫。
??? switch (*(pLine++)){
??? ……
????? ??case ‘r’:?????/* 重啟系統 */
?????????? ???sysReboot();
????? ??break;
??? ……
??? }
??? 舉一反三,還可以根據需要在Bootrom中增加許多自己的命令。完成之后,不要忘了在Bootrom命令解釋函數bootHelp()中添加新增命令的用途、用法等幫助信息。
3 自動運行應用軟件
??? 在實際應用中,一般將上層軟件和VxWorks映象" title="映象">映象鏈接在一起,暫且稱之為應用程序。默認情況下,當Bootrom運行后,它會倒計時7s,然后從啟動參數(BOOT_LINE)指定的路徑下載應用程序。但是,因為Bootrom提供了啟動參數修改命令,啟動參數可能由于某些原因發生更改。例如調試時需要從FTP服務器下載,或者疏忽好奇等,給下次應用帶來不少麻煩,很可能出現應用程序下載失敗等故障。
??? 為了保證自動啟動總是從固定路徑下載應用程序,而不受啟動參數的影響,需要修改文件bootConfig.c中的自動啟動函數autoboot()。例如,自動啟動總是從CF卡讀取應用程序。
??? if (bytesRead == 0) {??/*倒計時期間沒有輸入 */
????? ??LoadApplicationImage();?/*復制應用程序映象到起始地址為Entry的內存中 */
????? ??go ((FUNCPTR ) Entry); /*從Entry地址開始運行 */
??? }
??? else{
????? ??……
??? }
??? Entry是應用程序的入口地址,VxWorks系統中該值是RAM_LOW_ADRS。LoadApplicationImage()函數將應用程序映象從CF卡復制到起始地址為Entry的內存中,然后將PC指針指向該地址,啟動系統。如果在倒計時期間有字符輸入,則進入Bootrom的命令界面,用戶可以修改啟動參數,然后按“@”從啟動參數指定的路徑下載程序,而不影響調試,但是更改后的啟動參數不會影響下次自動啟動的下載路徑。
4 多種應用軟件的選擇
??? 在通信領域,許多產品的硬件平臺其實相同,區別在于應用軟件。不同的軟件塑造出了一個個特色鮮明的產品。如果能夠將不同的軟件集成到一個硬件平臺上,由用戶在啟動時選擇,那么這個產品就擁有一機多能的特性,大大增強了產品的市場競爭力。
??? 退而言之,即使硬件平臺只適合于一種應用軟件,將故障檢測程序作為另一種應用軟件,會帶給產品測試和現場維修人員諸多的方便。
??? 參考以上三點經驗,在Bootrom中增加這項功能并非難事。以兩個應用軟件為例,在函數bootCmdLoop()中增加新命令“o”(other的縮寫),如下所示。
??? switch (*(pLine++)){
??? ……
????? ??case 'o':????? /*啟動另一應用軟件*/
?????????? ???LoadAnotherApplicationImage();?? /*復制另一應用程序映象到起始地址為Entry的內存中*/
?????????? ???AutoSystemVersionSet(); ? /*詢問用戶是否將另一應用軟件設置為默認啟動*/
?????????? ???go ((FUNCPTR ) Entry ); /*從Entry地址開始運行*/
????? ??break;
??? ……
??? }
??? 在Bootrom代碼中定義一個變量defaultVersion,用于記錄誰是默認的啟動軟件,該變量保存在Flash等非易失媒質中。上電后,如果在倒計時期間沒有任何輸入,系統自動啟動defaultVersion指定的應用軟件;否則,用戶進入命令界面。如果鍵入“o”命令,Bootrom調用函數LoadAnotherApplicationImage()將另一應用程序映象復制到起始地址為Entry的內存區域,然后詢問用戶是否希望將另一應用程序設置為默認啟動;如果用戶回答“是”,更改defaultVersion值;否則,defaultVersion值不變。最后運行當前選定的應用軟件。
??? 上述的幾點經驗大部分是修改文件bootConfig.c的代碼。因為bootConfig.c是一個公用文件,為了不影響其它底層軟件的開發,建議將它復制到當前Bootrom開發目錄下,并且在Makefile文件中增加定義:BOOTCONFIG=bootConfig.c。
??? 嵌入式系統開發需要經常開辟新的思路,一些微小的簡單改動通常能夠帶給產品新的功能和特征。啟動代碼是嵌入式系統的重要組成部分。筆者的以上四點經驗在PowerPC處理器(MPC8260)平臺和MIPS處理器(RM7000A)平臺上得到了驗證,希望對其它系統的啟動代碼的開發有所借鑒和啟迪。
參考文獻
1 Windriver Inc. VxWorks BSP Developer's Guide, 2002
2 Windriver Inc. VxWorks Programmer's Guide, 2002

本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:aet@chinaaet.com。
热re99久久精品国产66热_欧美小视频在线观看_日韩成人激情影院_庆余年2免费日韩剧观看大牛_91久久久久久国产精品_国产原创欧美精品_美女999久久久精品视频_欧美大成色www永久网站婷_国产色婷婷国产综合在线理论片a_国产精品电影在线观看_日韩精品视频在线观看网址_97在线观看免费_性欧美亚洲xxxx乳在线观看_久久精品美女视频网站_777国产偷窥盗摄精品视频_在线日韩第一页
  • <strike id="ygamy"></strike>
  • 
    
      • <del id="ygamy"></del>
        <tfoot id="ygamy"></tfoot>
          <strike id="ygamy"></strike>
          欧美视频一区二区三区四区| 国产婷婷色一区二区三区四区| 欧美日韩一区二区在线观看视频| 欧美视频免费在线| 午夜激情一区| 99精品免费| 久久夜色精品一区| 久久综合久久综合这里只有精品| 黑人极品videos精品欧美裸| 国产一区二区精品久久| 毛片一区二区| 欧美韩国一区| 一区二区在线视频| 欧美日韩一区二区免费视频| 亚洲图片在线| 中日韩美女免费视频网站在线观看| 国产精品高清免费在线观看| 中文日韩在线视频| 久久亚洲精品一区| 亚洲在线一区二区| 国产性天天综合网| 亚洲精品免费在线观看| 亚洲理论在线| 一区二区三区 在线观看视频| 欧美视频一区二区三区四区| 欧美另类在线观看| 欧美 日韩 国产在线| 欧美性久久久| 在线看片成人| 国产日韩欧美中文| 亚洲美女视频在线观看| 蜜桃精品一区二区三区| 国精产品99永久一区一区| 亚洲国产精品va在线看黑人动漫| 欧美精品免费观看二区| 久久一区亚洲| 欧美日韩国产色视频| 黄色精品在线看| 国产欧美日韩视频一区二区三区| 国产精品视频精品视频| 欧美日韩精品综合在线| 雨宫琴音一区二区在线| 亚洲国产毛片完整版| 国产精品日日做人人爱| 亚洲国产精选| 国产精品永久在线| 亚洲人屁股眼子交8| 久久精品30| 国产一区二区丝袜高跟鞋图片| 国产老肥熟一区二区三区| 国产精品专区h在线观看| 日韩网站在线看片你懂的| 午夜亚洲性色视频| 欧美一级大片在线免费观看| 欧美成人免费播放| 国产在线欧美日韩| 国产亚洲在线| 亚洲在线观看视频| 国产视频自拍一区| 亚洲精品视频在线| 欧美综合国产| 99精品国产99久久久久久福利| 久久精品国产在热久久| 亚洲国产欧洲综合997久久| 欧美三级视频在线观看| 国内精品久久久久久久影视麻豆| 黄色一区二区三区| 久久激情综合网| 一本一本久久a久久精品综合麻豆| 亚洲一区二区欧美| 亚洲视频一区二区在线观看| 欧美成人一区二区三区| 国产精品久久久久免费a∨大胸| 国产偷国产偷亚洲高清97cao| 久久久综合香蕉尹人综合网| 亚洲二区精品| 久久三级视频| 久久久久女教师免费一区| 欧美大胆成人| 国产精品视频精品| 在线观看欧美亚洲| 国产日韩精品久久| 亚洲永久精品国产| 亚洲视频精选| 国产一区二区三区在线观看精品| 亚洲高清电影| 精品av久久久久电影| 亚洲精品国产精品国自产在线| 国产精品久久一区主播| 亚洲精品婷婷| 免费中文字幕日韩欧美| 欧美国产免费| 国产精品女主播在线观看| 欧美一区综合| 欧美日韩免费观看一区二区三区| 久久国内精品自在自线400部| 欧美激情第五页| 亚洲国产高清在线| 欧美精品999| 亚洲三级性片| 国产精品热久久久久夜色精品三区| 99re热这里只有精品视频| 亚洲一区综合| 亚洲香蕉成视频在线观看| 欧美美女bb生活片| 在线欧美亚洲| 亚洲一区二区不卡免费| 欧美三级在线| 久久国产精品99精品国产| 巨胸喷奶水www久久久免费动漫| 国产日韩久久| 国内精品久久久久久久影视麻豆| 亚洲高清视频中文字幕| 国产美女搞久久| 亚洲国产一区二区三区高清| 久久久国产精品一区| 欧美日韩精品一本二本三本| 久久精品人人爽| 在线观看久久av| 久久综合九色欧美综合狠狠| 久久只有精品| 国产乱肥老妇国产一区二| 亚洲人成高清| 国产日韩欧美视频| 欧美与欧洲交xxxx免费观看| 亚洲精品美女免费| 亚洲第一福利在线观看| 国产精品久久久免费| 国产一级精品aaaaa看| 亚洲成在线观看| 午夜在线视频一区二区区别| 在线看片一区| 日韩午夜中文字幕| 极品av少妇一区二区| 欧美激情精品久久久久久大尺度| 在线成人免费视频| 亚洲日本无吗高清不卡| 亚洲小说区图片区| 国产精品久久一区主播| 国产精品一区免费观看| 激情综合在线| 欧美揉bbbbb揉bbbbb| 一本色道久久综合狠狠躁篇怎么玩| 亚洲一区二区在线看| 国产午夜精品全部视频播放| 国产精品任我爽爆在线播放| 老巨人导航500精品| 国产一区二区三区日韩| 韩国女主播一区二区三区| 国产精品丝袜91| 久久久午夜精品| 欧美日韩一区二区三区高清| 国产精品五月天| 亚洲免费大片| 国产精品久久国产三级国电话系列| 老司机亚洲精品| 狠狠色伊人亚洲综合成人| 欧美一区二区三区四区在线| 亚洲激情在线| 国产一区二区观看| 国产精品久久久久久久免费软件| 国产精品igao视频网网址不卡日韩| 久久一区激情| 亚洲国产影院| 一区二区三区不卡视频在线观看| 久久亚洲精品一区二区| 国产精品久久久久久久久久久久久久| 国产视频一区二区三区在线观看| 狠狠狠色丁香婷婷综合久久五月| 好看的日韩av电影| 免费看av成人| 99精品视频免费在线观看| 国产精品美女在线| 欧美日韩喷水| 中文高清一区| 免费日韩精品中文字幕视频在线| 亚洲国产91| 亚洲黄色在线观看| 国产拍揄自揄精品视频麻豆| 国产精品一区久久久久| 欧美在线播放一区二区| 国产精品国产三级国产aⅴ9色| 欧美经典一区二区| 亚洲在线不卡| 国产精品成人午夜| 国产香蕉97碰碰久久人人| 欧美激情一区二区三区全黄| 久久久99免费视频| 亚洲人成网站999久久久综合| 久久久久久电影| 国产日本欧美一区二区| 欧美精品在线视频观看| 一区二区日韩| 久久婷婷综合激情| 樱桃国产成人精品视频| 红桃视频国产一区| 欧美一级日韩一级| 欧美先锋影音| 国产精品免费福利| 欧美视频日韩视频| 国内揄拍国内精品久久| 伊人久久av导航| 久久精品水蜜桃av综合天堂| 欧美一区日本一区韩国一区| 久久精品一级爱片| 国产精品福利久久久| 国产在线不卡视频| 亚洲电影免费观看高清完整版| 一区二区三区在线免费视频| 国产精品你懂的在线| 欧美视频在线观看免费网址| 久久综合成人精品亚洲另类欧美| 国产精品日韩一区二区三区| 日韩一级网站| 国产精品区二区三区日本| 免费不卡中文字幕视频| 欧美日韩国语| 国产日本欧美一区二区| 欧美日产在线观看| 亚洲一区二区三区四区在线观看| 久久精品男女| 久久米奇亚洲| 欧美国产一区二区三区激情无套| 亚洲欧洲精品一区| 伊人影院久久| 一区二区三区不卡视频在线观看| 欧美激情精品久久久久久大尺度| 欧美日韩一区二区在线播放| 久久久噜久噜久久综合| 国产精品高清一区二区三区| 久久久综合视频| 亚洲欧美999| 久久精品理论片| 狠狠色丁香久久综合频道| 国产精品区一区二区三区| 欧美一区二区三区免费看| 韩国免费一区| 欧美国产日本在线| 欧美人与性禽动交情品| 欧美日韩网址| aa亚洲婷婷| 久久欧美中文字幕| 欧美mv日韩mv国产网站| 欧美一区二区精品在线| 久久久久国产一区二区三区四区| 国产视频一区二区在线观看| 9l国产精品久久久久麻豆| 国产精品羞羞答答xxdd| 欧美 日韩 国产在线| 99re8这里有精品热视频免费| 亚洲国产色一区| 欧美日韩一区三区四区| 亚洲制服丝袜在线| 久久一区二区三区超碰国产精品| 99成人在线| 欧美三级黄美女| 一区二区三区你懂的| 欧美一区二区三区在线播放| 欧美视频一区二| 国产精品区免费视频| 欧美www视频| 欧美久久久久久| 国产精品国产福利国产秒拍| 一区二区三区免费观看| 久久久精品日韩欧美| 欧美一级在线播放| 欧美激情第1页| 欧美三级网页| 久久亚洲欧洲| 久久精品国产69国产精品亚洲| 亚洲欧美清纯在线制服| 亚洲电影专区| 国产精品久久久久国产a级| 国产美女在线精品免费观看| 欧美日韩综合另类| 亚洲黄色片网站| 欧美中文字幕第一页| 久久亚洲影院| 亚洲午夜精品久久久久久app| 欧美日韩精品免费观看视一区二区| 欧美a级理论片| 日韩一区二区精品葵司在线| 亚洲一区自拍| 亚洲综合国产精品| 欧美日韩一区二区三区四区五区| 亚洲视频精选在线| 亚洲第一成人在线| 久久精品国产久精国产思思| 久久久久久久综合色一本| 亚洲一区三区在线观看| 欧美视频不卡| 亚洲大片精品永久免费| 伊人成综合网伊人222| 亚洲婷婷综合色高清在线| 欧美伊人久久大香线蕉综合69| 亚洲国产天堂久久国产91| 日韩网站在线观看| 亚洲国产婷婷香蕉久久久久久99| 久久久久久久久久久久久久一区| 久久九九久精品国产免费直播| 欧美肉体xxxx裸体137大胆| 欧美中文字幕精品| 欧美人与性禽动交情品| 国产精品第三页| 激情文学综合丁香| 伊人精品视频| 亚洲综合国产精品| 亚洲国产精品久久久久婷婷884| 国语自产精品视频在线看一大j8| 久久精品国产69国产精品亚洲| 国产精品二区影院| 欧美高清在线观看| 久久精品日韩欧美| 久久婷婷国产麻豆91天堂| 国产女人水真多18毛片18精品视频| 亚洲精品在线观看免费| 欧美黄在线观看| 欧美一区二区三区日韩| 夜夜嗨av色综合久久久综合网| 欧美日韩在线电影| 国产午夜亚洲精品羞羞网站| 欧美好吊妞视频| 亚洲一区二三| 亚洲欧美在线免费| 欧美久久久久免费| 欧美日本高清视频| 韩日在线一区| 99国产一区二区三精品乱码|