<dfn id="w48us"></dfn><ul id="w48us"></ul>
  • <ul id="w48us"></ul>
  • <del id="w48us"></del>
    <ul id="w48us"></ul>
  • 基于VxWorks的bootrom代碼改進

    時間:2024-07-24 05:05:23 理工畢業論文 我要投稿
    • 相關推薦

    基于VxWorks的bootrom代碼改進

    摘要:在Wind River公司開發的VxWorks嵌入式操作系統平臺上,改進交換機產品bootrom軟件的實現方式;給出實現方法和改進目的,為BSP開發人員提供一套全新的bootrom實現方案。

    1 問題的提出

    VxWorks是Wind River公司開發的一種嵌入式操作系統,具有強大的功能和友好的用戶界面。VxWorks軟件應用非常廣泛,不僅應用在網絡設備、家用電器當中,而且還應用在航天、導彈等高端領域。在網絡設備應用領域中,通常利用VxWorks來開發bootrom代碼、BSP(Boadr Support Packet)代碼以及上層的網絡協議代碼。

    通常,Bootrom軟件有以下功能:①通過串口下載操作系統映像;②通過串口升級自身映像;③通過串口下載系統配置文件、系統信息文件;④加載操作系統映像,使其正常啟動;⑤其它的輔助功能,如地址內容查看功能、址內容修改功能和bootrom菜單顯示信息控制的功能等。對于通常的bootrom代碼編譯,大多數用戶選擇使用GNU make的DOS命令來進行。因為如果bootrom不提供網口功能的話,單純的CPU驅動部分代碼量是不大的;但如果提供網口功能的話,代碼量相對較大,文件之間的內在關系比較復雜,因此,系統使用GNU make的DOS命令來編譯生成bootrom就顯得有點麻煩。Makefile文件主要是由“目標”(target)、“依賴性”(dependencies)和“動作”組成的一系列規則,而VxWorks提供的GNU make工具就是根據Makefile指定的規則來編譯和鏈接程序的。Makefile基本結構雖然簡單,但正確、靈活地運用這些規則并不是那么輕松的事情。即使根據GNU Makefile規則書寫出適當的Makefile文件,但隨著代碼的改變,Makefile還需要經常修改,這就增加了BSP開發人員的負擔。而且,對于交換產品而言,其成本控制是非常嚴格的。對于存放bootrom軟件的Flash來說,通常要求大小為512KB,這樣就需要考慮到容量的限制。

    因此,必須使用新的方法來簡化bootrom代碼編譯,而且要在保證提供網口功能的情況下,系統提供的bootrom軟件小于512KB。

    2 實現方法

    2.1 通過建立工程生成bootrom映像

    采用建立工程的方式可以有效地解決這個問題。首先依據bootrom中的BSP代碼來新建一個工程,然后將網中驅動代碼加入到建好的工程中。這樣就可以通過編譯工程實現帶有網口下載功能的bootrom軟件。但對于VxWorks嵌入式系統而言,它有自己一套規范,求bootrom軟件在加電后必須從romInit()函數開始運行,而建立工程所得的入口函數為sysInit()。因此需要增加一個系統殼代碼,這個殼代碼所要完成的任務就是加載bootrom工程的映像,并從romInit()開始執行bootrom代碼。通過建立工程來調試bootrom代碼有以下優點。

    (1)責任分明

    開發產品是一個復雜的工程,需要多人合作完成。對于CPU子系統和網口驅動系統這兩塊內容來說,更需要責任明確。通過建立工程來調試代碼,可以準確地定位錯誤文件和函數的位置。是BSP代碼出現問題,還是網口驅動代碼出現問題,可以一目了然,做到責任明確。

    (2)提高效率

    通過建立工程可以節省書寫Makefile文件時間,并可以讓VxWorks軟件的友好圖形界面這優點得到更好的體現。另外,建立工程也可以減少文件編譯排錯的難度,方便工程文件的調試以及功能的驗證,從而大大提高工作效率,加快工作進度。

    2.2 編寫殼代碼并實現加載

    建立工程生成映像文件的入口函數為sysInit(),而VxWorks規范中要求系統加電后要從romInit()函數開始運行。因此,需要設計一個方案來加載編譯工程得到的映像,而且要具備初始化CPU和SDRAM存儲空間的功能。

    首先,系統從romInit()函數中開始運行,完成CPU和SDRAM初始化,跳轉到函數romStart()運行。然后,加載第二份bootrom代碼到系統的低地址處,運行殼代碼中的sysInit()函數,并調用自己構造的解壓函數usrInit(),將壓縮后的工程映像文件解壓縮到系統高地址處,之后系統繼續運行解壓后的bootrom代碼。此時,系統開始運行sysInit()函數,調用VxWorks系統中的usrInit()函數,開始初始化系統硬件、內核以及其它外圍設備。

    殼函數usrInit()代碼如下:

    void usrInit(void){

    volatile FUNCPTR absEntry;

    if(inflate((UCHAR*)ROM_OFFSET(_binArrayStart),

    (UCHAR *)(RAM_LOW_ADRS),

    【基于VxWorks的bootrom代碼改進】相關文章:

    Bootrom功能改進經驗談03-20

    基于Rhapsody和VxWorks的自動取款機系統03-18

    基于VxWorks的多DSP系統的多任務程序設計03-18

    基于Vxworks實時操作系統的串口通信程序設計與實現03-18

    基于ARM7核處理器VxWorks系統BSP設計03-19

    基于改進的Ostu閾值的運動目標分割方法03-07

    基于改進的Kalman濾波的雷達信號PRI估計03-07

    基于員工能力的績效改進方案設計03-25

    基于嵌入式操作系統VxWorks的SCSI硬盤高速記錄系統03-18

    主站蜘蛛池模板: 亚洲午夜精品久久久久久app | 99久久免费国产精精品| 99在线观看视频免费精品9| 亚洲一区二区三区在线观看精品中文| 2022免费国产精品福利在线| 亚洲国产精品成人久久蜜臀 | 国产成人久久精品麻豆一区| 国内精品久久久久影院一蜜桃| 久久精品成人| 四虎国产精品永久地址49| 人妻少妇精品视中文字幕国语| 久久精品国产亚洲精品| 午夜精品在线观看| 国产精品无码成人午夜电影| 亚洲麻豆精品国偷自产在线91| 国产精品视频色视频| 国产原创精品视频| 精品无码av一区二区三区| 亚洲AV永久无码精品一区二区 | 亚洲韩国精品无码一区二区三区| 国产精品一区三区| 视频二区国产精品职场同事| 国产美女精品一区二区三区| 亚洲韩国精品无码一区二区三区 | 国产亚洲精品a在线观看app| 欧美精品亚洲精品日韩传电影| 日本精品久久久久久久久免费| 99久久婷婷国产综合精品草原| 99re这里只有精品热久久| 精品无码一区二区三区亚洲桃色| 亚洲国产精品丝袜在线观看| 精品久久人人做人人爽综合| 国产精品99爱免费视频| 热99re久久国超精品首页| 国产精品91在线| 精品国产v无码大片在线观看| 亚洲AV永久无码精品成人| 亚洲欧洲自拍拍偷精品 美利坚| 日本五区在线不卡精品| 免费看污污的网站欧美国产精品不卡在线观看| 99R在线精品视频在线播放|