時間:2006-11-15 15:52:00來源:wangj
圖1 BSP在VxWorks中的位置
BSP和PC上的BIOS有很大的區(qū)別,BIOS主要是負責在電腦開啟時檢測、初始化系統(tǒng)設備(設置棧指針,中斷分配,內(nèi)存初始化等)、裝入操作系統(tǒng)并調(diào)度操作.
系統(tǒng)向硬件發(fā)出的指令,把操作系統(tǒng)由硬盤加載到內(nèi)存,并傳遞一些硬件接口設置給系統(tǒng)。在操作系統(tǒng)正常運行后,BIOS的作用基本上也就完成了。PC機BIOS的作用更象嵌入式系統(tǒng)中的Bootloader(最底層的引導軟件,初始化主板的基本設置,為接收外部程序做硬件上的準備)。與Bootloader不同的是BIOS在裝載操作系統(tǒng)的同時,還傳遞一些參數(shù)設置(中斷端口定義等),而Bootloader只是簡單的裝載系統(tǒng)。BSP是和操作系統(tǒng)綁在一起運行在主板上的,BSP的開始部分和BIOS所做的工作類似,但是BSP還包含和系統(tǒng)有關(guān)的基本驅(qū)動(串口,網(wǎng)口等),此外程序員還可以編程修改BSP,在BSP中任意添加一些和系統(tǒng)無關(guān)的驅(qū)動或程序,甚至可以把上層開發(fā)的統(tǒng)統(tǒng)放到BSP中。
2 VxWorks 映象(Image)和啟動過程
2.1 VxWorks映象
VxWorks映象是在Tornado開發(fā)環(huán)境下編譯生
圖2 VxWorks BSP啟動順序
圖3 PCI2040配置空間頭區(qū)域
成的引導程序和VxWorks操作系統(tǒng)。VxWorks映象可大致分為兩類:可引導映象(Bootable Image)和可下載映象(Loadable Image)?梢龑в诚笥址殖刹获v留ROM的映象(Rom-based Image)和駐留ROM的映象(Rom-resident Image)。不駐留Rom的映象再分成壓縮和不壓縮兩種。
對于x86目標機來說一般采用可下載映象,它通過VxWorks引導映象(VxWorks BootRom Image) 加載到目標機的RAM 中運行。本文采用軟盤來啟動VxWork系統(tǒng),BootRom一般選擇bootrom_uncmp格式。在主機上插入空白軟盤,拷貝 BSP目錄下編譯好的bootrom_uncmp.bin文件到host\x86-win32\bin目錄下,并在DOS環(huán)境中,在此目錄下用"mkboot a:bootrom_uncmp"命令生成引導盤。將目標機設置成從軟盤啟動,此引導盤將通過事先設定好的某種耦合方式(串口或者網(wǎng)絡)將主機上的VxWorks映象下載到目標機上運行。下載時需要對Tornado2.2上面的Target Server進行配置,并且打開FTP Server。做成獨立系統(tǒng)的時候需將硬盤格式化成FAT16以下格式。并制作一個DOS啟動盤,上面包括運行"mkboot c:"命令時所需文件和boot.hex文件。在DOS環(huán)境下,在目標機上運行"mkboot c:",這樣就可以通過硬盤來啟動VxWorks Boot了。修改BSP包中的config.h將其中的啟動方式改成硬盤啟動(ata(0,0)),并將#undef include_ATA改成#define include_ATA。重新編譯后啟動目標機,VxWorks映象被下載到硬盤,這樣就做成了硬盤的獨立系統(tǒng)。
BootRom Image和VxWorks Image都對硬件進行初始化,但是內(nèi)容不盡相同。BootRom映象的主要目的是通過網(wǎng)絡或者串口下載VxWorks系統(tǒng),所以它只是初始化很少的硬件系統(tǒng)如網(wǎng)絡接口、串口來滿足下載VxWorks系統(tǒng)的要求。一旦VxWorks系統(tǒng)下載完畢,這些初始化過的硬件的作用也就完成了。而VxWorks啟動的時候會重新對幾乎所有的硬件設備進行完全的初始化,來滿足VxWorks操作系統(tǒng)運行的需要。
2.2 VxWorks啟動流程
VxWorks Image的運行方式分為在ROM中和在RAM中兩種。兩者啟動順序的區(qū)別是在RAM中運行的VxWorks 要調(diào)用sysInit()函數(shù);而在ROM中運行不需要。如圖2 所示,sysInit()主要是初始化RAM用的,采取RAM運行方式系統(tǒng)將直接跳到RAM的首地址運行VxWorks。如果VxWorks在ROM中運行,生成的映像是Rom-resident Image。其優(yōu)點是節(jié)約RAM空間,缺點是運行速度慢。如果VxWorks在RAM中運行,生成的映像Rom-based Image或Loadable Image。目標機為x86時,VxWorks運行在內(nèi)存中。
3 PCI2040芯片簡介
3.1 PCI2040芯片特點
PCI2040符合PCI局部總線2.2規(guī)范,能夠?qū)崿F(xiàn)PCI 局部總線與TMS320C54X(或TMS320C6X)的HPI(Host Port Interface)接口的無縫鏈接。一片PCI2040可以同時與4片DSP的HPI接口相連。PCI2040還提供了一個16位的通用總線(General-Purpose Bus)接口(提供JATG的無縫接口),可以兼容3.3V和5V信號環(huán)境。
3.2 PCI2040與TMS320VC5409連接
系統(tǒng)利用PCI2040實現(xiàn)TMS320VC5409與PC機的通訊。由于PCI2040是TI的配套專用芯片,硬件級的連接比較簡單,將對應的引腳連接即可。需要注意的是,未用的輸入信號線需要通過上拉電阻上拉至有效邏輯電平。TMS320VC5409將得到的數(shù)據(jù)經(jīng)過處理后,通過PCI2040傳輸?shù)絇C機的PCI局部總線,數(shù)據(jù)在PC機上得到進一步的處理,并顯示在屏幕上。
3.3 PCI2040配置空間
定義一個PCI總線配置空間的目的在于提供一套適當?shù)呐渲么胧,使之實現(xiàn)完全的設備再定位;無需用戶干預安裝、配置和引導;并由與設備無關(guān)的軟件進行系統(tǒng)地址映射。在系統(tǒng)上電時,操作系統(tǒng)將PCI配置空間映射到PC的內(nèi)存中,操作系統(tǒng)通過對內(nèi)存相應位置的讀寫來實現(xiàn)對PCI配置空間的訪問。PCI總線的一個物理設備可能包含一個或多個PCI功能設備,也稱邏輯設備。每個PCI功能設備都有64個配置雙字用于實現(xiàn)配置寄存器。PCI協(xié)議定義了開頭16個雙字的格式和用途,稱為設備的配置頭區(qū)域,其他48個雙字的用途與設備有關(guān)。圖3是PCI2040配置空間頭區(qū)域結(jié)構(gòu)。其中在基地址寄存器中HPI CSR memory base address表示將PCI2040中的HPI CSR寄存器映射到存儲器空間的基地址,Control space base address表示將PCI2040中的32K字節(jié)的控制空間映射到存儲器空間的基地址。數(shù)據(jù)的傳輸是在后者區(qū)域內(nèi)進行的。
4 基于PCI2040的BSP開發(fā)
BSP一定要按照某種CPU的BSP定義形式來編寫,大多數(shù)情況下是在某一個成型的BSP模板上進行修改。本文所使用的開發(fā)編譯環(huán)境是Tornado2.2/VxWorks5.5,目標機CPU是x86系統(tǒng)中的Pentium3。在Tornado2.2中,其對應的BSP位于Tornado2.2\target\config\pcPentium3文件夾下。
4.1 realtek81x9網(wǎng)卡驅(qū)動在BSP中的配置
本系統(tǒng)采用網(wǎng)絡接口的方法從主機上下載VxWorks系統(tǒng)到目標機上。Tornado2.2本身對網(wǎng)卡類型的支持并不包括常用的realtek(瑞昱)網(wǎng)卡,需要在相應的BSP包中增加對realtek81x9網(wǎng)卡驅(qū)動的支持,使得VxWorks系統(tǒng)能夠被目標機上的realtek81x9網(wǎng)卡下載。Realtek公司提供面向Tornado2.2的realtek81x9網(wǎng)卡驅(qū)動,其中包括6個文件。將其中的sysNet.c、sysRtl91x9End.c、config.h、configNet.h四個文件拷貝到Torna-do2.2\target\config\pcPentium3目錄下,替換原來的同名文件和增加文件;將rtl81x9.c文件拷貝到Tornado2.2\target\src\drv\end\unsupported目錄下;將rtl81x9.h文件拷貝到Tornado2.0\ta-rget\h\drv\end\unsupported目錄下。創(chuàng)建一個downloadable工程文件,選擇pcPentium3參數(shù),將拷貝到unsupported目錄下的rtl81x9.c文件加入到工程中,并設置編譯參數(shù),這樣編譯產(chǎn)生的BootRom映象便可以支持realtek81x9網(wǎng)卡從主機上把VxWorks系統(tǒng)下載到目標機上運行。
4.2 BSP中增加對PCI2040的驅(qū)動支持
在Tornado2.0\target\configpcPentium3BSP目錄下編寫pci2040Drv.c和sysPci2040.c兩個文件。前者負責尋找和初始化PCI設備,后者按照PCI配置空間中的基址寄存器的值在VxWorks操作系統(tǒng)中映射和分配空間。
在pci2040Drv.c文件中首先定義一個結(jié)構(gòu)體用來記錄尋找到的PCI2040信息?梢匀缦露x:
typedef struct pci2040Dev { DEV_HDR devHdr; int BusNo;
int DeviceNo; int FuncNo;
ULONG membase0;ULONG membase1;unsigned char irq;int irqvec;
} PCI2040_DEV;
接下來使用pciFindDevice()函數(shù)根據(jù)給定的PCI2040的Vendor ID(0x104C)和Device ID(0xAC60)來尋找設備。接下來可以用 pciConfig-InLong()函數(shù)來查看PCI2040的配置空間,并且最好使用pciHeaderShow()函數(shù)打印出所查看到的值來確認設備是否被找到。然后調(diào)用iosDrvInstall()函數(shù)將各種I/O服務與我們編寫的驅(qū)動服務例程掛接起來,并將驅(qū)動賦值后加到驅(qū)動列表中。接下來編寫pci2040DevCreate()服務例程來創(chuàng)建PCI2040驅(qū)動,這里可以對PCI2040的各個寄存器定位和初始化。例如,以下語句就是對DSP上的HPID寄存器的定位:
pDspHpiDatawaRegister=pci2040Dev[0].membase1 + 0x800;
在這個文件里可以編寫讀、寫服務例程和中斷服務例程,也可以將這三者放到應用程序里面編寫。
在sysPci2040.c函數(shù)中應用sysMmuMapAdd()函數(shù)來進行地址映射,將VxWorks操作系統(tǒng)能夠管理的內(nèi)存與PCI2040和DSP上面的寄存器相互對應起來,并定義一個PCI橋結(jié)構(gòu)記錄PCI2040的信息,以提供給系統(tǒng)辨識。
除了這兩個函數(shù)的編寫以外,還需要對BSP中的一些文件設置進行修改。如在文件config.h中加入語句 #define INCLUDE_PCI (添加PCI模塊),在文件sysLib.c中加入語句# include "sysBrdg.c"(支持PCI橋設備)等。
4.2 編寫應用程序和編譯操作系統(tǒng)
在建立的downloadable工程文件中編寫usrAppInit.c應用程序。其主要是調(diào)用BSP中編寫的函數(shù)來完成數(shù)據(jù)的傳輸、處理和對中斷的響應。例如,中斷服務例程如下:
void pci2040Isr()
{ 。。。
tempChar=*(pRegister+0x4);
if((tempChar&0x1)。0)
{ *(pRegister+0x4)=0x1;
tempV= *(pDspRegister);
*(pDspRegister)=tempV|0x0808;
Printf("Interrupt happened !!!\n");
semGive(semForInt);
}
}
其中if((tempChar&0x1)。0)語句用來判斷HPI CSR寄存器中的中斷位是否被置1。如果被置1的話表示有中斷發(fā)生,用*(pRegister+
0x4)=0x1語句清除中斷,并用*(pDspRe-gister)=tempV|0x0808語句清除HPIC中DSP對PC的置位,并設置旗語semForInt,以便調(diào)用中斷來進行數(shù)據(jù)傳輸和處理。
在Tornado環(huán)境下對工程進行編譯,完畢后在BSP目錄下將生成VxWorks文件(沒有后綴名),這個文件也就是要下載到目標機上運行的VxWorks映象。
5 總結(jié)
VxWorks實時操作系統(tǒng)采用開放標準,使開發(fā)者在進行系統(tǒng)優(yōu)化的時候具有更高的效率;并且引入了基于MMU的內(nèi)存保護技術(shù),使系統(tǒng)可靠性顯著提高。PCI局部總線是目前PC和工控機上的總線標準,其帶寬可以滿足高速數(shù)據(jù)傳輸?shù)男枰。開發(fā)VxWorks系統(tǒng)下的PCI驅(qū)動程序,可以滿足各個系統(tǒng)中對數(shù)據(jù)傳輸速度增長的需求。對本文相應地方進行修改便能開發(fā)針對不同PCI橋接芯片的BSP包。
標簽:
上一篇:基于交流位置伺服控制原理的...
傳動網(wǎng)版權(quán)與免責聲明:凡本網(wǎng)注明[來源:傳動網(wǎng)]的所有文字、圖片、音視和視頻文件,版權(quán)均為傳動網(wǎng)(connectcrack.com)獨家所有。如需轉(zhuǎn)載請與0755-82949061聯(lián)系。任何媒體、網(wǎng)站或個人轉(zhuǎn)載使用時須注明來源“傳動網(wǎng)”,違反者本網(wǎng)將追究其法律責任。
本網(wǎng)轉(zhuǎn)載并注明其他來源的稿件,均來自互聯(lián)網(wǎng)或業(yè)內(nèi)投稿人士,版權(quán)屬于原版權(quán)人。轉(zhuǎn)載請保留稿件來源及作者,禁止擅自篡改,違者自負版權(quán)法律責任。
產(chǎn)品新聞
更多>2025-10-09
2025-09-23
2025-09-23
2025-09-08
華為昇騰Atlas800iA2 910B服務器Deepsee...
2025-09-04
2025-09-03