基于PC104總線(xiàn)的VxWorksBSP設計
VxWorks內核的加載分為兩個(gè)步驟,第一個(gè)步驟是PCBIOS對bootrom的加載,第二個(gè)步驟是BSP引導映像bootrom對VxWorks操作系統映像加載?;玖鞒倘缦滤荆?P align=left>
2.3 BSP中函數調用過(guò)程分析
BSP啟動(dòng)操作系統的過(guò)程中,需要調用一列函數以完成對系統內存映像的加載,整個(gè)過(guò)程分析如下,RomInit函數初始化處理器,關(guān)閉高速緩存,關(guān)中斷,初始化內存。接著(zhù)調用RomStart,把映像的數據段拷貝到RAM中去,然后調用usrInit()對Bss段清零,調用intVecBaseSet()設置矢量基地址表,調用excVecInt()初始化中斷以及異常的向量表,初始化系統硬件,調用 usrKernelInit()初始化wind內核,最后執行流程執行到kernelInit(),kernelInit啟動(dòng)wind內核。Wind內核的第一個(gè)任務(wù)是usrRoot它通過(guò)調用usrAppInit啟動(dòng)用戶(hù)的任務(wù),系統可真正啟動(dòng)。
2.4 修改BSP設計概要
一般情況下,Tornado提供一些評估板的板載支持包,而PC104主機板是根據工作實(shí)際需要購買(mǎi)的,評估板的板載支持包不能夠直接使用,需要進(jìn)行修改完善??尚械姆椒ㄊ牵夯趐c586的BSP作為模板進(jìn)行適當修改,以滿(mǎn)足這款PC104主機板的特定硬件環(huán)境。
板載支持包通常存放在Tornado的安裝目錄下面,其路徑是Root/target/config /bspname,root代表tornado的安裝目錄。設計一個(gè)可用的新的板載支持包,必須對Tornado本身自帶板載支持包作一定的分析。 pc586板載支持包主要包括一些C文件和一些匯編文件,它們是:config.h,configAll.h,Pc.h,sysLib.c,ctdt.c,sysNetif.c,mkboot.c。板載支持包的缺省配置是由configALL.h來(lái)確定的,用戶(hù)可通過(guò)config.h來(lái)改變缺省配置。缺省配置是按照處理器廠(chǎng)商的評估板外圍硬件進(jìn)行系統配置,根據實(shí)際硬件環(huán)境,一般需要做一定的改動(dòng),通常會(huì )在config.h中進(jìn)行,通過(guò)一系列的定義宏,完成系統配制工作。
要設計針對這個(gè)半物理仿真試驗的所選用的PC104主機板板載支持包,增加VxWorks對CF卡支持,需要做出較大改動(dòng)的文件是config.h和configAll.h以及sysLib.c這3個(gè)文件,具體如下:
①在config/bspname/bspname.h中找到修改其CF卡的中斷號,因為一般中斷號0x9是預留給硬盤(pán)接口,為了避免產(chǎn)生中斷沖突,將#define ATA1_INT_LVL0x9,改為#define ATA1_INT_LVL0xf
②在config/bspname/sysLib.c中找到ATA_RESOURCEataResource[]={................PCMCIA................ }
修改為ATA_RESOURCEataResource[]={................IDE_LOCAL................. }
另外還需要改寫(xiě)其他的參數,例如ATA1_CONFIG等。
③在config.h中,把#define SYS_WARM_ATA_CTRL 0改為#define SYS_WARM_ATA_CTRL 1這樣系統熱啟動(dòng)后,就會(huì )從CF卡上的引導區上引導。
④在config.h中將#define SYS_WARM_TYPE SYS_WARM_FD/*warmstartdevice*/改為#define SYS_WARM_TYPESYS_WARM_ATA
⑤修改ataType數組使它和所選的CF卡的幾何參數(磁道,扇區,柱面等)相等。
將原來(lái)的ataTypes數組ATA_TYPEataTypes[ATA_MAX_CTRLS] [ATA_MAX_DRIVES]= {................{{761,8,39,512,0xff},/*ctrl1drive0*/...............};
改為ATA_TYPE ataTypes [ATA_MAX_CTRLS] [ATA_MAX_DRIVES]= {................{{984,16,4,512,0xff},/*ctrl1drive0*/...............};
這個(gè)參數可以在主機板的BIOS中查找到,進(jìn)入BIOS后使用idedetection就可以查看到CF卡幾何參數,根據查到CF卡的幾何參數,就可以在sysLib.c中做出相應的修改。
2.5 BSP的調試
針對板載支持包的設計開(kāi)發(fā),VxWorks并沒(méi)有提供了非常好的調試手段,這樣就給調試BSP帶來(lái)的很大困難。所以在對 BSP進(jìn)行調試之前,盡量減少代碼量,通過(guò)改寫(xiě)BSP目錄下Makefile來(lái)去除不需要的代碼編譯,然后再對BSP調試。調試的方式一般采用閃燈的方式,通過(guò)在有疑問(wèn)的代碼之間插入閃燈的代碼,通過(guò)對I/O端口的可視LED訪(fǎng)問(wèn),觀(guān)察燈是否閃亮來(lái)判斷BSP的執行流程。
3 結束語(yǔ)
通過(guò)多次試驗的調試,最終設計出了基于PC104總線(xiàn)的VxWorks板載支持包。并應用于某型飛機燃油系統的智能化管理,實(shí)踐結果表明,這種方法是一種切實(shí)可行的方案。
評論