<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > VxWorks移植到AT91RM9200的BSP定制過程

          VxWorks移植到AT91RM9200的BSP定制過程

          作者: 時間:2010-12-14 來源:網(wǎng)絡 收藏

          是嵌入式實時操作系統(tǒng),具有高性能、可裁減性好等特點,能支持多種微處理器(如PowerPC、X85、ARM、SPARC);自問世以來,以其良好的町靠性和卓越的實時性被廣泛地應用于通信、航空、航天等高精尖技術及實時性要求極高的領域中。(Board Support Package,板級支持包)的作用是針對特殊的硬件平臺,為操作系統(tǒng)內(nèi)核提供操作接口,使操作系統(tǒng)能夠獨立于底層硬件。對上層應用屏蔽具體硬件,的高可性就是通過實現(xiàn)的。是Atmel公司生產(chǎn)的一款ARM9核芯片,本文重點介紹將到該芯片。

          1 BSP概念

          BSP通常是指針對具體的硬件平臺,用戶所編寫的啟動代碼和部分設備驅(qū)動程序的集合。它所實現(xiàn)的功能包括初始化和驅(qū)動部分設備。最基本的BSP僅需要支持處理器復位、初始化、驅(qū)動串口和必要的時鐘處理。BSP是相對于操作系統(tǒng)而言的,不同的操作系統(tǒng)對應不同形式的BSP,因此,在寫B(tài)SP時一定要按照要求的操作系統(tǒng)對BSP的定義形式來寫。在VxWorks系統(tǒng)中,BSP是介于底層硬件環(huán)境和VxWorks之間的一個軟件接口,它的主要功能是系統(tǒng)加電后初始化目標機硬件和VxWorks,并提供部分硬件驅(qū)動程序。BSP在VxWorks系統(tǒng)中的層次關系如圖1所示。

          BSP為各種板卡的硬件功能提供了統(tǒng)一的軟件接口,包括硬件初始化、中斷的捕捉和處理、硬件時鐘和定時器管理、內(nèi)存地址映射,以及內(nèi)存分配等。每個BSP還包括一個ROM啟動或其他啟動機制。

          2 VxWorks的引導

          在編寫B(tài)SP之前,首先要了解整個系統(tǒng)的啟動過程。VxWorks的映像由代碼段、數(shù)據(jù)段和BSS段3部分組成。VxWotks內(nèi)核可以分為3種:可加載類型映像、基于ROM的VxWorks映像和RoM駐留型映像。這3種類型的映像組織是不一樣的,因此啟動過程有所區(qū)別。

          可加載映像包括VxWorks和Boot ROM兩部分內(nèi)容,兩部分是獨立創(chuàng)建的。首先,由系統(tǒng)引導代碼把ROM引導程序搬到RAM_HIGH_ADRS。然后,ROM引導程序開始運行,將VxWorks映像加載到RAM_LOW_ADRS,之后跳轉(zhuǎn)到VxWorks映像裝入點。

          基于ROM的VxWorks映像在BSP初始化時,會把lmage完全搬到RAM中執(zhí)行,包括代碼段和數(shù)據(jù)段。在拷貝執(zhí)行完畢后,系統(tǒng)控制權轉(zhuǎn)移給RAM中VxWorks映像的初始化代碼。

          ROM駐留型映像只是將ROM中VxWorks映像的數(shù)據(jù)段和BSS段拷貝到RAM中,完成后系統(tǒng)控制權轉(zhuǎn)移給ROM/Flash里VxWorks映像的初始化代碼,代碼段留在ROM中并在ROM中運行。在ROM中運行的VxWorks映像主要足為了節(jié)省RAM空間,帶來的不利則是運行速度慢。

          圖2和圖3分別是下載型和ROM型VxWorks映像的初始化流程。


          上一頁 1 2 3 4 下一頁

          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();