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

          新聞中心

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

          VxWorks移植到AT91RM9200的BSP定制過程

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


          3.2.5 修改sysLib c

          sysLib.c是初始化的核心代碼。在這個文件中,必須復(fù)位所有的硬件,使其處于初始化狀態(tài),保證后面開中斷后不會產(chǎn)生假中斷。這個文件包含了由目標(biāo)機(jī)體系結(jié)構(gòu)決定的、與系統(tǒng)有關(guān)的C程序。這些C程序提供板級接口?;谶@些接口,和應(yīng)用程序的構(gòu)造與系統(tǒng)無關(guān)。該文件的功能包括:定義了RRAM、SRAM、ROM、外部片選芯片的物理地址和虛擬地址;定義中斷優(yōu)先級寄存器中各個位對應(yīng)的優(yōu)先級;調(diào)用sysHwInit()初始化串口和網(wǎng)口,安裝IRQ/SVC中斷堆棧分配程序;總線中斷功能等。本文件中有兩個重要的函數(shù):sysHwInit()和sysHwInit2()。sysHwInit()的代碼如下:


          sysHwInit2()用來連接系統(tǒng)中斷,安裝ISR,進(jìn)行其他配置。它在初始化系統(tǒng)時鐘時,由sysClkConnect()調(diào)用,主要用來初始化中斷庫和中斷驅(qū)動,安裝系統(tǒng)時鐘和輔助時鐘的中斷以及串口等設(shè)備的中斷。

          4 編譯生成映像

          系統(tǒng)完成后,有兩種編譯方式:一種是在Tornado下進(jìn)行編譯,生成映像文件;另一種是直接用Make工具編譯,但要寫好腳本文件。裝載到目標(biāo)板中的映像取決于使用的下載方式,其中主要包括以下幾種:

          。這是基于RAM的映像,VxWorks需要通過目標(biāo)板上的引導(dǎo)程序從串口或網(wǎng)口把它下載到目標(biāo)板的RAM中運行。在Tornado開發(fā)環(huán)境下,這是一個默認(rèn)選項,主要用在調(diào)試階段。使用宿主機(jī)上的WindSh工具和符號表。
          ②VxWorks.st。這也是基于RAM的映像,需要通過引導(dǎo)ROM把VxWorks映像下載到目標(biāo)機(jī)內(nèi)存中才能執(zhí)行。該對象文件內(nèi)置符號表。
          ③VxWorkS_rom。這是一個非壓縮、基于ROM的映像。在這個對象文件執(zhí)行前,先把自己拷貝到目標(biāo)機(jī)RAM中。這種類型的映像通常在啟動階段速度比較慢,因為代碼在ROM中執(zhí)行,但執(zhí)行階段比ROM駐留型的映像要快。
          ④VxWorks.st_rom。這是基于ROM壓縮的VxWorks映像。它在執(zhí)行前先把自己解壓并拷貝到目標(biāo)機(jī)RAM中執(zhí)行。
          ⑤VxWorks.res_rom。這是ROM駐留型的非壓縮VxWorks的映像。它在執(zhí)行前把數(shù)據(jù)段拷貝到目標(biāo)機(jī)RAM中。這種類型的映像在啟動階段比較快,但在目標(biāo)機(jī)上執(zhí)行的速度比基于ROM類型的映像慢(因為CPU訪問ROM比訪問RAM要慢)。通常在RAM空間比較小的目標(biāo)機(jī)上使用這種類型的映像。

          5 需要注意的問題

          首先,應(yīng)該避免在romInit.s中進(jìn)行過多的初始化操作。該史件中只是進(jìn)行必要的最小硬件初始化,大部分硬件的初始化都是在sysHwInit()中完成的。另外,romTnit.s中的代碼不應(yīng)當(dāng)被其他模塊或函數(shù)調(diào)用。

          其次,應(yīng)該避免sysAlib.s中工作太少。開發(fā)人員通常錯誤地認(rèn)為在romInit.s里初始化過的設(shè)備不需要在sysAlib.s中重新初始化。實際上,VxWorks映像并不認(rèn)為它是由引導(dǎo)映像程序引導(dǎo)的,因此,它必須重新設(shè)置和初始化所有它自己需要使用的設(shè)備。sysInit()是該文件中最主要的一個函數(shù),也是第一個函數(shù)。該例程中很多工作與romInit()是相同的,目的是保證內(nèi)核映像在運行與冷啟動時,軟硬件環(huán)境高度一致。

          最后,對特定的BSF。驅(qū)動程序的修改,只能在特定的目錄下。此設(shè)計中目錄為target/config/integra-tor920t,不要直接在target/src/drv以及target/h/drv中修改。只有風(fēng)河公司的源程序才能存放在這些目錄下。

          6 結(jié)論

          本文在介紹BSP的概念、作用和vxWorks映像分類以及系統(tǒng)啟動流程的基礎(chǔ)上,以Atmel公司生產(chǎn)的ARM9處理器為例,重點介紹了VxWorks的BSP設(shè)計中需要修改的幾個重要文件,最后提出了需要注意的問題。盡管目標(biāo)板硬件不同,BSP的實現(xiàn)也不盡相同,但基本思想是一樣的。本設(shè)計對各類開發(fā)板的系統(tǒng)和后續(xù)的應(yīng)用程序開發(fā)有一定的參考價值。

          本文引用地址:http://www.ex-cimer.com/article/151196.htm

          上一頁 1 2 3 4 下一頁

          關(guān)鍵詞: 定制 過程 BSP AT91RM9200 移植 VxWorks

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁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); })();