摘 要:針對Pentium處理器目標(biāo)機(jī)上VxWorks操作系統(tǒng)的研發(fā),BSP和設(shè)備驅(qū)動程序的設(shè)計是一個關(guān)鍵環(huán)節(jié)和難點(diǎn)。文章對BSP和驅(qū)動程序設(shè)計中的理論和關(guān)鍵技術(shù)進(jìn)行了分析研究,應(yīng)用風(fēng)河公司開發(fā)的Tornado集成開發(fā)環(huán)境,設(shè)計了VxWorks下的BSP。在此基礎(chǔ)上,開發(fā)完成基于VxWorks和Pentium處理器的通用開發(fā)平臺。
關(guān)鍵詞:VxWorks;BSP;Tornado
1 概述
作為一種高性能嵌入式實時操作系統(tǒng)(RTOS),其持續(xù)發(fā)展能力好,內(nèi)核性能高、用戶開發(fā)環(huán)境友好,具有良好的可靠性和卓越的實時性,被廣泛應(yīng)用在通信、軍事、航空、航天等實時性要求極高的領(lǐng)域中。嵌入式實時操作系統(tǒng)VxWorks在上述領(lǐng)域中正發(fā)揮著越來越重要的作用,甚至?xí)绊懙秸麄€產(chǎn)品的性能指標(biāo)。
2 BSP組成及作用
BSP(Board Support Package,——板級支持包)是嵌入式系統(tǒng)開發(fā)過程中根據(jù)分層設(shè)計思想,將系統(tǒng)中與硬件直接相關(guān)的一層軟件獨(dú)立出來。屏蔽硬件提供操作系統(tǒng)的驅(qū)動及硬件驅(qū)動,是BSP的主要功能。BSP和設(shè)備驅(qū)動程序是嵌入式系統(tǒng)的研發(fā)過程中的關(guān)鍵環(huán)節(jié),其質(zhì)量直接影響到整個系統(tǒng)的穩(wěn)定性和可靠性。
BSP主要由與主板相關(guān)的網(wǎng)口、串口等初始化代碼和硬件驅(qū)動程序兩部分組成。
BSP初始化主要是設(shè)備從加電開始,對CPU相關(guān)的寄存器、I/O口、網(wǎng)絡(luò)口、系統(tǒng)數(shù)據(jù)等進(jìn)行初始化。
以PMI2開發(fā)板為例,BSP主要作用包括:
(1)PMI2主板硬件初始化,主要對Intel Pentium的初始化,對整個設(shè)備提供底層硬件支持。
(2)為操作系統(tǒng)提供PMI2主板底層驅(qū)動程序和系統(tǒng)中斷服務(wù)程序。
(3)操作系統(tǒng)的功能可以定制,為軟件系統(tǒng)提供一個實時多任務(wù)的運(yùn)行環(huán)境。
3 基于Pentium處理器BSP開發(fā)環(huán)境及設(shè)計
3.1 PMI2主板硬件配置說明
開發(fā)環(huán)境及開發(fā)工具:開發(fā)板使用盛博科技PMI2主板,硬件配置為256M內(nèi)存、1.6GHz單核Itel Pentium CPU、VGA控制器、100/1000M網(wǎng)絡(luò)控制器、Intel82559網(wǎng)卡,開發(fā)軟件為Tornado2.2,主機(jī)安裝目錄為“C:\ Tornado2.2\”。
3.2 開發(fā)環(huán)境
開發(fā)調(diào)試環(huán)境為Tornado2.2,是風(fēng)河公司研制的,它包含三部分:
(1)開發(fā)工具和實用程序。
(2)運(yùn)行在PMI2主板CF卡上的實時操作系統(tǒng)VxWorks。
(3)連接顯控軟件和PMI2主板通信設(shè)備的多種通訊方式,如網(wǎng)絡(luò),串口等。
Tornado2.2開發(fā)軟件如圖1所示:
3.3 設(shè)計目標(biāo)
在Pentium處理器上使用帶有標(biāo)準(zhǔn)板級支持包的Tornado2.2軟件,開發(fā)出滿足主板硬件資源驅(qū)動的BSP:(1)支持Pentium處理器。(2)支持ICH4內(nèi)建雙通道IDE硬盤。(3)支持ICH4集成的以太網(wǎng)控制器。(4)支持USB2.0鍵盤、鼠標(biāo)。(5)支持CRT和單雙通道LVDS。
BSP開發(fā)需要熟悉并掌握VxWorks映像種類,系統(tǒng)的啟動順序和過程,以及BSP軟件包中各文件的功能、組成以及相應(yīng)的文件設(shè)置。
其中BSP與VxWorks關(guān)系如圖2所示:
4 BSP設(shè)計過程
BSP設(shè)計是整個嵌入式系統(tǒng)開發(fā)的前期,作為系統(tǒng)內(nèi)應(yīng)用程序正常運(yùn)行的保證。結(jié)合實際中的工程,對Pentium處理器目標(biāo)板BSP的設(shè)計與開發(fā)可以分為五個步驟。
4.1 建立開發(fā)環(huán)境
實時嵌入式操作系統(tǒng)在調(diào)試環(huán)境上與桌面操作系統(tǒng)存在明顯的區(qū)別,它具有一套強(qiáng)有力的交叉開發(fā)工具,被稱為交叉調(diào)試,并且Tornado2.2開發(fā)環(huán)境是基于架構(gòu)的,所以采用主機(jī)和目標(biāo)機(jī)交叉開發(fā),通訊方式采用以太網(wǎng)通訊。
Pentium處理器目標(biāo)板配置有單雙通道LVDS接口,以及相應(yīng)的網(wǎng)口、串口接口,可以通過它對硬件進(jìn)行調(diào)試,同時也將bootrom映像燒入到主板上的8G CF卡中。由此建立起硬件和軟件的開發(fā)環(huán)境。
開發(fā)平臺結(jié)構(gòu)如圖3所示:
4.2 基于PMI2主板BSP開發(fā)包的選擇
BSP的開發(fā)是銜接系統(tǒng)硬件與軟件的重要環(huán)節(jié),開發(fā)模板的選擇尤為重要。選擇與開發(fā)板相近的BSP開發(fā)包可以大大減少開發(fā)周期。
對Pentium處理器開發(fā)板進(jìn)行BSP設(shè)計時,首先選擇一個與該板卡處理器型號相近的BSP 包(pcPentium開發(fā)包),如圖4所示。然后根據(jù)PMI2主板板卡外圍器件進(jìn)行修改或添加代碼,滿足項目的應(yīng)用,這樣可以起到事半功倍的效果。
具體操作步驟如下:
打開C:\Tornado2.2\target\config\下的pcPentium文件夾,改名為PMI2。
復(fù)制C:\Tornado2.2\target\config\All 全部文件到目錄PMI2中。
PMI2文件中包含了所有頭文件和開發(fā)板的特殊定義,在此基礎(chǔ)上對開發(fā)板的硬件資源進(jìn)行設(shè)置,修改啟動命令行CPU = = PENTIUM定義如下:
#define DEFAULT_BOOT_LINE \"ata = 0,0(0,0) fwq:D/jgzc/ata0/jgzcsb h=100.10.6.1 e=100.10.6.4 u=zy pw=nihao tn=jggj o=fei\"
其意義是:
使用第0個ata控制器和第0個驅(qū)動; 主機(jī)名稱為fwq;
VxWorks映象下載的完整路徑是D/jgzc/ata0/jgzcsb;
主機(jī)IP為100.10.6.1; 目標(biāo)機(jī)IP為100.10.6.4;
下載VxWorks映象的FTP服務(wù)器的用戶名為zy;
FTP密碼為nihao; 目標(biāo)機(jī)名稱為jggj;
通過網(wǎng)口(fei,Intel82559芯片控制)使用WDB(WindDebug)協(xié)議。
4.3 BootRom的運(yùn)行
BootRom類型映像是一個最小化、專用的jgzcsb引導(dǎo)映像, 實現(xiàn)最少的系統(tǒng)初始化(如網(wǎng)口、多串口等),主要用于啟動裝載jgzcsb映像,其功能類似于PC機(jī)的BIOS。
本項目在BootRom啟動時,完成初始化CPU、堆棧指針、寄存器,清理內(nèi)存,屏蔽中斷、CACHE;實現(xiàn)地址的映射搬家。在啟動后,完成多任務(wù)環(huán)境建立, 包括usrRoot任務(wù)、網(wǎng)絡(luò)任務(wù)、多串口任務(wù)和FTP任務(wù)等。引導(dǎo)映像在8G CF卡中執(zhí)行(駐留型引導(dǎo)映像),為下一步加載VxWorks映像做準(zhǔn)備,系統(tǒng)中其對應(yīng)的編譯規(guī)則文rules.bsp。
BootRom運(yùn)行時,調(diào)用的系統(tǒng)函數(shù)流程如圖5所示:
4.4 VxWorks的配置及啟動
VxWorks類型映像是系統(tǒng)的主映像,它由一個體積很小的內(nèi)核及一些可以根據(jù)需要定制的系統(tǒng)模塊組成,是真正運(yùn)行于目標(biāo)板上的操作系統(tǒng)。在風(fēng)河公司提供的集成開發(fā)環(huán)境Tornado2.2中,用戶可以方便地對系統(tǒng)進(jìn)行裁剪。
依據(jù)可裁剪性特點(diǎn),項目根據(jù)實際需要對VxWorks進(jìn)行了最優(yōu)配置,刪除了圖形顯示、TrueFFS設(shè)備等模塊,增加了Ftp、定時器、網(wǎng)絡(luò)系統(tǒng)模塊,如圖6所示。通過BootRom引導(dǎo)映像加載VxWorks應(yīng)用,并跳轉(zhuǎn)到VxWorks的入口函數(shù)SysInit(),執(zhí)行應(yīng)用程序,運(yùn)行于VxWorks系統(tǒng)之上。
本項目VxWorks系統(tǒng)啟動過程如表1所示:
4.5 測試與驗證
作為與硬件緊密結(jié)合的軟件模塊,對BSP進(jìn)行充分的單元測試和集成測試是開發(fā)成功的保證。
在項目中,開發(fā)BSP模塊的網(wǎng)絡(luò)驅(qū)動程序時,由于實時操作系統(tǒng)沒有提供Itel82559網(wǎng)卡驅(qū)動源代碼,為了確保整個系統(tǒng)的穩(wěn)定運(yùn)行,系統(tǒng)對網(wǎng)絡(luò)展開了如下的測試:
(1)進(jìn)行網(wǎng)絡(luò)協(xié)議棧與網(wǎng)絡(luò)驅(qū)動程序的集成功能測試,確保網(wǎng)絡(luò)驅(qū)動程序的功能正確。
(2)全面測試運(yùn)行在該網(wǎng)絡(luò)接口上各種網(wǎng)絡(luò)協(xié)議,如ICMP、TCP等。
5 結(jié)束語
在介紹BSP的基本概念和作用的基礎(chǔ)上,重點(diǎn)介紹了VxWorks 實時操作系統(tǒng)的BSP設(shè)計的具體步驟以及需要注意的問題。文章以盛博科技PMI2開發(fā)板為例,分析了基于VxWorks的BSP, 并實現(xiàn)了在實際工程中的應(yīng)用。然而入式設(shè)計的難點(diǎn)在于,針對不同的CPU板, 需根據(jù)具體的硬件板進(jìn)行具體設(shè)計。
參考文獻(xiàn)
[1] WindRiver System Inc. VxWorks BSP Developer's Guide 5.5[M].2002.
[2]周伯平,張楊,吳瓊.VxWorks下設(shè)備驅(qū)動程序及BSP開發(fā)指南[M].北京:中國電力出版社,2004.