• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

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

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

      龔永紅

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

      ?

      龔永紅

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

      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ā)工作提供幫助。

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

      引 言

      VxWorks操作系統(tǒng)作為一種嵌入式實時操作系統(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 位雙精度浮點(diǎn)處理單元FPU。此外,S698-T內(nèi)部還集成了1553B總線控制器、ARINC429總線控制器、CAN總線控制器、多功能I/O接口、UART接口、在線硬件調(diào)試支持單元DSU、DAC模塊、ADC模塊等多種功能模塊。

      ARINC429總線協(xié)議是美國航空電子工程委員會(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)勢在于可靠性高,這是由于它非集中控制、傳輸可靠、錯誤隔離性好。

      1 S698-TARINC429驅(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ū)動程序訪問硬件的機(jī)制;

      ③ 允許軟件其他部分訪問設(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所列。

      表1 VxWorks驅(qū)動程序

      一般情況下,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 leon2OBT429DrvRegistration={

      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ū)動程序的第一個入口點(diǎn),VxWorks必須被配置成:當(dāng)該驅(qū)動程序向VxBus注冊時,VxWorks知道調(diào)用該入口點(diǎn)。為了做到這點(diǎn),VxWorks使用的之前提到的那幾個驅(qū)動配置文件:CDF文件、dc文件、dr文件。

      1.2 CDF文件

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

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

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

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

      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文件使用上述語句來定義一個組件ID。VxWorks中的每個組件必須用 Component關(guān)鍵字來描述,驅(qū)動程序的ID一般以DRV_開始,并在ID中包含該驅(qū)動程序的描述性信息,每一類的驅(qū)動程序?qū)M件ID都有著相同的命名習(xí)慣。設(shè)備驅(qū)動程序組件標(biāo)準(zhǔn)的命名習(xí)慣應(yīng)該是DRV_CLASS_NAME。組件名字必須是唯一的,而DRV_CLASS_NAME中的 DRV和CLASS都有可能相同,這就要求NAME必須唯一才行。

      2 S698-TARINC429驅(qū)動應(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個通道:4個接收通道、2個發(fā)送通道。為了進(jìn)行區(qū)分,軟件在進(jìn)行收、發(fā)操作之前要先進(jìn)行通道選定,以下分別是調(diào)用ARINC429驅(qū)動完成ARINC429數(shù)據(jù)收、發(fā)操作的一般軟件流程,如圖1、圖2所示。

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

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

      以下示例調(diào)用ARINC429的驅(qū)動,完成ARINC429數(shù)據(jù)的發(fā)送、接收操作。示例需要新建一個VIP工程,新建429test.c文件中輸入的程序代碼略——編者注。

      3 S698-TARINC429應(yīng)用執(zhí)行結(jié)果

      首先選擇“wrleon23_sparcleon”BSP包創(chuàng)建一個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)用。

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

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

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

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

      ③ 再打開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個幀數(shù)據(jù),前7幀為非0數(shù)據(jù),后13幀為全0;由于選擇的是25位字長模式,接收到的數(shù)據(jù)與發(fā)送數(shù)組中的數(shù)據(jù)存有差異,為(tempbuf[n] & 0x1FFFFFF),實際值與預(yù)期值完全相同。

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

      結(jié) 語

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

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

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

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

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

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

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

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

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

      參考文獻(xiàn)

      [1] 單承贛,單玉峰,姚磊,等.射頻識別原理與應(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é)報, 2012, 44(3): 81-86.

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

      任盈之、劉熙(碩士研究生),研究方向為超高頻RFID定位。

      (責(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ū)動程序嵌入式
      網(wǎng)絡(luò)社區(qū)劃分在軟件質(zhì)量問題分析中的應(yīng)用
      基于源文件可疑度的軟件缺陷定位方法研究
      搭建基于Qt的嵌入式開發(fā)平臺
      嵌入式軟PLC在電鍍生產(chǎn)流程控制系統(tǒng)中的應(yīng)用
      LKJ基礎(chǔ)數(shù)據(jù)源文件自動編制系統(tǒng)的研究
      Altera加入嵌入式視覺聯(lián)盟
      倍福 CX8091嵌入式控制器
      自動化博覽(2014年4期)2014-02-28 22:31:15
      誤寫C源文件擴(kuò)展名為CPP的危害
      驅(qū)動程序更新與推薦
      驅(qū)動程序更新與推薦
      临沭县| 五常市| 山阳县| 大连市| 泾阳县| 北宁市| 黄骅市| 常德市| 高雄市| 乌鲁木齐市| 镇远县| 金川县| 贵定县| 长子县| 文登市| 台南市| 筠连县| 辉南县| 肇源县| 通江县| 许昌县| 肇东市| 任丘市| 永春县| 长治市| 拉萨市| 沅陵县| 舟山市| 游戏| 勃利县| 沙湾县| 普安县| 当涂县| 威信县| 成都市| 乌鲁木齐市| 黄浦区| 原阳县| 怀化市| 侯马市| 都江堰市|