68 VxWorks實(shí)時(shí)操作系統(tǒng)下BSP %A VxWorks實(shí)時(shí)操作系統(tǒng)下BSP %A 丁大尉 煙臺(tái)大學(xué) 王金剛 宮霄霖 姜 平 天津大學(xué) %A 摘要文中介紹實(shí)時(shí)操作系統(tǒng)V Works中BSP的概念,以及開(kāi)發(fā)BSP必須要了解的交叉調(diào)試環(huán)境、系統(tǒng)的啟動(dòng)過(guò) %A 程、V works Image的分類(lèi)以及BSP文件的組成等內(nèi)容。 %A 關(guān)鍵詞 VxWorks lISP %A The Concept of BSP in VxWorks %A DiI1g Dawei Wang Jingang Gong Xiaolin Jiang Ping %A Abstract In this paper,the concept of BSP in VxWorks,a real―time operating system are presented. It also described %A the cross debug environment,the boot process of the system,the sorts of VxWorks Image and the composition of BSP files. %A Keywords VxWorks BSP %A 1 BSP %A Vxworks操作系統(tǒng)是一種嵌入式實(shí)時(shí)操作系 %A 統(tǒng)(RTOS),它采用微內(nèi)核的結(jié)構(gòu),可以運(yùn)行于 %A 目前幾乎所有的CPU 上,包括intel x86、Power %A PC、ARM、MIPS等, 但前提是必須有相應(yīng)的 %A BSP (板極支持包)支持。BSP包含了與硬件相關(guān) %A 的功能函數(shù),提供Vxworks與硬件之間的接口, %A 但是BSP不等同于硬件驅(qū)動(dòng)。 %A BSP主要完成硬件初始化,包括系統(tǒng)上電時(shí) %A 在特定位置提供人口代碼,初始化存儲(chǔ)器,關(guān)中 %A 斷,把VxWorks加載到RAM 區(qū)等; 支持Vx― %A Works與硬件驅(qū)動(dòng)的通信。有些硬件驅(qū)動(dòng)是需要 %A 。BSP支持的,例如硬件驅(qū)動(dòng)定義它的中斷服務(wù)例 %A 程(ISR),由BSP來(lái)將此ISR連接到中斷向量表; %A 將獨(dú)立與硬件的軟件和與硬件相關(guān)的軟件在Vx― %A Works系統(tǒng)中很好地結(jié)合起來(lái)。 %A 2 BSP開(kāi)發(fā) %A 做BSP開(kāi)發(fā),應(yīng)首先建立Tornado開(kāi)發(fā)環(huán)境, %A 根據(jù)具體情況配置VxWorks組件;接著選擇合適 %A 的BSP模板,對(duì)相應(yīng)的文件進(jìn)行修改;最后添加 %A 自己的設(shè)備驅(qū)動(dòng)程序,進(jìn)行仿真和調(diào)試。 %A Tornado 2.2交叉調(diào)試環(huán)境嵌入式操作系統(tǒng) %A 在調(diào)試環(huán)境上與桌面操作系統(tǒng)存在明顯的區(qū)別,它 %A 又稱(chēng)為交叉調(diào)試。因?yàn)門(mén)ornado開(kāi)發(fā)環(huán)境是基于 %A 架構(gòu)的,所以選擇的時(shí)候要根據(jù)自己的處理器內(nèi)核 %A 選擇合適的版本。因?yàn)槲覀兪褂玫奶幚砥? %A S3CA510B采用的是ARM 核, 所以我們選用Tor― %A nado2.2 for ARM ,這就保證了使用的開(kāi)發(fā)環(huán)境里 %A 包括了需要的開(kāi)發(fā)工具以及同類(lèi)的BSP參考模板。 %A ? /target/eonfig/all/eonfigAl1.h中包含所有 %A 的VxWorks組件選項(xiàng), 可以在32程中對(duì)這些組件 %A 進(jìn)行添加或者刪除。 %A 選擇BSP模板并對(duì)相應(yīng)文件進(jìn)行修改 Vx- %A Works的板級(jí)支持包BSP提供了Vxworks同硬件 %A 環(huán)境的基本接口界面,支持對(duì)硬件驅(qū)動(dòng)的訪(fǎng)問(wèn),將 %A Vxworks中硬件相關(guān)和硬件無(wú)關(guān)的軟件集成到一 %A 體,其功能相當(dāng)于PC機(jī)的BIOS。它包括源文件、 %A 頭文件、make文件、導(dǎo)出文件和二進(jìn)制的驅(qū)動(dòng)模 %A 塊。 %A BSP主要由C源文件和匯編文件組成,BSP %A 的開(kāi)發(fā)可以從WindRiver公司提供的BSP模板開(kāi) %A 始,在此基礎(chǔ)上作相應(yīng)的修改。主要需要做以下幾 %A 個(gè)方面的修改: %A ① eonfig.h %A VxWorks的缺省配置由eonfigAl1.h確定, 用 %A 戶(hù)需要按照自己的需要來(lái)改寫(xiě)eonfig.h,如設(shè)置存 %A 儲(chǔ)區(qū)的大小、增加新的程序模塊、刪除不需要的模 %A 塊等。 %A ② makefile %A 它控制生成VxWorks的映像文件的類(lèi)型,另 %A 外它還包含存儲(chǔ)區(qū)大小的信息。所有新增加的程序 %A 模塊必須在makefile中使用MACH ―EXTRA 命 %A 令將其目標(biāo)模塊加入到最終的VxWorks映像文件 %A 中。 %A ③ 編制專(zhuān)用接口驅(qū)動(dòng)程序 %A VxWorks的缺省配置提供了通用接口的驅(qū)動(dòng) %A 程序,但是并不一定適合用戶(hù)具體的硬件環(huán)境,所 %A 以用戶(hù)需要使用ar-d命令將這些模塊從庫(kù)文件中 %A 刪除,然后將其源程序復(fù)制到用戶(hù)的BSP 目錄中 %A 進(jìn)行修改,并在makefile中使用MACH―EXTRA %A 命令將其目標(biāo)模塊加入到最終的Vxworks映像文 %A 件中。 %A 維普資訊 ![]() %A 皇 量技術(shù)?2005年第一期 69 %A VxWorks Image的分類(lèi) VxWorks Image可 %A 以分為三類(lèi):ROM-based Image(壓縮或非壓縮); %A ROM -Resident Image; Loadable Image %A 。 %A VxWorks Image由Text段、Data段和BSS %A 段組成,Text段是可執(zhí)行代碼段,Data是已初始 %A 化的全局變量和靜態(tài)變量,BSS段是未初始化全局 %A 變量和靜態(tài)變量。 %A 對(duì)于不同的Vxworks Image,啟動(dòng)步驟也不 %A 一樣。但對(duì)于三種Image,第一步是相同的,都是 %A 處理器跳到某一特定地址, 開(kāi)始執(zhí)行啟動(dòng)代碼 %A (BootStrap)。它們都完成相同的功能:關(guān)閉中斷, %A 初始化目標(biāo)存儲(chǔ)器,裝載要運(yùn)行的VxWorks Im― %A age段到RAM 中。 %A RoM―Resident Image與ROM-based Image兩 %A 種Image都是用于產(chǎn)品階段, 即直接燒錄到ROM %A 中。在開(kāi)發(fā)調(diào)試階段, 這兩種Image由于需要頻 %A 繁的燒寫(xiě)RoM 所以非常不方便。 %A Loadable %A Image 是位 %A 于主機(jī)上的 %A 二進(jìn)制文件, %A 由燒錄在目 %A 標(biāo)板RoM %A 中的boot― %A RoM Image %A LoCAL MEM %A LoCAL ADRS %A RAM LOW %A ADRS %A FREE RAM %A ADRS %A RAM HIGH %A ADRS %A 將其從主機(jī) %A 下載到目標(biāo) 圖1 Loadable Image的下載過(guò)程 %A 板的RAM %A 中。實(shí)際上,boot―RoM Image是一個(gè)高度裁減的 %A 最小Vxworks系統(tǒng),它的唯一作用就是實(shí)現(xiàn)目標(biāo) %A 機(jī)與主機(jī)通信,將位于主機(jī)硬盤(pán)上的loadable Im― %A age下載到目標(biāo)板RAM 中, 執(zhí)行情況如圖1。首 %A 先執(zhí)行BootStrap,Bo otStrap完成最基本的硬件初 %A 始化工作, 并將boot―RoM Image拷貝到RAM ― %A H IGH %A ― ADRS處開(kāi)始執(zhí)行,把主機(jī)上指定位置的 %A Loadable Image下載到RAM ―LOW ―ADRS處, %A 然后由此Image來(lái)接管目標(biāo)板,Bo ot Program 已 %A 完成使命,它所占用的RAM 區(qū)由系統(tǒng)回收,作為 %A 系統(tǒng)內(nèi)存池的一部分。另外,boot―RoM Image也 %A 可以是壓縮的, 在拷貝到RAM ―HIGH ―ADRS %A 時(shí)進(jìn)行解壓;也可以駐留在ROM 中執(zhí)行,而只將 %A 它的Data段和BSS段拷貝到RAM ―HIGH ― %A ADRS處。 %A 系統(tǒng)啟動(dòng)順序 對(duì)于ROM-based Image和 %A ROM-Resident Image,其啟動(dòng)順序如下: %A rom Init () 一rom Start () 一sysInit () %A usrInit () ._+Kernellnit (usrRoot, ? ? ) %A 各函數(shù)的作用如下: %A romInit():關(guān)閉中斷, 做盡量少的硬件初始 %A 化,使C程序得以運(yùn)行。 %A romStart(): 將Vxworks Image拷貝到 %A RAM 中,如果需要?jiǎng)t進(jìn)行解壓縮;如果是ROMResident %A Image, 則只拷貝Data段和BSS段。 %A sysInit():初始化系統(tǒng)中斷, 即把所有寄存 %A 器置為已知狀態(tài), 并清除所有中斷。 %A usrInit():在文件usrConfig.c中,完成系統(tǒng) %A 內(nèi)核運(yùn)行前需要完成的所有初始化,包括初始化 %A cache、BsS段清零、初始化中斷向量等。 %A Kernellnit():初始化并啟動(dòng)多任務(wù)內(nèi)核,開(kāi) %A 中斷,創(chuàng)建一個(gè)根任務(wù)usrRoot。 %A usrRoot(): 初始化I/O 系統(tǒng),初始化系統(tǒng)時(shí) %A 鐘,創(chuàng)建設(shè)備,安裝驅(qū)動(dòng),初始化網(wǎng)絡(luò),調(diào)用用戶(hù) %A 應(yīng)用程序。 %A 驅(qū)動(dòng)程序的開(kāi)發(fā) 與BSP開(kāi)發(fā)工具包一起發(fā) %A 布的軟件中包含了各種類(lèi)型驅(qū)動(dòng)程序的模板,這些 %A 模板提供了所有驅(qū)動(dòng)程序共用的邏輯結(jié)構(gòu),設(shè)計(jì)驅(qū) %A 動(dòng)程序時(shí)一般應(yīng)該按照從上到下的順序。在完成對(duì) %A 驅(qū)動(dòng)程序的計(jì)劃,以及初步形成了由函數(shù)和數(shù)據(jù)結(jié) %A 構(gòu)構(gòu)成的骨架之后, 就可以開(kāi)始準(zhǔn)備執(zhí)行和測(cè)試 %A 了。這部分工作比較復(fù)雜,主要包括編寫(xiě)代碼,測(cè) %A 試、調(diào)試、重新編譯和性能測(cè)試等幾個(gè)步驟,請(qǐng)讀 %A 者參見(jiàn)參考資料l_1]。 %A 參考資料 %A 1 W ind River Systems, Inc. VxWorks BSP Developer s %A Guide,5.5,Edition 1,DOC-14695一ND-00,U & A %A 2002. %A 2 Wind River Systems, Inc. VxWorks Programmer’s %A Guide,5.5,Ed ition 1,1:)O(2-14617一ZD00,U. & A %A 2002. %A 3 陳翌,田 捷,王金剛.嵌入式軟件開(kāi)發(fā)技術(shù).北 %A 京:國(guó)防工業(yè)出版社,2003 %A 。爭(zhēng)‘奪 爭(zhēng) 奪 奪 奪‘奪 奪 奪‘奪 奪‘奪’奪 奪 奪 奪 奪 奪’奪 奪 %A . %A 矗 侖 %A 妾 降低數(shù)據(jù)采集的成本 蕁 %A 立 毒 %A 羔 通過(guò)推出M系列DAQ產(chǎn)品,NI公司不每 %A 寸斷在擴(kuò)展數(shù)據(jù)采集功能的同時(shí)降低設(shè)備的成jc %A 乏本。實(shí)際上,盡管M系列產(chǎn)品增強(qiáng)了I/O的奪 %A 功能,不過(guò)同時(shí)每個(gè)I/0通道的成本也降低jc %A 喜了30 9/6。M系列產(chǎn)品采用了以前DAQ產(chǎn)品÷ %A 寧所不具備的NI-STC 2,NI―MCal和NI―PGIA X %A 毒技術(shù),它還能和NI LabVIEW 和NI―DAQmx々 %A 寧測(cè)量服務(wù)軟件無(wú)縫地集成,從而具有更好的性 %A 毒能、更高的價(jià)值并提供更多的I/0。 %A . 奪.奪.奪.奪.奪.奪.奪.奪.奪.奪.奪.奪.爭(zhēng).爭(zhēng).奪.奪.奪.奪.爭(zhēng).{-.{-.???啼一.奪t} %A 維普資訊 ![]() |