《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 通信與網(wǎng)絡(luò) > 設(shè)計應(yīng)用 > 基于VxWorks的BSP概念與開發(fā)
基于VxWorks的BSP概念與開發(fā)
互聯(lián)網(wǎng)
摘要: 本文以VxWorks操作系統(tǒng)為例闡述了BSP的概念和系統(tǒng)啟動流程,并描述了BSP的開發(fā)過程。關(guān)鍵詞:BSP;VxWorks;...
關(guān)鍵詞: BSP Vxworks 鏡像 boot Rom
Abstract:
Key words :
摘 要:本文以VxWorks操作系統(tǒng)為例闡述了BSP的概念和系統(tǒng)啟動流程,并描述了BSP的開發(fā)過程。
關(guān)鍵詞:BSP;VxWorks;鏡像boot Rom
概述
VxWorks操作系統(tǒng)是美國WindRiver公司于1983年設(shè)計開發(fā)的一種嵌入式實時操作系統(tǒng)(RTOS),它采用微內(nèi)核的結(jié)構(gòu),具有支持多種處理器,豐富的網(wǎng)絡(luò)協(xié)議,良好的兼容性和裁減性等特點,同時具有程序動態(tài)鏈接和下載的功能。

BSP(Board Support Packet——板級支持包)是介于底層硬件和上層軟件之間的底層軟件開發(fā)包,它主要功能為屏蔽硬件,提供操作系統(tǒng)的驅(qū)動及硬件驅(qū)動,具體功能包括:
·單板硬件初始化,主要是CPU的初始化,為整個軟件系統(tǒng)提供底層硬件支持;
·為操作系統(tǒng)提供設(shè)備驅(qū)動程序和系統(tǒng)中斷服務(wù)程序;
·定制操作系統(tǒng)的功能,為軟件系統(tǒng)提供一個實時多任務(wù)的運行環(huán)境;
·初始化操作系統(tǒng),為操作系統(tǒng)的正常運行做好準(zhǔn)備;
BSP在VxWorks系統(tǒng)中的地位見圖1。
BSP文件在vxworks/target/config/all和vxworks/target/config/bspname文件夾里。其中,all文件夾里的文件是所有BSP的通用文件,bspname文件夾的文件是用戶自己定制的BSP文件。
經(jīng)過編譯、鏈接,并在makefile和depend. bspname等文件的控制下,原程序最后將生成鏡像。VxWorks的鏡像可分為兩類:可下載鏡像和可引導(dǎo)鏡像。
·可下載鏡像(Loadable Image):實際包括兩部分,一是vxWorks,二是boot ROM,兩部分是獨立創(chuàng)建的。其中boot ROM包括被壓縮的boot ROM鏡像(bootrom)、非壓縮的boot ROM鏡像(bootrom_uncmp)和駐留ROM的boot ROM鏡像(bootrom_res)三種類型;
·可引導(dǎo)鏡像(Bootable Image):是將引導(dǎo)程序和vxWorks融為一體的鏡像,它常常是最終產(chǎn)品,包括不駐留ROM的鏡像和駐留ROM的鏡像兩種類型。

VxWorks系統(tǒng)啟動流程
一般來說,所有處理器的VxWorks系統(tǒng)啟動流程都是相似的,但有些處理器會有一些特殊的步驟,而另一些處理器會跳過幾個步驟。
下面以CPU為ARM7TDMI為例具體描述(見表1)。
對于可引導(dǎo)鏡像在usrConfig.c文件里執(zhí)行,對于可下載鏡像在bootConfig.c文件里執(zhí)行。
圖2為壓縮的可引導(dǎo)鏡像的啟動過程圖示,其中所用到的地址的說明見表2。

BSP的開發(fā)過程
建立開發(fā)環(huán)境
主要是以目標(biāo)板CPU的BSP文件為模板,在 ornado argetconfig目錄下創(chuàng)建用戶的BSP目錄bspname,把 ornado argetconfigall下的文件和BSP模板文件拷貝到該目錄下,根據(jù)具體情況選擇合適的VxWorks鏡像類型。
修改模板程序
Makefile
Makefile文件控制鏡像的創(chuàng)建,在Makefile文件里使用了將近135個宏,最簡單的Makefile文件要包含以下的宏:
·CPU:目標(biāo)板CPU的類型;
·TOOL:主機的make工具,為GNU;
·TGT_DIR:target路徑,默認(rèn)為$(WIND_BASE)/target;
·TARGET_DIR:BSP目錄名;
·VENDER:目標(biāo)板生產(chǎn)商名;
·BOARD:目標(biāo)板名;
·ROM_TEXT_ADRS:boot ROM的入口地址(以16進制表示,并且與config.h文件定義相同);
·ROM_SIZE:ROM的大小;
·RAM_LOW_ADRS:加載vxWorks的目標(biāo)地址;
·RAM_HIGH_ADRS:boot ROM拷貝到RAM的目標(biāo)地址;
·HEX_FLAGS:特殊結(jié)構(gòu)的標(biāo)記,用于產(chǎn)生S-記錄文件;
·MACH_EXTRA:擴展文件,用戶可以加入自己的目標(biāo)模塊;
·除此以外,Makefile文件還需要包括以下文件:
·$(TGT_DIR)/h/make/defs.bsp:Vxworks系統(tǒng)運行的標(biāo)準(zhǔn)變量定義;
·$(TGT_DIR)/h/make/make.$(CPU)$(TOOL):提供了特別的目標(biāo)機結(jié)構(gòu)和一套編譯工具,如make. ARM7TDMI_Tgnu;
·$(TGT_DIR)/h/make/defs.$(WIND_HOST_TYPE):提供了與主機系統(tǒng)有關(guān)的定義;
·rules.bsp:在創(chuàng)建目標(biāo)文件時所需要的規(guī)則;
·rules. $(WIND_HOST_TYPE):指出創(chuàng)建目標(biāo)文件時所需的從屬文件表;
·如果沒有用all目錄下的文件而是拷貝到bspname下修改并使用,需要定義與這些文件有關(guān)的宏,如
BOOTINIT=bootInit.c
這樣在創(chuàng)建鏡像時就不會用all目錄下的文件而使用bspname目錄下的相應(yīng)文件了;
·在Makefile文件里凡是16進制數(shù)前面都無需加“0x”;
bspname.h
根據(jù)具體目標(biāo)板設(shè)置串行接口、時鐘以及I/O設(shè)備等。在該文件中必須包含以下內(nèi)容:
·中斷向量/級別
·I/O設(shè)備地址
·設(shè)備寄存器位的含義
·系統(tǒng)和附加時鐘參數(shù)(最大和最小速率)
config.h
根據(jù)目標(biāo)板的具體情況配置宏定義,注意ROM_TEXT_ADRS、ROM_SIZE、RAM_LOW_ADRS、RAM_HIGH_ADRS要與Makefile文件里定義的一致,LOCAL_MEM_LOCAL_ADRS和LOCAL_MEM_SIZE要正確。
romInit.s
這是系統(tǒng)上電后運行的第一個程序,根據(jù)具體目標(biāo)板對寄存器和CPU進行設(shè)置;以CPU為ARM7TDMI為例,romInit.s 需要進行的工作有:
·保存啟動方式:對于冷啟動,如果CPU配置的是HIGH VECTORS,就設(shè)置入口地址為0xFFFF0000,否則設(shè)置入口地址為0x00000000;
·屏蔽中斷:通過設(shè)置cpsr的I_BIT和F_BIT都為1來實現(xiàn),還要設(shè)置中斷寄存器為關(guān)模式,同時設(shè)定運行模式為SVC32模式;
·初始化堆棧指針pc和sp:堆棧指針sp指向STACK_ADRS,這個宏的定義為當(dāng)鏡像為駐留ROM時,該宏值為_sdata,當(dāng)鏡像為非駐留ROM時該宏值為_romInit,這兩個地址經(jīng)過地址映射后都指向被拷貝鏡像在RAM的目標(biāo)地址;
·初始化cache,屏蔽cache;
·根據(jù)具體目標(biāo)板的需要初始化其他寄存器;
·指針跳轉(zhuǎn)到romStart()函數(shù)并執(zhí)行;
bootConfig.c
一般不需要用戶修改,也可以根據(jù)具體情況做適當(dāng)修改;
sysALib.s
與romInit.s文件實現(xiàn)的功能相似,但如果在romInit.s文件里對DRAM和內(nèi)存控制器進行了初始化在這里不再進行這項工作;
創(chuàng)建VxWorks鏡像
根據(jù)具體需要在命令行環(huán)境下利用Makefile創(chuàng)建各種鏡像,也可以在Tornado的集成環(huán)境下Build菜單中選擇Build Boot ROM來創(chuàng)建各種類型的Boot ROM;
除此以外,如果系統(tǒng)硬件包括串口,還要根據(jù)具體情況修改sysSerial.c文件;如果包含網(wǎng)絡(luò)部分要修改configNet.h;如果包含NVRAM要修改bootnv.h文件。總之,BSP的開發(fā)要根據(jù)具體目標(biāo)板的硬件進行。

結(jié)語
我們已經(jīng)利用基于VxWorks的BSP開發(fā)包成功的進行了線纜調(diào)制解調(diào)器的底層軟件開發(fā)。在開發(fā)過程中深感BSP在整個系統(tǒng)軟件中的重要性——沒有正確的BSP軟件,整個系統(tǒng)的啟動和運行也不會正確。另外需要強調(diào)的是:BSP的概念只是針對嵌入式操作系統(tǒng)而言的,而像DOS、WINDOWS、UNIX等BIOS操作系統(tǒng)是無BSP可言的。對同一目標(biāo)板而言,不同操作系統(tǒng)的BSP在本質(zhì)上是一樣的,但是不同的操作系統(tǒng)將提供不同的支持庫,另外在BSP結(jié)構(gòu)上也可能會有所不同,在做BSP移植的時候應(yīng)該注意。■

參考文獻
1. Tornado BSP Developer誷 Kit for VxWorks User誷 Guide,Tornado 2.0,Edition 1,1999
2. Tornado BSP Developer誷 Kit for VxWorks User誷 Guide,Tornado 1.0.1,Edition 1,1997
3. VxWorks Programmer誷 Guides,Edition 1,1999
此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
欧美一区二区视频网站| 久久精品三级| 国产精品影音先锋| 欧美成人免费一级人片100| 香蕉免费一区二区三区在线观看 | 亚洲国产aⅴ天堂久久| 国产九九精品视频| 欧美偷拍另类| 欧美国产日韩一区二区| 欧美精品日韩| 欧美日韩在线高清| 蜜臀久久久99精品久久久久久| 午夜精品一区二区三区在线| 99国内精品久久| 亚洲欧洲日本在线| 久久精品一二三区| 欧美一区二区三区成人| 亚洲一区二区精品| 一区二区免费在线播放| 日韩亚洲欧美成人| 最新日韩精品| 亚洲精品护士| 亚洲第一在线综合在线| 韩国一区电影| 韩国精品一区二区三区| 国产视频在线观看一区| 国产乱码精品1区2区3区| 国产精品高潮视频| 欧美日韩在线观看视频| 欧美日韩播放| 欧美日韩精品一区二区天天拍小说| 免费观看国产成人| 乱码第一页成人| 久热综合在线亚洲精品| 欧美一区二区三区免费看| 午夜精品久久久久久久男人的天堂| 亚洲在线中文字幕| 亚洲一区二区三| 亚洲一区二区三区午夜| 亚洲一区精品视频| 亚洲综合视频网| 亚洲午夜一区二区三区| 亚洲区免费影片| 久久精品国产久精国产爱| 久久精品亚洲乱码伦伦中文| 亚洲国产欧美不卡在线观看| 亚洲人成小说网站色在线| 亚洲日本免费| 一本一本久久a久久精品综合麻豆 一本一本久久a久久精品牛牛影视 | 日韩西西人体444www| 亚洲福利专区| 亚洲福利久久| 欧美在线视频免费| 欧美色欧美亚洲高清在线视频| 亚洲清纯自拍| 国产精品第十页| 久久精品亚洲一区| 午夜精品久久久久久久久久久久 | 夜夜躁日日躁狠狠久久88av| 亚洲人成高清| 亚洲级视频在线观看免费1级| 亚洲国产va精品久久久不卡综合| 欧美女激情福利| 久久久久久久综合色一本| 亚洲美女电影在线| 亚洲欧美国产视频| 91久久国产综合久久蜜月精品| 免费永久网站黄欧美| 亚洲精品永久免费| 欧美巨乳波霸| 欧美一区二区在线视频| 欧美在线不卡| 在线观看欧美日韩国产| 噜噜噜久久亚洲精品国产品小说| 亚洲精品国产欧美| 欧美连裤袜在线视频| 亚洲欧美日韩一区| 在线观看不卡av| 欧美午夜不卡影院在线观看完整版免费 | 99视频在线观看一区三区| 免费人成精品欧美精品| 亚洲主播在线| 最新成人av在线| 国内精品免费在线观看| 欧美性天天影院| 久久精品国产综合| 艳女tv在线观看国产一区| 亚洲国产精品第一区二区| 一区二区三区在线观看欧美| 国外成人在线| 国产女主播一区| 欧美日韩国内| 欧美激情精品久久久久久变态| 亚洲欧美日韩在线一区| 亚洲国产精品毛片| 最新国产乱人伦偷精品免费网站| 免费成人av在线看| 99伊人成综合| 亚洲欧美日本伦理| 免费久久精品视频| 亚洲欧美日韩一区在线| 国产九区一区在线| 国产精品久久夜| 国产精品一区一区三区| 欧美一区二区日韩| 亚洲在线网站| 久久精品国产免费观看| 日韩系列在线| 午夜精品三级视频福利| 久久精品人人做人人爽电影蜜月| 亚洲一区二区伦理| 久久精品国产欧美亚洲人人爽| 亚洲午夜av| 亚洲激情婷婷| 伊人久久婷婷色综合98网| 国产精品永久免费视频| 欧美国产精品专区| 欧美一区二区三区视频免费播放| 亚洲免费观看高清完整版在线观看熊| 国产精品综合色区在线观看| 国产丝袜美腿一区二区三区| 激情综合网激情| 亚洲高清电影| 久久成人免费视频| 欧美理论电影网| 好看的亚洲午夜视频在线| 在线成人免费观看| 亚洲欧美成人在线| 日韩系列在线| 欧美有码在线观看视频| 欧美一区二区在线免费观看| 欧美一区二区高清在线观看| 久久精品国产成人| 欧美在线日韩| 国产精品mv在线观看| 国产乱码精品一区二区三区不卡 | 欧美午夜电影在线观看| 国产精品久久久久一区二区三区共 | 亚洲国产欧美一区二区三区同亚洲| 欧美一区二区在线免费观看| 欧美成人蜜桃| 亚洲日韩第九十九页| 亚洲视频免费| 国产精品资源在线观看| 欧美一区二区日韩一区二区| 久久中文字幕一区| 亚洲日本va午夜在线影院| 亚洲一区二区三区成人在线视频精品| 国产精品捆绑调教| 欧美在线播放一区二区| 欧美成人免费网站| 一区二区三区国产精华| 欧美伊人精品成人久久综合97| 狠狠色狠狠色综合日日91app| 亚洲欧洲在线一区| 欧美日韩视频在线第一区| 亚洲视频专区在线| 久久久av网站| 亚洲欧洲偷拍精品| 亚洲欧美激情精品一区二区| 黄色免费成人| 一区二区三区你懂的| 国产精品日韩在线一区| 亚洲丶国产丶欧美一区二区三区| 欧美理论片在线观看| 亚洲免费人成在线视频观看| 久久资源在线| 在线亚洲精品| 另类专区欧美制服同性| 日韩亚洲欧美成人一区| 久久福利影视| 91久久午夜| 欧美一级在线播放| 亚洲国产精品成人| 亚洲女人av| 136国产福利精品导航网址| 亚洲综合欧美| 亚洲高清av在线| 欧美影院久久久| 亚洲另类在线一区| 欧美一区二区视频在线| 亚洲精品国产精品国自产在线| 久久9热精品视频| 日韩视频免费观看| 久久午夜羞羞影院免费观看| 一区二区三区黄色| 免费中文字幕日韩欧美| 亚洲制服av| 欧美日韩国产精品一区| 亚洲第一精品久久忘忧草社区| 国产精品sss| 亚洲欧洲另类国产综合| 国产日韩欧美另类| 国产精品理论片| 国产精品xvideos88| 亚洲三级网站| 国产视频精品免费播放| 正在播放欧美一区| 亚洲福利视频网站| 久久精品视频在线|