S698-T處理器的VxWorksARINC 429總線模塊應用
摘要:ARINC429總線是航空專用總線,應用非常廣泛。本文以S698-T處理器為平臺,從底層驅動程序入手,詳細講述了針對S698-T處理器的VxWorks ARINC429總線驅動模塊的應用與開發過程。給出了通過VxWorks VIP工程調用ARINC429驅動,完成數據收發的過程,可為后續的應用、開發工作提供幫助。
本文引用地址:http://www.104case.com/article/201609/305076.htm引言
VxWorks操作系統作為一種嵌入式實疾僮饗低(RTOS),擁有高性能的內核以及友好的用戶開發環境,發展為當今較流行的嵌入式系統。其應用遍布通信、國防、工業控制、醫療設備等多個嵌入式領域。
S698-T是珠海歐比特控制工程股份有限公司面向嵌入式控制領域而研制的一款高性能、高可靠的SoC芯片,以130 nm CMOS半導體工藝制造。S698-T芯片以高性能的SPARC V8(IEEE-1754)架構,標準的32位RISC整數單元IU為主控內核,配以IEEE-754標準的64位雙精度浮點處理單元FPU。此外,S698-T內部還集成了1553B總線控制器、ARINC429總線控制器、CAN總線控制器、多功能I/O接口、UAR丁接口、在線硬件調試支持單元DSU、DAC模塊、ADC模塊等多種功能模塊。
ARINC429總線協議是美國航空電子工程委員會(Airlines Engineering Committee)于1977年7月提出的,并于同年同月發表并獲得批準使用。數字式信息傳輸系統DITS,規定了航空電子沒備及有關系統間的數字信息傳輸要求。ARINC429廣泛應用在先進的民航客機中,如B-737、B757、B-767等。ARINC429總線結構簡單、性能穩定、抗干擾性強。最大的優勢在于可靠性高,這是由于它非集中控制、傳輸可靠、錯誤隔離性好。
1 S698-T ARINC429驅動程序設計
ARINC429驅動基于VxBus模式進行開發,VxBus是在VxWorks中用于支持設備驅動的特有架構。VxBus在總線控制器驅動程序服務的支持下,能在總線上發現設備,并執行一些初始化工作,使驅動與硬件設備之間正常通信。它包括以下功能:
①允許設備驅動匹配對應設備;
②提供驅動程序訪問硬件的機制;
③允許軟件其他部分訪問設備功能;
④在VxWorks系統中,實現設備驅動的模塊化。
在VxWorks6.2版本發布前,設備驅動并不能被集成到VxWorks工程配置當中,為了添加或移出設備驅動,需要有豐富的BSP和驅動開發相關的知識。并且在驅動被添加或移出時要去做一些管理VxWorks工程的額外工作。作為VxWorks系統組件的一部分,VxBus消除了上面遇到的一些難題,各種驅動和支持組件的添加與刪除完全可以在Workbench工程中進行,而不需要BSP和驅動相關的知識,也不會在添加、刪除驅動時增加管理VxWorks工程的額外工作。因此大大方便了BSP的開發。
ARINC429驅動采用第三方驅動程序的組織方式,VxWorks允許驅動程序開發廠商和開發者創建第三方驅動程序,不需要擔心不同廠商的文件之間的命名空間沖突。每一個想提供VxWorks驅動程序的廠商必須在3rdparty目錄創建自己的子目錄。
盡管一個驅動程序可以包括很多文件,比如多個源文件和多個頭文件,但是一個標準的VxWorks驅動程序有一個最小的文件集,對于大多數VxWorks驅動程序最少要求6個文件,如表1所列。

一般情況下,CDF文件、dc文件、dr文件都被認為是驅動程序的配置文件,下面詳細介紹這些文件。
1.1 驅動程序源文件
驅動程序源文件包含了驅動程序功能的實現邏輯,它們被放在目錄installDir/vxworks-6.x/target/src/hwif,第三方驅動的源文件放在目錄installDir/vxworks-6.x/target/3rdparty。很多VxWorks設備驅動程序只包含一個源文件,一個驅動程序可以包含一個或者幾個可選的頭文件;驅動程序可以包含多個源文件,此時必須在Makefile里面提供各個模塊的依賴規則。下面以文件leon2obt429.c為例來說明VxWorks驅動程序的結構。
設備驅動程序的第一部分是一個描述VxBus初始化階段要調用的例程的結構:
LOCAL struct drvBusFuncs leon2OBT429DrvFuncs={
leon2OBT429InstInit,
leon2OBT429InstInit2,
leon2OBT429InstConnect
};
接著就是描述驅動程序所支持的驅動方法的數據結構(每一種類別的驅動程序都必須實現該類的驅動方法):
LOCAL device_method_t leon2OBT429Drv_methods[]={
{0,NULL}
};
然后描述該驅動程序需要的注冊信息的結構:
LOCAL struCt vxbDevRegInfo lcon2OBT429DrvRegistration={
NULL, /*后續設備指針*/
VXB_DEVID_DEVICE, /*設備ID號*/
VXB_BUSID_PLB, /*總線ID號*/
VXB_VER_4_0_0, /*VxBus版本號*/
“leon2OBT429Dev”, /*驅動名稱*/
leon2OBT429DrvFuncs, /*驅動入口函數指針*/
leon2OBT429Drv_methods[0],/*設備方法組*/
NULL, /*設備探測*/
NULL /*默認參數*/
};
在注冊信息后面,驅動程序必須提供一個例程來向VxBus注冊,表明該驅動程序的存在:
void leon2OBT429DrvRegister(void){
/*驅動注冊,此時不需要真正的硬件*/
vxbDevRegister((struct vxbDevRegInfo *)
leon2OBT429DrvRegistration);
}
由于驅動程序注冊方法被當作是驅動程序的第一個入口點,VxWorks必須被配置成:當該驅動程序向VxBus注冊時,VxWorks知道調用該入口點。為了做到這點,VxWorks使用的之前提到的那幾個驅動配置文件:CDF文件、dc文件、dr文件。
1.2 CDF文件
CDF文件的全稱是Component Description File,組件描述文件。根據VxBus標準開發的VxWorks設備驅動程序都被編譯成一個單獨的模塊,可以使用VxWorks配置工具非常輕松地將驅動程序配置進BSP中。但是,必須為你的設備驅動程序創建一個VxWorks組件。
一個組件是一個基本的功能單元,它可以單獨配置進入VxWorks內核鏡像中。為了能夠單獨添加和刪除設備驅動程序到VxWorks中,驅動程序必須能夠被VxWorks配置工具識別成individual組件。為了讓驅動程序能夠在Workbench或者vxprj中是可以配置的,必須創建CDF文件,CDF文件提供VxWorks配置工具所需要的信息。針對風河公司發布的設備驅動程序,其對應的CDF文件位于以下目錄:
評論