亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        S698-T處理器的VxWorks ARINC 429 總線模塊應(yīng)用

        2014-09-06 10:49:58龔永紅
        關(guān)鍵詞:源文件驅(qū)動(dòng)程序嵌入式

        龔永紅

        (珠海歐比特控制工程股份有限公司,珠海 519080)

        ?

        龔永紅

        (珠海歐比特控制工程股份有限公司,珠海 519080)

        ARINC429總線是航空專用總線,應(yīng)用非常廣泛。本文以S698-T處理器為平臺(tái),從底層驅(qū)動(dòng)程序入手,詳細(xì)講述了針對S698-T處理器的VxWorks ARINC429總線驅(qū)動(dòng)模塊的應(yīng)用與開發(fā)過程。給出了通過VxWorks VIP工程調(diào)用ARINC429驅(qū)動(dòng),完成數(shù)據(jù)收發(fā)的過程,可為后續(xù)的應(yīng)用、開發(fā)工作提供幫助。

        VxWorks;ARINC429;驅(qū)動(dòng)程序;S698-T

        引 言

        VxWorks操作系統(tǒng)作為一種嵌入式實(shí)時(shí)操作系統(tǒng)(RTOS),擁有高性能的內(nèi)核以及友好的用戶開發(fā)環(huán)境,發(fā)展為當(dāng)今較流行的嵌入式系統(tǒng)。其應(yīng)用遍布通信、國防、工業(yè)控制、醫(yī)療設(shè)備等多個(gè)嵌入式領(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 位雙精度浮點(diǎn)處理單元FPU。此外,S698-T內(nèi)部還集成了1553B總線控制器、ARINC429總線控制器、CAN總線控制器、多功能I/O接口、UART接口、在線硬件調(diào)試支持單元DSU、DAC模塊、ADC模塊等多種功能模塊。

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

        1 S698-TARINC429驅(qū)動(dòng)程序設(shè)計(jì)

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

        ① 允許設(shè)備驅(qū)動(dòng)匹配對應(yīng)設(shè)備;

        ② 提供驅(qū)動(dòng)程序訪問硬件的機(jī)制;

        ③ 允許軟件其他部分訪問設(shè)備功能;

        ④ 在VxWorks系統(tǒng)中,實(shí)現(xiàn)設(shè)備驅(qū)動(dòng)的模塊化。

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

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

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

        表1 VxWorks驅(qū)動(dòng)程序

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

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

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

        設(shè)備驅(qū)動(dòng)程序的第一部分是一個(gè)描述VxBus初始化階段要調(diào)用的例程的結(jié)構(gòu):

        LOCAL struct drvBusFuncs leon2OBT429DrvFuncs ={

        leon2OBT429InstInit,

        leon2OBT429InstInit2,

        leon2OBT429InstConnect

        };

        接著就是描述驅(qū)動(dòng)程序所支持的驅(qū)動(dòng)方法的數(shù)據(jù)結(jié)構(gòu)(每一種類別的驅(qū)動(dòng)程序都必須實(shí)現(xiàn)該類的驅(qū)動(dòng)方法):

        LOCAL device_method_t leon2OBT429Drv_methods[] ={

        {0, NULL}

        };

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

        LOCAL struct vxbDevRegInfo leon2OBT429DrvRegistration={

        NULL, /* 后續(xù)設(shè)備指針*/

        VXB_DEVID_DEVICE, /* 設(shè)備ID號 */

        VXB_BUSID_PLB, /* 總線ID號*/

        VXB_VER_4_0_0, /* VxBus版本號 */

        "leon2OBT429Dev", /*驅(qū)動(dòng)名稱*/

        &leon2OBT429DrvFuncs, /*驅(qū)動(dòng)入口函數(shù)指針*/

        &leon2OBT429Drv_methods[0], /*設(shè)備方法組*/

        NULL, /*設(shè)備探測*/

        NULL /*默認(rèn)參數(shù)*/

        };

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

        void leon2OBT429DrvRegister(void){

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

        vxbDevRegister((struct vxbDevRegInfo *)

        &leon2OBT429DrvRegistration);

        }

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

        1.2 CDF文件

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

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

        installDir/vxworks-6.x/target/config/comps/vxWorks

        在風(fēng)河提供的驅(qū)動(dòng)程序中,一個(gè)CDF文件可能包含著描述多個(gè)設(shè)備驅(qū)動(dòng)程序的信息,對于第三方驅(qū)動(dòng),其CDF文件路徑是在驅(qū)動(dòng)程序目錄下。

        40leon2obt429.cdf文件的主要數(shù)據(jù)結(jié)構(gòu)如下:

        Component DRV_LEON2_OBT429 {

        NAME LEON2 obt429 VxBus driver

        SYNOPSIS LEON2 obt429 VxBus driver provided by Wind River

        REQUIRES INCLUDE_VXBUS INCLUDE_PLB_BUS

        MODULES leon2obt429.o

        PROTOTYPE void leon2OBT429DrvRegister(void);

        INIT_RTN leon2OBT429DrvRegister();

        INIT_AFTER INCLUDE_PLB_BUS

        _INIT_ORDER hardWareInterFaceBusInit

        _CHILDREN FOLDER_DRIVERS

        }

        CDF文件使用上述語句來定義一個(gè)組件ID。VxWorks中的每個(gè)組件必須用 Component關(guān)鍵字來描述,驅(qū)動(dòng)程序的ID一般以DRV_開始,并在ID中包含該驅(qū)動(dòng)程序的描述性信息,每一類的驅(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 S698-TARINC429驅(qū)動(dòng)應(yīng)用編程

        ARINC429是普通 I/O設(shè)備,設(shè)備打開、關(guān)閉通過標(biāo)準(zhǔn)open( )、 close( )函數(shù)完成。數(shù)據(jù)的收、發(fā)通過標(biāo)準(zhǔn)write( )、read( )函數(shù)完成,而通道的配置、選擇等需要通過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所示。

        圖1 ARINC429數(shù)據(jù)發(fā)送流程圖

        圖2 ARINC429數(shù)據(jù)接收流程圖

        以下示例調(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)建之后還需對內(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ù),增加對OBT429AppInit函數(shù)的入口調(diào)用。

        編譯整個(gè)工程,再通過dsumon調(diào)試器下載VxWorks映像到目標(biāo)板上運(yùn)行。

        下載運(yùn)行的步驟如下:

        ① 確保S698-T開發(fā)板上的DSU口和UART0已連接到PC機(jī);

        ② 先打開超級終端,打開相應(yīng)的串口,用于S698-T程序運(yùn)行時(shí)的顯示輸出;

        ③ 再打開cygwin終端,進(jìn)入工程目錄,連接dsumon;

        ④ 將生成的Image文件下載進(jìn)目標(biāo)板。

        命令描述如下:

        $ dsumon -i -u

        $ lo VxWorks

        $ run

        在超級終端上可以觀察到運(yùn)行VxWorks的運(yùn)行結(jié)果,如圖3所示。

        圖3 VxWorks ARINC429數(shù)據(jù)測試

        從程序輸出結(jié)果中可以看出,接收通道1完全接收了發(fā)送通道1發(fā)出的20個(gè)幀數(shù)據(jù),前7幀為非0數(shù)據(jù),后13幀為全0;由于選擇的是25位字長模式,接收到的數(shù)據(jù)與發(fā)送數(shù)組中的數(shù)據(jù)存有差異,為(tempbuf[n] & 0x1FFFFFF),實(shí)際值與預(yù)期值完全相同。

        另外還可以在VxWorks Shell中輸入devs和vxBusShow命令來觀察ARINC429硬件驅(qū)動(dòng)的掛載情況,如圖4所示。

        結(jié) 語

        針對S698-T處理器內(nèi)部的ARINC429總線模塊,開發(fā)了基于VxWorks6.7的ARINC429驅(qū)動(dòng)程序,該驅(qū)動(dòng)程序是標(biāo)準(zhǔn)I/O設(shè)備驅(qū)動(dòng),使用方便、處理靈活。本文詳細(xì)給出了通過VxWorks VIP工程調(diào)用ARINC429驅(qū)動(dòng),完成數(shù)據(jù)收、發(fā)的過程,并給出了相關(guān)參考代碼,以及對應(yīng)的驗(yàn)證結(jié)果,可為后續(xù)的應(yīng)用、開發(fā)工作提供幫助。

        圖4 VxWorks ARINC429設(shè)備驅(qū)動(dòng)信息

        [1] 徐惠民.基于VxWorks的嵌入式系統(tǒng)及實(shí)驗(yàn)[M].北京:北京郵電大學(xué)出版社,2006.

        [2] 孔祥營,柏桂枝.嵌入式實(shí)時(shí)操作系統(tǒng)VxWorks及其開發(fā)環(huán)境Tornado[M].北京:中國電力出版社,2001.

        [3] 李慶. 嵌入式系統(tǒng)的實(shí)時(shí)概念[M].王安生,譯.北京:北京航空航天大學(xué)出版社,2004.

        [4] 珠海歐比特控制工程股份有限公司.BSP3.0概要設(shè)計(jì)報(bào)告,2006.

        [5] 珠海歐比特控制工程股份有限公司.V8mon使用手冊,2009.

        [6] 珠海歐比特控制工程股份有限公司.S698-T芯片用戶手冊,2010.

        [7] Wind River wr_workbench_users_guide_3.1.pdf,2014.

        參考文獻(xiàn)

        [1] 單承贛,單玉峰,姚磊,等.射頻識(shí)別原理與應(yīng)用[M].北京:電子工業(yè)出版社,2008.

        [2] Miesen R, Ebelt R, Kirsch F, et al. Where is the Tag?[J]. IEEE Microwave Magazine, 2011, 12(7): S49-S63.

        [3] Cory Hekimian-Williams, Brandon Grant, Xiuwen Liu, et al. Accurate Localization of RFID Tags Using Phase Difference[C]// 2010 IEEE International Conference on RFID,2010:89-96.

        [4] Wille A, Broll M, Winter S. Phase difference based RFID navigation for medical applications[C]// 2011 IEEE International Conference on RFID, Florida, USA, 2011: 98-105.

        [5] 史偉光, 劉開華, 房靜靜,等. 雙頻副載波調(diào)幅的 UHF RFID 定位研究[J]. 哈爾濱工業(yè)大學(xué)學(xué)報(bào), 2012, 44(3): 81-86.

        [6] 丁康, 謝明, 楊志堅(jiān). 離散頻譜分析校正理論與技術(shù)[M]. 北京:科學(xué)出版社,2008.

        任盈之、劉熙(碩士研究生),研究方向?yàn)槌哳lRFID定位。

        (責(zé)任編輯:高珍 收稿日期:2013-11-14)

        Gong Yonghong

        (Zhuhai Orbita Control Engineering Co.,Ltd., Zhuhai 519080,China)

        ARINC429 bus is a special aviation bus which is widely applied. This paper takes the S698-T processor as the platform,starting from the bottom of the driver, and then it describes the application and development process for the S698-T processor VxWorks ARINC429 bus driver module. The VxWorks VIP project calls ARINC429 driver and the data collection is completed. The application provides the help for subsequent applications and development work.

        VxWorks; ARINC429; driver program; S698-T

        TN915

        A

        迪娜

        2013-11-28)

        猜你喜歡
        源文件驅(qū)動(dòng)程序嵌入式
        網(wǎng)絡(luò)社區(qū)劃分在軟件質(zhì)量問題分析中的應(yīng)用
        基于源文件可疑度的軟件缺陷定位方法研究
        搭建基于Qt的嵌入式開發(fā)平臺(tái)
        嵌入式軟PLC在電鍍生產(chǎn)流程控制系統(tǒng)中的應(yīng)用
        LKJ基礎(chǔ)數(shù)據(jù)源文件自動(dòng)編制系統(tǒng)的研究
        Altera加入嵌入式視覺聯(lián)盟
        倍福 CX8091嵌入式控制器
        誤寫C源文件擴(kuò)展名為CPP的危害
        驅(qū)動(dòng)程序更新與推薦
        驅(qū)動(dòng)程序更新與推薦
        国产天堂av手机在线| 亚洲国产精品久久亚洲精品| 亚洲丁香婷婷综合久久小说| av在线免费观看你懂的| 国产激情综合五月久久| 粗大的内捧猛烈进出少妇| 999久久久免费精品国产| 日本香蕉久久一区二区视频| 我想看久久久一级黄片| 26uuu在线亚洲欧美| 国产人妻久久精品二区三区特黄| 久久九九青青国产精品| 综合久久加勒比天然素人| 精品久久久久久综合日本| 国产激情精品一区二区三区| 久久成人永久免费播放| 人妻丰满精品一区二区| 亚洲av无码一区东京热久久| 亚洲欧洲偷自拍图片区| 国产精品亚洲国产| 亚洲一区二区三区成人网| 久久青青草原精品国产app| 国产精品 视频一区 二区三区| 亚洲高清在线观看免费视频| 午夜一区二区视频在线观看| 少妇私密会所按摩到高潮呻吟| 国产成人精品精品欧美| 久久熟女精品—区二区蜜臀| 成人免费播放视频777777| 国产人妻精品一区二区三区不卡 | 亚洲福利视频一区二区三区| 日本丰满老妇bbw| 欧美成年黄网站色视频| 久久精品国产久精国产69| 99久久国内精品成人免费| 99精品国产一区二区三区| 久久精品—区二区三区无码伊人色| 中文字幕人妻久久一区二区三区| 亚洲av中文无码乱人伦在线视色| 久久综合精品国产丝袜长腿| 放荡人妻一区二区三区|