S698-T處理器的VxWorksARINC 429總線(xiàn)模塊應(yīng)用
installDir/vxworks-6.x/target/config/comps/vXWorks
在風(fēng)河提供的驅(qū)動(dòng)程序中,一個(gè)CDF文件可能包含著描述多個(gè)設(shè)備驅(qū)動(dòng)程序的信息,對(duì)于第三方驅(qū)動(dòng),其CDF文件路徑是在驅(qū)動(dòng)程序目錄下。
40leon2obt429.cdf文件的主要數(shù)據(jù)結(jié)構(gòu)如下:
Component DRV_LEON2 OBT429{
NAME LEON2 obt429 VxBus driver
CDF文件使用上述語(yǔ)句來(lái)定義一個(gè)組件ID。VxWorks中的每個(gè)組件必須用Component關(guān)鍵字來(lái)描述,驅(qū)動(dòng)程序的ID一般以DRV_開(kāi)始,并在ID中包含該驅(qū)動(dòng)程序的描述性信息,每一類(lèi)的驅(qū)動(dòng)程序?qū)M件ID都有著相同的命名習(xí)慣。設(shè)備驅(qū)動(dòng)程序組件標(biāo)準(zhǔn)的命名習(xí)慣應(yīng)該是DRV_CLASS_ NAME。組件名字必須是唯一的,而DRV_CLASS_NAME中的DRV和CLASS都有可能相同,這就要求NAME必須唯一才行。
2 8698-TARINC429驅(qū)動(dòng)應(yīng)用編程
ARINC429是普通I/O設(shè)備,設(shè)備打開(kāi)、關(guān)閉通過(guò)標(biāo)準(zhǔn)open()、close()函數(shù)完成。數(shù)據(jù)的收、發(fā)通過(guò)標(biāo)準(zhǔn)write()、read()函數(shù)完成,而通道的配置、選擇等需要通過(guò)ioctl()函數(shù)完成。由于S698-T中的429模塊總共有6個(gè)通道:4個(gè)接收通道、2個(gè)發(fā)送通道。為了進(jìn)行區(qū)分,軟件在進(jìn)行收、發(fā)操作之前要先進(jìn)行通道選定,以下分別是調(diào)用ARINC429驅(qū)動(dòng)完成ARINC429數(shù)據(jù)收、發(fā)操作的一般軟件流程,如圖1、圖2所示。
以下示例調(diào)用ARINC429的驅(qū)動(dòng),完成ARINC429數(shù)據(jù)的發(fā)送、接收操作。示例需要新建一個(gè)VIP工程,新建429test.c文件中輸入的程序代碼略一一編者注。
3 S698-TARINC429應(yīng)用執(zhí)行結(jié)果
首先選擇“wrleon23_sparcleon”BSP包創(chuàng)建一個(gè)VIP(VxWorks Image Project)工程。
完成工程的創(chuàng)建之后還需對(duì)內(nèi)核進(jìn)行配置。在Workbench左側(cè)的Project Explorer窗口中點(diǎn)擊創(chuàng)建的工程,再雙擊Kernel Configuration進(jìn)入到內(nèi)核配置界面。
為了讓編譯的鏡像文件具有ARINC429功能,需添加ARINC429組件,首先查找到組件“LEON2 obt429 VxBus driver”,并將其添加到工程中。
將上節(jié)中編輯好的429test.c文件添加到工程中,最后要修改usrAppInit函數(shù),增加對(duì)OBT429AppInit函數(shù)的入口調(diào)用。
編譯整個(gè)工程,再通過(guò)dsumon調(diào)試器下載VxWorks映像到目標(biāo)板上運(yùn)行。
下載運(yùn)行的步驟如下:
①確保S698-T開(kāi)發(fā)板上的DSU口和UART0已連接到PC機(jī);
②先打開(kāi)超級(jí)終端,打開(kāi)相應(yīng)的串口,用于S698-T程序運(yùn)行時(shí)的顯示輸出;
③再打開(kāi)cygwin終端,進(jìn)人工程目錄,連接dsumon;
④將生成的Image文件下載進(jìn)目標(biāo)板。
命令描述如下:
$ dsumon-i-u
$ lo VxWorks
$ run
在超級(jí)終端上可以觀(guān)察到運(yùn)行VxWorks的運(yùn)行結(jié)果,如圖3所示。
從程序輸出結(jié)果中可以看出,接收通道1完全接收了發(fā)送通道1發(fā)出的20個(gè)幀數(shù)據(jù),前7幀為非0數(shù)據(jù),后13幀為全0;由于選擇的是25位字長(zhǎng)模式,接收到的數(shù)據(jù)與發(fā)送數(shù)組中的數(shù)據(jù)存有差異,為(tempbuf[n]0x1FFFFFF),實(shí)際值與預(yù)期值完全相同。
另外還可以在VxWorks Shell中輸入devs和vxBusShow命令來(lái)觀(guān)察ARINC429硬件驅(qū)動(dòng)的掛載情況,如圖4所示。
結(jié)語(yǔ)
針對(duì)S698-T處理器內(nèi)部的ARINC429總線(xiàn)模塊,開(kāi)發(fā)了基于VxWorks6.7的ARINC429驅(qū)動(dòng)程序,該驅(qū)動(dòng)程序是標(biāo)準(zhǔn)I/O設(shè)備驅(qū)動(dòng),使用方便、處理靈活。本文詳細(xì)給出了通過(guò)VxWorks VIP工程調(diào)用ARINC429驅(qū)動(dòng),完成數(shù)據(jù)收、發(fā)的過(guò)程,并給出了相關(guān)參考代碼,以及對(duì)應(yīng)的驗(yàn)證結(jié)果,可為后續(xù)的應(yīng)用、開(kāi)發(fā)工作提供幫助。
評(píng)論