《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計應(yīng)用 > Vxworks Board Support Package的設(shè)計
Vxworks Board Support Package的設(shè)計
摘要: BSP是BoardSupportPackage的縮寫,。該術(shù)語通常用于嵌入式領(lǐng)域,,主要指在開發(fā)嵌人式應(yīng)用時系統(tǒng)開發(fā)商提供的各種粗動支持庫,。在嵌人式領(lǐng)域人們對BSP有各種不同的理解,。
關(guān)鍵詞: 軟件 BSP Vxworks 嵌入式
Abstract:
Key words :

  BSP是Board Support Package的縮寫。該術(shù)語通常用于嵌入式領(lǐng)域,,主要指在開發(fā)嵌人式應(yīng)用時系統(tǒng)開發(fā)商提供的各種粗動支持庫,。在嵌人式領(lǐng)域人們對BSP有各種不同的理解:

  (1) 操作系統(tǒng)的驅(qū)動程序。嵌人式系統(tǒng)提供商的權(quán)威— WindRiver公司對BSP的理解偏向于是OS的驅(qū)動程序(從其BSP的文檔中可以看出),,因為嵌人式系統(tǒng)中的各種設(shè)備的確名目擠多,,因此將BSP定位于OS的驅(qū)動的確有一定的道理.

  (2) 驅(qū)動程序,。對于認為BSP就是驅(qū)動程序的人來講,,他們通常接觸的是嵌人式系統(tǒng)提供商提供的某種應(yīng)用解決方案的應(yīng)用系統(tǒng)(total solution)。在這種開發(fā)系統(tǒng)中,,BSP完全有理由被認為是所有驅(qū)動程序,,因為開發(fā)人員沒有必要自己去開發(fā)驅(qū)動程序,而只是驗證驅(qū)動程序在自己的系統(tǒng)中是否正確即可.

  (3) HAL(HardwareA bstractL ayer),。對于開發(fā)嵌人式OS的人來講,,傾向于將BSP看成是對硬件平臺的抽象層(HAW和處理器的馭動程序更恰當(dāng).

  實際上各種理解都只是側(cè)重于某個方面。由于每個嵌人式系統(tǒng)提供商都根據(jù)自己的操作系統(tǒng)而提出對BSP的不同理解,,因此,,在涉及到BSP的具體涵義時,人們往往有一種似是而非的感覺.實際是各種理解都有其道理,,但由于出發(fā)點不同,,對BSP的理解都有失全面甚至有錯誤的地方,這也是初學(xué)者容易混淆的原因,。對于進行硬件和軟件開發(fā)的人員,,第三種理解比較合適,后面的分析也是建立在這個基礎(chǔ)之上的,。這里通過 BSP(BoardS upport Package)和BIOS(BasicI nputa ndO utputS ystem)的對比,,來說明板級支持包的功能。BSP說得簡單一點,,就是一段啟動代碼,,與計算機主板的BIOS差不多.提供的功能卻有較大的差別,。我們都知道,在通用8051等系列單片機開發(fā)的過程中,,要有小段程序設(shè)堆棧指針,、軟復(fù)位和中斷屏蔽等等可以把這短程序稱為它的BSP,實時操作系統(tǒng)的BSP相對復(fù)雜一點,但通常也是設(shè)t堆棧指針,,建立中斷向量表,,初始化寄存器(控制外圍器件如DRAM和EDO RAM條,控制I/O Q的寄存器,、片選信號等),,配里地址空間以及系統(tǒng)啟動方式。BIOS是微機的基本輸人輸出系統(tǒng),,其內(nèi)容集成在微機主板上的一個ROM芯片上,,主要保存著有關(guān)微機系統(tǒng)最重要的基本輸入輸出程序,如系統(tǒng)設(shè)置信息,、開機上電自檢程序和系統(tǒng)啟動自舉程序等,。BIOS中斷服務(wù)程序?qū)嵸|(zhì)上是微機系統(tǒng)中軟件與硬件之間的一個可編程接口,主要用于程序軟件功能與微機硬件之間的連接,。例如,,Wind-98 對軟驅(qū)、光驅(qū)和硬盤等管理及中斷的設(shè)置等服務(wù)和程序,。BIOS系統(tǒng)設(shè)置程序,,微機部件配置記錄是放在一塊可的CMOS RAM芯片  中的,主要保存著系統(tǒng)的基本悄況,、CPU特性和軟硬盤驅(qū)動器等部件的信息,,可以對其各項參數(shù)進行設(shè)It. BIOS系統(tǒng)啟動自舉程序,系統(tǒng)完成POST自檢后,,ROM BIOS就首先按照系統(tǒng)CMOS設(shè)置中保存的啟動順序搜索軟硬盤驅(qū)動器及CD-ROM,。網(wǎng)絡(luò)服務(wù)器等有效地啟動驅(qū)動器,讀人操作系統(tǒng)引導(dǎo)記錄然后將系統(tǒng)控制權(quán)交給引導(dǎo)記錄,,并由引導(dǎo)記錄來完成系統(tǒng)的順序啟動,,實時操作系統(tǒng)的BSP就相當(dāng)于PC的BIOS一般來說,對不同的微處理器板以及不同的RTOS時,,就應(yīng)該配置不同的BSP, BSP可以是已經(jīng)做好了的,,不需要開發(fā)人員去關(guān)心寄存器設(shè)置的細節(jié)。

  當(dāng)然根據(jù)實際的要求用戶也可以改寫B(tài)SP來加人自己的特定功能o BSP可針對不同的硬件做不同的調(diào)整,,相應(yīng)于PC的BIOS.它完成對硬件的初始化工作,,執(zhí)行完后再將執(zhí)行權(quán)交給RTOS。在BSP中,,只需要對與硬件相關(guān)的寄存器(主要是DRAM,SD RAM和片選)及與中斷相關(guān)的寄存器進行正確配Y即可.BSP程序越簡單越好,,能放在主程序中初始化的功能盡A不要放在其中,,BSP配I程序只要能保證系統(tǒng)正常啟動即可.大部分RTOS帶有針對不同徽處理器的BSP程序,用戶只要稍做修改即可移植到自己的開發(fā)應(yīng)用中設(shè)備驅(qū)動程序(Drivers)指用于處理,、管理硬件控制(controller)的代碼,。設(shè)備馭動程序是將基礎(chǔ)建立在具體的操作系統(tǒng)之上,而不是某種類型的處理器(CPU)(這很重要),。實際運用中,,人們可能選擇不同的目標(biāo)硬件(CPU),如PowerPC,A RM,X 86,,并且配f不同的操作系統(tǒng).即使對于同一種類型的目標(biāo)硬件,,不同的操作系統(tǒng)也要編寫不同的BSP。對于驅(qū)動程序,,實際上是在操作系統(tǒng)的層次上對不同的設(shè)備控制器所寫的代碼,。

  實時操作系統(tǒng)的馭動程序與PC的相類似eR TOS通常在BSP定義了一套自己的驅(qū)動程序接口,根據(jù)這些接口寫相應(yīng)的驅(qū)動程序,。當(dāng)然RTOS與硬件較緊密,,靈活性較大,開發(fā)人員完全可以拋開它提供的接口而自己編寫駱動程序.這同直接在C代碼中調(diào)用BIOS提供的底層功能(如BIOS中斷)編寫程序類似,。BSP通??梢哉J為是基于硬件平臺的。當(dāng)開發(fā)某個平臺且與硬件相關(guān)的程序時,,往往不得不從設(shè)置某個寄存器的某個位開始編程,。在嵌人式領(lǐng)城,這種情況更為明顯,,幾乎所有的設(shè)備控制和各種協(xié)議控制都在同一個嵌人式CPU核當(dāng)中,非常有利于對CPU核和設(shè)備進行抽象.如果能對CPU核和設(shè)備的各種控制進行抽象,,則人們在移植OS或者開發(fā)馭動程序時,,就沒有必要對CPU進行非常深入的了解,不必要了解某個寄存器的某個位是控制什么的,,也沒有必要了解怎樣初始化某個控制寄存器等等,。因此,BSP是一種能為程序開發(fā)人員提供對硬件進行描述性操作的開發(fā)支律庫,。描述性操作是指在控制硬件時只需知道要完成什么,,而不需要知道如何去完成,每個操作都是一些單一的動作.例如:對于設(shè)置一個串口的波特率,,只需要知道是哪個申口,,波特率是多少,而不需要知道要寫哪一個寄存器以及如何寫等,。在利用BSP編寫驅(qū)動程序時,,編程人員只需要了解該驅(qū)動程序的初始化順序以及初始化的內(nèi)容,,而不需要了解初始化的具體細節(jié)就能完成驅(qū)動程序??梢源蟠蟮靥岣吖ぷ餍?。并且對于硬件的具體細節(jié)設(shè)1l`是在驅(qū)動程序中最容易出錯的地方,而利用BSP支撐庫則可以大大地減少出堵的可能性,。在BSP支排庫中,,除了包含對硬件的描述性操作部分的代碼外,還包含了對目標(biāo)板的初始化部分,、中斷管理部分以及一些簡單的驅(qū)動程序程序單元,。這樣的BSP可以不依賴于任何操作系統(tǒng)和駱動程序,但是可以作為操作系統(tǒng)和驅(qū)動程序的開發(fā)支排庫,,可以非常方便地移植或者開發(fā)操作系統(tǒng)與驅(qū)動程序,。在最好的情況下,操作系統(tǒng)與駱動程序的移植只需要更換相應(yīng)平臺下的BSP支排庫即可完成移植,。BSP是對目標(biāo)系統(tǒng)的軟件支持,,是一些硬件具體的函數(shù)的集合,主要完成下面的功能:

  (1) 在系統(tǒng)啟動時,,對目標(biāo)系統(tǒng)進行硬件初始化;

  (2) 提供對目標(biāo)系統(tǒng)設(shè)備的接口.如時鐘,、Ethernet控制器、串行芯片和SCSI控制器在PSOS 中,,對于不同的開發(fā)系統(tǒng),,其不同的特性在板級支持包BSP的bsp.h 文件中作了具體的定義。例如基本特性,,包括處理器類型BSP_CPUFAMILY(PoweiTC,68000,X86和1960等),,具體的處理器(PPC604和PPC603等),還有浮點支持BSP_FPU,,字符模式選擇BSP間的開始地址,。其它的如串行通道特性、LAN接口特性ENDIAN等,BSP_RAM_BASE RAM空,、共享存儲器通信以及板級支持包參數(shù)設(shè)定的缺省值,。bsp.h ,bspcfg.h 和bspcfg.c 文件提供了在應(yīng)用程序編譯時對某些BSP特性進行配置是必要的。BSP進行配置的選項和實現(xiàn),。應(yīng)用程序?qū)?,BSP_ LANI表明BSP是否需要LAN驅(qū)動,可以設(shè)置為是或否,。這個參數(shù)會被多個文件使用,,包括是否編譯和建立LAN驅(qū)動,讓操作系統(tǒng)支持LAN操作目標(biāo)系統(tǒng)在復(fù)位后,,要做的第一項工作就是對硬件設(shè)備進行初始化,,執(zhí)行Hwdinit函數(shù),。該函數(shù)完成在C中無法進行的初始化任務(wù),Initboard函數(shù)在C代碼繼續(xù)板級初始化,,這通常被稱為硬件初始化(hardware initialization),,相應(yīng)的sysinit函數(shù)完成非硬件初始化任務(wù)(software initialization)。在Hwdinit中BSP中對具休的處理器配置步驟如下

  (1) 設(shè)置MSR,,包括校驗,、優(yōu)先級模式、禁止中斷,、禁止地址轉(zhuǎn)換,。即extern unsigned long ppcMSRrd(void);

  (2 )給減計數(shù)器處置,調(diào)用ppcDECwr,把值寫人DE(,,即exter nvoid ppcDECwr(unsignedl ongv alue);

  (3) 禁止指令和數(shù)據(jù)Caches,,即exter nunsigned long SysDcachelnhibit(void); exter nvoid SysIcacheInhibit(void);

  (4) 初 始 化核心寄存器,包括MachineS tatusR egister( MSR) //機器校驗使能,,中斷可恢復(fù)Instruction Support Control Register (ICTRL) / /開 發(fā) 端 口捕 獲 使能Debug Enable Register (D ER O) // 關(guān) 閉調(diào) 試 中 斷Interrupt Cause Register( ICR ) / /關(guān) 閉中 斷 事 件Internal Memeory MapRegister (IMMR ) // 設(shè) 里 內(nèi)部 存 儲 區(qū) 地 址System Interface Unit (SIU )

  Module Configuration Register ( SIUMCR )Reset Status Register RSR) //復(fù) 位 狀 態(tài) 控制

  (5)使能減法計數(shù)器,。

  (6)初始化片選寄存器。(對Flash內(nèi)存)

  (7)確定DRAM的類型,,設(shè)UPMX初始化表,,即extern HdwInitDRAM(void)為了通過 UPMX訪問外部不同結(jié)構(gòu)和速率DRAM,生成相應(yīng)的初始化表,,可以使用Motorola提供的MCUinit軟件來生成,。

  (8)把 Data Section從FlashROM拷貝到RAM。根據(jù)硬件配宜,,這是可選的,,通常不作.最后 , 根 據(jù)具體的目標(biāo)系統(tǒng)設(shè)It合理的系統(tǒng)參數(shù),,通過棋板建立設(shè)備接口,,編寫編譯文件和鏈接文件把BSP和操作系統(tǒng)鏈接起來。

此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載。