S698-T處理器的VxWorksARINC 429總線模塊應(yīng)用
摘要:ARINC429總線是航空專用總線,應(yīng)用非常廣泛。本文以S698-T處理器為平臺,從底層驅(qū)動程序入手,詳細(xì)講述了針對S698-T處理器的VxWorks ARINC429總線驅(qū)動模塊的應(yīng)用與開發(fā)過程。給出了通過VxWorks VIP工程調(diào)用ARINC429驅(qū)動,完成數(shù)據(jù)收發(fā)的過程,可為后續(xù)的應(yīng)用、開發(fā)工作提供幫助。
本文引用地址:http://m.butianyuan.cn/article/201609/305076.htm引言
VxWorks操作系統(tǒng)作為一種嵌入式實疾僮饗低(RTOS),擁有高性能的內(nèi)核以及友好的用戶開發(fā)環(huán)境,發(fā)展為當(dāng)今較流行的嵌入式系統(tǒng)。其應(yīng)用遍布通信、國防、工業(yè)控制、醫(yī)療設(shè)備等多個嵌入式領(lǐng)域。
S698-T是珠海歐比特控制工程股份有限公司面向嵌入式控制領(lǐng)域而研制的一款高性能、高可靠的SoC芯片,以130 nm CMOS半導(dǎo)體工藝制造。S698-T芯片以高性能的SPARC V8(IEEE-1754)架構(gòu),標(biāo)準(zhǔn)的32位RISC整數(shù)單元IU為主控內(nèi)核,配以IEEE-754標(biāo)準(zhǔn)的64位雙精度浮點處理單元FPU。此外,S698-T內(nèi)部還集成了1553B總線控制器、ARINC429總線控制器、CAN總線控制器、多功能I/O接口、UAR丁接口、在線硬件調(diào)試支持單元DSU、DAC模塊、ADC模塊等多種功能模塊。
ARINC429總線協(xié)議是美國航空電子工程委員會(Airlines Engineering Committee)于1977年7月提出的,并于同年同月發(fā)表并獲得批準(zhǔn)使用。數(shù)字式信息傳輸系統(tǒng)DITS,規(guī)定了航空電子沒備及有關(guān)系統(tǒng)間的數(shù)字信息傳輸要求。ARINC429廣泛應(yīng)用在先進(jìn)的民航客機中,如B-737、B757、B-767等。ARINC429總線結(jié)構(gòu)簡單、性能穩(wěn)定、抗干擾性強。最大的優(yōu)勢在于可靠性高,這是由于它非集中控制、傳輸可靠、錯誤隔離性好。
1 S698-T ARINC429驅(qū)動程序設(shè)計
ARINC429驅(qū)動基于VxBus模式進(jìn)行開發(fā),VxBus是在VxWorks中用于支持設(shè)備驅(qū)動的特有架構(gòu)。VxBus在總線控制器驅(qū)動程序服務(wù)的支持下,能在總線上發(fā)現(xiàn)設(shè)備,并執(zhí)行一些初始化工作,使驅(qū)動與硬件設(shè)備之間正常通信。它包括以下功能:
①允許設(shè)備驅(qū)動匹配對應(yīng)設(shè)備;
②提供驅(qū)動程序訪問硬件的機制;
③允許軟件其他部分訪問設(shè)備功能;
④在VxWorks系統(tǒng)中,實現(xiàn)設(shè)備驅(qū)動的模塊化。
在VxWorks6.2版本發(fā)布前,設(shè)備驅(qū)動并不能被集成到VxWorks工程配置當(dāng)中,為了添加或移出設(shè)備驅(qū)動,需要有豐富的BSP和驅(qū)動開發(fā)相關(guān)的知識。并且在驅(qū)動被添加或移出時要去做一些管理VxWorks工程的額外工作。作為VxWorks系統(tǒng)組件的一部分,VxBus消除了上面遇到的一些難題,各種驅(qū)動和支持組件的添加與刪除完全可以在Workbench工程中進(jìn)行,而不需要BSP和驅(qū)動相關(guān)的知識,也不會在添加、刪除驅(qū)動時增加管理VxWorks工程的額外工作。因此大大方便了BSP的開發(fā)。
ARINC429驅(qū)動采用第三方驅(qū)動程序的組織方式,VxWorks允許驅(qū)動程序開發(fā)廠商和開發(fā)者創(chuàng)建第三方驅(qū)動程序,不需要擔(dān)心不同廠商的文件之間的命名空間沖突。每一個想提供VxWorks驅(qū)動程序的廠商必須在3rdparty目錄創(chuàng)建自己的子目錄。
盡管一個驅(qū)動程序可以包括很多文件,比如多個源文件和多個頭文件,但是一個標(biāo)準(zhǔn)的VxWorks驅(qū)動程序有一個最小的文件集,對于大多數(shù)VxWorks驅(qū)動程序最少要求6個文件,如表1所列。
一般情況下,CDF文件、dc文件、dr文件都被認(rèn)為是驅(qū)動程序的配置文件,下面詳細(xì)介紹這些文件。
1.1 驅(qū)動程序源文件
驅(qū)動程序源文件包含了驅(qū)動程序功能的實現(xiàn)邏輯,它們被放在目錄installDir/vxworks-6.x/target/src/hwif,第三方驅(qū)動的源文件放在目錄installDir/vxworks-6.x/target/3rdparty。很多VxWorks設(shè)備驅(qū)動程序只包含一個源文件,一個驅(qū)動程序可以包含一個或者幾個可選的頭文件;驅(qū)動程序可以包含多個源文件,此時必須在Makefile里面提供各個模塊的依賴規(guī)則。下面以文件leon2obt429.c為例來說明VxWorks驅(qū)動程序的結(jié)構(gòu)。
設(shè)備驅(qū)動程序的第一部分是一個描述VxBus初始化階段要調(diào)用的例程的結(jié)構(gòu):
LOCAL struct drvBusFuncs leon2OBT429DrvFuncs={
leon2OBT429InstInit,
leon2OBT429InstInit2,
leon2OBT429InstConnect
};
接著就是描述驅(qū)動程序所支持的驅(qū)動方法的數(shù)據(jù)結(jié)構(gòu)(每一種類別的驅(qū)動程序都必須實現(xiàn)該類的驅(qū)動方法):
LOCAL device_method_t leon2OBT429Drv_methods[]={
{0,NULL}
};
然后描述該驅(qū)動程序需要的注冊信息的結(jié)構(gòu):
LOCAL struCt vxbDevRegInfo lcon2OBT429DrvRegistration={
NULL, /*后續(xù)設(shè)備指針*/
VXB_DEVID_DEVICE, /*設(shè)備ID號*/
VXB_BUSID_PLB, /*總線ID號*/
VXB_VER_4_0_0, /*VxBus版本號*/
“leon2OBT429Dev”, /*驅(qū)動名稱*/
leon2OBT429DrvFuncs, /*驅(qū)動入口函數(shù)指針*/
leon2OBT429Drv_methods[0],/*設(shè)備方法組*/
NULL, /*設(shè)備探測*/
NULL /*默認(rèn)參數(shù)*/
};
在注冊信息后面,驅(qū)動程序必須提供一個例程來向VxBus注冊,表明該驅(qū)動程序的存在:
void leon2OBT429DrvRegister(void){
/*驅(qū)動注冊,此時不需要真正的硬件*/
vxbDevRegister((struct vxbDevRegInfo *)
leon2OBT429DrvRegistration);
}
由于驅(qū)動程序注冊方法被當(dāng)作是驅(qū)動程序的第一個入口點,VxWorks必須被配置成:當(dāng)該驅(qū)動程序向VxBus注冊時,VxWorks知道調(diào)用該入口點。為了做到這點,VxWorks使用的之前提到的那幾個驅(qū)動配置文件:CDF文件、dc文件、dr文件。
1.2 CDF文件
CDF文件的全稱是Component Description File,組件描述文件。根據(jù)VxBus標(biāo)準(zhǔn)開發(fā)的VxWorks設(shè)備驅(qū)動程序都被編譯成一個單獨的模塊,可以使用VxWorks配置工具非常輕松地將驅(qū)動程序配置進(jìn)BSP中。但是,必須為你的設(shè)備驅(qū)動程序創(chuàng)建一個VxWorks組件。
一個組件是一個基本的功能單元,它可以單獨配置進(jìn)入VxWorks內(nèi)核鏡像中。為了能夠單獨添加和刪除設(shè)備驅(qū)動程序到VxWorks中,驅(qū)動程序必須能夠被VxWorks配置工具識別成individual組件。為了讓驅(qū)動程序能夠在Workbench或者vxprj中是可以配置的,必須創(chuàng)建CDF文件,CDF文件提供VxWorks配置工具所需要的信息。針對風(fēng)河公司發(fā)布的設(shè)備驅(qū)動程序,其對應(yīng)的CDF文件位于以下目錄:
評論