<dfn id="is4kg"></dfn>
  • <ul id="is4kg"></ul>
  • <abbr id="is4kg"></abbr>
  • <ul id="is4kg"></ul>
    <bdo id="is4kg"></bdo>
    以文本方式查看主題

    -  曙海教育集團(tuán)論壇  (http://www.hufushizhe.com/bbs/index.asp)
    --  VxWorks BSP開(kāi)發(fā)  (http://www.hufushizhe.com/bbs/list.asp?boardid=37)
    ----  VxWorks在AT91RM9200上的BSP設(shè)計(jì)  (http://www.hufushizhe.com/bbs/dispbbs.asp?boardid=37&id=1940)

    --  作者:wangxinxin
    --  發(fā)布時(shí)間:2010-12-1 10:42:00
    --  VxWorks在AT91RM9200上的BSP設(shè)計(jì)
    VxWorks是美國(guó)Wind River公司開(kāi)發(fā)的嵌入式實(shí)時(shí)操作系統(tǒng),具有高性能、可裁減性好等特點(diǎn),能支持多種微處理器(如PowerPC、X85、ARM、SPARC);自問(wèn)世以來(lái),以其良好的町靠性和卓越的實(shí)時(shí)性被廣泛地應(yīng)用于通信、航空、航天等高精尖技術(shù)及實(shí)時(shí)性要求極高的領(lǐng)域中。BSP(Board Support Package,板級(jí)支持包)的作用是針對(duì)特殊的硬件平臺(tái),為操作系統(tǒng)內(nèi)核提供操作接口,使操作系統(tǒng)能夠獨(dú)立于底層硬件。對(duì)上層應(yīng)用屏蔽具體硬件,VxWorks的高可移植性就是通過(guò)BSP實(shí)現(xiàn)的。AT91RM9200是Atmel公司生產(chǎn)的一款A(yù)RM9核芯片,本文重點(diǎn)介紹將VxWorks移植到該芯片過(guò)程中BSP的定制過(guò)程。

    1 BSP概念

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

    圖片點(diǎn)擊可在新窗口打開(kāi)查看

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

    2 VxWorks的引導(dǎo)過(guò)程

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

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

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

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

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

    圖片點(diǎn)擊可在新窗口打開(kāi)查看

    下面以ROM型VxWorks內(nèi)核啟動(dòng)流程為例,說(shuō)明各文件的作用:

    romlnit()保存啟動(dòng)類(lèi)型,屏蔽中斷;初始化內(nèi)存和寄存器,屏蔽Cache;初始化CPU,將堆棧指針定位于被拷貝Boot ROM映像在RAM的地址;跳到romStart()。

    roraStart()根據(jù)不同的映像類(lèi)型將VxWorks映像的不同部分解壓縮<如果需要)并加載到RAM中。

    usrInit() 對(duì)VxWorks映像的BSS段清零;調(diào)用intVecBaseSet()設(shè)置中斷矢量基地址表;調(diào)用excVecInit()初始化異常中斷矢量;調(diào)用sysHwInit()初始化系統(tǒng)硬件;調(diào)用usrKernelInit()初始化wind內(nèi)核;調(diào)用kernellnit()啟動(dòng)wind內(nèi)核,啟動(dòng)usrRoot()任務(wù)。

    usrRoot()設(shè)置操作系統(tǒng)時(shí)鐘,創(chuàng)建設(shè)備,安裝驅(qū)動(dòng),調(diào)用sysHwInit2()安裝系統(tǒng)時(shí)鐘和輔助時(shí)鐘中斷以及串口等設(shè)備的中斷,初始化I/O、文件系統(tǒng)、調(diào)用應(yīng)用程序。

    3 VxWorks在AT91RM9200上的BSP設(shè)計(jì)

    3.1 AT91RM9200簡(jiǎn)介

    AT91RM9200的片上資源包括:ARM920T處理器棱、16KB的內(nèi)部SRAM和128KB的內(nèi)部ROM存儲(chǔ)器;支持SDRAM、SRAM、Burst Flash和CompactFlash、SmartMedia以及NANDFlash的無(wú)縫連接;16KB的數(shù)據(jù)Cache,16KB的指令Cache,完全可編程的外部總線(xiàn)接口EBI,4個(gè)32位的PIO控制器可以達(dá)到122個(gè)可編程I/O引腳(每個(gè)都有輸入控制、可中斷及開(kāi)路的輸出能力);帶有8個(gè)優(yōu)先級(jí)、可單獨(dú)屏蔽中斷源的先進(jìn)中斷控制器、6組硬件定時(shí)器、4個(gè)通用同步/異步收發(fā)器USART。

    3.2 BSP中幾個(gè)重要文件的修改

    由于AT91RM9200的內(nèi)核是ARM920T,所以BSP文件主要在VxWorks編澤環(huán)境Tornado的目錄target/config/all和target/config/integrator920t文件夾里。其中,a11文件夾里的文件對(duì)于絕大多數(shù)BSP都是共用的,一般來(lái)說(shuō)不需要修改,特別是“configAll.h”;integrator920t文件夾里的文件就是所要編寫(xiě)的BSP文件,這些文件往往與系統(tǒng)硬件密切相關(guān)。

    3.2.1 修改Makeflie

    Makefile文件定義編譯和鏈接整個(gè)BSP的規(guī)則,如編譯工具的選擇、編譯選項(xiàng)和包含文件路徑等;控制生成VxWorks映像文件的類(lèi)型,同時(shí)含有存儲(chǔ)區(qū)大小的信息,對(duì)于存儲(chǔ)區(qū)大小信息的改動(dòng)必須與Config.h的對(duì)應(yīng)改動(dòng)同步。有些參數(shù)需在該文件中定義,如處理器類(lèi)型、編譯工具、目標(biāo)地址等。下面介紹一些須修改的參數(shù)和地址:

    圖片點(diǎn)擊可在新窗口打開(kāi)查看

    3.2.2 修改Config.h

    Config.h文件包含了所有頭文件和與CPU相關(guān)的特殊定義。VxWorks內(nèi)核組件的配置由Config.h文件定義。Config.h中的主要修改內(nèi)容有定義引導(dǎo)行和修改地址。

    (1)定義引導(dǎo)行

    圖片點(diǎn)擊可在新窗口打開(kāi)查看

    其中,mac(O,0)為AT91RM9200芯片中的EMAC設(shè)備;host為主機(jī)名;VxWorks為要下載的文件名;h為主機(jī)IP地址;e為目標(biāo)板IP地址;u為用戶(hù)名;pw為密碼;tn為目標(biāo)板名稱(chēng)。

    (2)修改地址

    該文件中的地址定義,如ROM_TEXT_ADRS、ROM_SIZE、RAM_LOW_ADR、SRAM_HIGH_SIZE等要與Makefik文件中的相關(guān)定義一致。本設(shè)計(jì)中代碼段存儲(chǔ)在連接ARM芯片外部片選CSO上的Flash里面,基地址為Oxl0000000,因此.定義如下:

    圖片點(diǎn)擊可在新窗口打開(kāi)查看

    VxWorks的缺省配置由configAll.h來(lái)確定。一般來(lái)說(shuō),缺省配置的設(shè)置與自行開(kāi)發(fā)的硬件系統(tǒng)的配置不同,用戶(hù)可通過(guò)Cotlfig.h來(lái)改變?nèi)笔∨渲。用?hù)須查看configAll.h,并在Config.h中將不需要的軟硬件配置和初始化去掉。例如,缺省配置中一般包含浮點(diǎn)處理器,而AT9lRM9200中沒(méi)有浮點(diǎn)寄存器,因此就要?jiǎng)h掉相關(guān)配置。
    主站蜘蛛池模板: h小视频在线观看| 精品久久久无码中文字幕天天| 欧美日韩视频一区三区二区| 国产在线高清理伦片a电影| 亚洲欧洲日产国码二区首页| 97国产免费全部免费观看| 欧美日韩第一区| 国产gaysexchina男同menxnxx | 高清国产美女一级毛片| 奇米影视7777久久精品| 亚洲香蕉久久一区二区| 中文字幕无码不卡一区二区三区 | 性欧美人与动物| 午夜高清啪啪免费观看完整| 一本色道久久88加勒比—综合| 日韩不卡手机视频在线观看| 国产一区二区在线|播放| 69av免费视频| 天堂AV无码AV一区二区三区| 久久夜色撩人精品国产| 欧美午夜免费观看福利片| 动漫卡通精品3d一区二区| 青青青免费网站在线观看 | 亚洲精品中文字幕乱码| 18禁美女裸体免费网站| 欧美国产成人精品一区二区三区| 半甜欲水兄妹np| 色综七七久久成人影| 在线观看永久免费| 中文字幕免费在线观看| 男女边摸边揉边做视频| 大伊香蕉在线观看视频wap | 精品国产三级a在线观看| 国内精品一战二战| 中文字幕亚洲欧美在线不卡| 日韩人妻精品一区二区三区视频 | 精品国产不卡一区二区三区| 国产在线视频第一页| 4399理论片午午伦夜理片| 国内精品久久人妻互换| 四虎影视在线永久免费看黄|