<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > S698-T處理器的VxWorksARINC 429總線(xiàn)模塊應用

S698-T處理器的VxWorksARINC 429總線(xiàn)模塊應用

作者: 時(shí)間:2016-09-12 來(lái)源:網(wǎng)絡(luò ) 收藏

摘要:總線(xiàn)是航空專(zhuān)用總線(xiàn),應用非常廣泛。本文以處理器為平臺,從底層入手,詳細講述了針對處理器的 總線(xiàn)驅動(dòng)模塊的應用與開(kāi)發(fā)過(guò)程。給出了通過(guò) VIP工程調用驅動(dòng),完成數據收發(fā)的過(guò)程,可為后續的應用、開(kāi)發(fā)工作提供幫助。

本文引用地址:http://dyxdggzs.com/article/201609/305076.htm

引言

操作系統作為一種嵌入式實(shí)疾僮饗低(RTOS),擁有高性能的內核以及友好的用戶(hù)開(kāi)發(fā)環(huán)境,發(fā)展為當今較流行的嵌入式系統。其應用遍布通信、國防、工業(yè)控制、醫療設備等多個(gè)嵌入式領(lǐng)域。

是珠海歐比特控制工程股份有限公司面向嵌入式控制領(lǐng)域而研制的一款高性能、高可靠的SoC芯片,以130 nm CMOS半導體工藝制造。S698-T芯片以高性能的SPARC V8(IEEE-1754)架構,標準的32位RISC整數單元IU為主控內核,配以IEEE-754標準的64位雙精度浮點(diǎn)處理單元FPU。此外,S698-T內部還集成了1553B總線(xiàn)控制器、ARINC429總線(xiàn)控制器、CAN總線(xiàn)控制器、多功能I/O接口、UAR丁接口、在線(xiàn)硬件調試支持單元DSU、DAC模塊、ADC模塊等多種功能模塊。

ARINC429總線(xiàn)協(xié)議是美國航空電子工程委員會(huì )(Airlines Engineering Committee)于1977年7月提出的,并于同年同月發(fā)表并獲得批準使用。數字式信息傳輸系統DITS,規定了航空電子沒(méi)備及有關(guān)系統間的數字信息傳輸要求。ARINC429廣泛應用在先進(jìn)的民航客機中,如B-737、B757、B-767等。ARINC429總線(xiàn)結構簡(jiǎn)單、性能穩定、抗干擾性強。最大的優(yōu)勢在于可靠性高,這是由于它非集中控制、傳輸可靠、錯誤隔離性好。

1 S698-T ARINC429設計

ARINC429驅動(dòng)基于VxBus模式進(jìn)行開(kāi)發(fā),VxBus是在VxWorks中用于支持設備驅動(dòng)的特有架構。VxBus在總線(xiàn)控制器服務(wù)的支持下,能在總線(xiàn)上發(fā)現設備,并執行一些初始化工作,使驅動(dòng)與硬件設備之間正常通信。它包括以下功能:

①允許設備驅動(dòng)匹配對應設備;

②提供驅動(dòng)程序訪(fǎng)問(wèn)硬件的機制;

③允許軟件其他部分訪(fǎng)問(wèn)設備功能;

④在VxWorks系統中,實(shí)現設備驅動(dòng)的模塊化。

在VxWorks6.2版本發(fā)布前,設備驅動(dòng)并不能被集成到VxWorks工程配置當中,為了添加或移出設備驅動(dòng),需要有豐富的BSP和驅動(dòng)開(kāi)發(fā)相關(guān)的知識。并且在驅動(dòng)被添加或移出時(shí)要去做一些管理VxWorks工程的額外工作。作為VxWorks系統組件的一部分,VxBus消除了上面遇到的一些難題,各種驅動(dòng)和支持組件的添加與刪除完全可以在Workbench工程中進(jìn)行,而不需要BSP和驅動(dòng)相關(guān)的知識,也不會(huì )在添加、刪除驅動(dòng)時(shí)增加管理VxWorks工程的額外工作。因此大大方便了BSP的開(kāi)發(fā)。

ARINC429驅動(dòng)采用第三方驅動(dòng)程序的組織方式,VxWorks允許驅動(dòng)程序開(kāi)發(fā)廠(chǎng)商和開(kāi)發(fā)者創(chuàng )建第三方驅動(dòng)程序,不需要擔心不同廠(chǎng)商的文件之間的命名空間沖突。每一個(gè)想提供VxWorks驅動(dòng)程序的廠(chǎng)商必須在3rdparty目錄創(chuàng )建自己的子目錄。

盡管一個(gè)驅動(dòng)程序可以包括很多文件,比如多個(gè)源文件和多個(gè)頭文件,但是一個(gè)標準的VxWorks驅動(dòng)程序有一個(gè)最小的文件集,對于大多數VxWorks驅動(dòng)程序最少要求6個(gè)文件,如表1所列。

S698-T處理器的VxWorksARINC 429總線(xiàn)模塊應用

一般情況下,CDF文件、dc文件、dr文件都被認為是驅動(dòng)程序的配置文件,下面詳細介紹這些文件。

1.1 驅動(dòng)程序源文件

驅動(dòng)程序源文件包含了驅動(dòng)程序功能的實(shí)現邏輯,它們被放在目錄installDir/vxworks-6.x/target/src/hwif,第三方驅動(dòng)的源文件放在目錄installDir/vxworks-6.x/target/3rdparty。很多VxWorks設備驅動(dòng)程序只包含一個(gè)源文件,一個(gè)驅動(dòng)程序可以包含一個(gè)或者幾個(gè)可選的頭文件;驅動(dòng)程序可以包含多個(gè)源文件,此時(shí)必須在Makefile里面提供各個(gè)模塊的依賴(lài)規則。下面以文件leon2obt429.c為例來(lái)說(shuō)明VxWorks驅動(dòng)程序的結構。

設備驅動(dòng)程序的第一部分是一個(gè)描述VxBus初始化階段要調用的例程的結構:

LOCAL struct drvBusFuncs leon2OBT429DrvFuncs={

leon2OBT429InstInit,

leon2OBT429InstInit2,

leon2OBT429InstConnect

};

接著(zhù)就是描述驅動(dòng)程序所支持的驅動(dòng)方法的數據結構(每一種類(lèi)別的驅動(dòng)程序都必須實(shí)現該類(lèi)的驅動(dòng)方法):

LOCAL device_method_t leon2OBT429Drv_methods[]={

{0,NULL}

};

然后描述該驅動(dòng)程序需要的注冊信息的結構:

LOCAL struCt vxbDevRegInfo lcon2OBT429DrvRegistration={

NULL, /*后續設備指針*/

VXB_DEVID_DEVICE, /*設備ID號*/

VXB_BUSID_PLB, /*總線(xiàn)ID號*/

VXB_VER_4_0_0, /*VxBus版本號*/

“leon2OBT429Dev”, /*驅動(dòng)名稱(chēng)*/

leon2OBT429DrvFuncs, /*驅動(dòng)入口函數指針*/

leon2OBT429Drv_methods[0],/*設備方法組*/

NULL, /*設備探測*/

NULL /*默認參數*/

};

在注冊信息后面,驅動(dòng)程序必須提供一個(gè)例程來(lái)向VxBus注冊,表明該驅動(dòng)程序的存在:

void leon2OBT429DrvRegister(void){

/*驅動(dòng)注冊,此時(shí)不需要真正的硬件*/

vxbDevRegister((struct vxbDevRegInfo *)

leon2OBT429DrvRegistration);

}

由于驅動(dòng)程序注冊方法被當作是驅動(dòng)程序的第一個(gè)入口點(diǎn),VxWorks必須被配置成:當該驅動(dòng)程序向VxBus注冊時(shí),VxWorks知道調用該入口點(diǎn)。為了做到這點(diǎn),VxWorks使用的之前提到的那幾個(gè)驅動(dòng)配置文件:CDF文件、dc文件、dr文件。

1.2 CDF文件

CDF文件的全稱(chēng)是Component Description File,組件描述文件。根據VxBus標準開(kāi)發(fā)的VxWorks設備驅動(dòng)程序都被編譯成一個(gè)單獨的模塊,可以使用VxWorks配置工具非常輕松地將驅動(dòng)程序配置進(jìn)BSP中。但是,必須為你的設備驅動(dòng)程序創(chuàng )建一個(gè)VxWorks組件。

一個(gè)組件是一個(gè)基本的功能單元,它可以單獨配置進(jìn)入VxWorks內核鏡像中。為了能夠單獨添加和刪除設備驅動(dòng)程序到VxWorks中,驅動(dòng)程序必須能夠被VxWorks配置工具識別成individual組件。為了讓驅動(dòng)程序能夠在Workbench或者vxprj中是可以配置的,必須創(chuàng )建CDF文件,CDF文件提供VxWorks配置工具所需要的信息。針對風(fēng)河公司發(fā)布的設備驅動(dòng)程序,其對應的CDF文件位于以下目錄:


上一頁(yè) 1 2 下一頁(yè)

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>