技術(shù)頻道

娓娓工業(yè)
您現(xiàn)在的位置: 中國傳動(dòng)網(wǎng) > 技術(shù)頻道 > 技術(shù)百科 > 基于WinDriver的ARINC429總線接口板卡驅(qū)動(dòng)程序設(shè)計(jì)

基于WinDriver的ARINC429總線接口板卡驅(qū)動(dòng)程序設(shè)計(jì)

時(shí)間:2008-11-04 11:50:00來源:ronggang

導(dǎo)語:?本文在介紹一種ARINC429 總線接口板卡體系結(jié)構(gòu)的基礎(chǔ)上闡述了利用WinDriver開發(fā)設(shè)備驅(qū)動(dòng)的步驟和方法
摘 要:WinDriver是一套功能強(qiáng)大的驅(qū)動(dòng)程序開發(fā)包,使用WinDriver開發(fā)Windows下的驅(qū)動(dòng)程序不需要熟悉DDK編程及驅(qū)動(dòng)模式,可以簡化開發(fā)設(shè)備驅(qū)動(dòng)程序的過程,縮短開發(fā)周期。本文在介紹一種ARINC429 總線接口板卡體系結(jié)構(gòu)的基礎(chǔ)上闡述了利用WinDriver開發(fā)設(shè)備驅(qū)動(dòng)的步驟和方法。 關(guān)鍵字:WinDriver; ARINC429; 設(shè)備驅(qū)動(dòng)程序 [b][align=center]Design of device driver for ARINC-429 bus interface card using WinDriver kit Yi Xiaoqing,Wang Qian,Luan Chunxu[/align][/b] Abstracts: Design of device driver for ARINC-429 bus interface card using WinDriver kit WinDriver device driver toolkit has powerful function. Using WinDriver to develop the driver under Windows not to need to be familiar with the DDK programming and the actuation pattern . It can also predigest the process of developing of device driver and reduce the development cycle. This paper introduces the steps and methods of developing device drive with WinDriver on the basis of the architecture of ARINC-429 bus interface card. Keywords: WinDriver; ARINC429; Device driver programming 0 引言   在現(xiàn)代軍、民用飛機(jī)上,系統(tǒng)間需要傳輸大量信息。隨著數(shù)字技術(shù)的發(fā)展和微型電子計(jì)算機(jī)的出現(xiàn),越來越多的航空電子設(shè)備已采用了數(shù)字化技術(shù)。美國航空無線電公司(ARINC)制定的ANINC429 數(shù)字信息傳輸規(guī)范成為在航空電子設(shè)備之間傳輸數(shù)字信息的航空運(yùn)輸工業(yè)標(biāo)準(zhǔn)。該標(biāo)準(zhǔn)克服了模擬傳輸所導(dǎo)致的成本高、傳輸線多、可靠性差的缺點(diǎn),提高了信息傳輸精度。針對(duì)實(shí)現(xiàn)ARINC429數(shù)據(jù)傳輸?shù)目偩€接口板研究已經(jīng)有很多,但在設(shè)計(jì)完硬件電路后,直接面臨的一個(gè)大問題便是開發(fā)其驅(qū)動(dòng)程序。如何在涉及較少系統(tǒng)內(nèi)核知識(shí)的前提下快速開發(fā)出高質(zhì)量、高可靠性的驅(qū)動(dòng)程序是是迫切要解決的問題。美國Jungo公司的WinDriver開發(fā)包因其簡潔高效、不涉及操作系統(tǒng)底層編程且有很好的兼容性成為編寫驅(qū)動(dòng)程序的一種好工具,本文將給出基于WinDriver用戶模式的ARINC429總線接口板卡驅(qū)動(dòng)程序的設(shè)計(jì)方法。 1 ANINC429總線接口卡結(jié)構(gòu)設(shè)計(jì)   1.1 ARINC429規(guī)范概述   ARINC429總線是美國航空無線電公司(ARINC)制定的民用航空數(shù)字總線傳輸標(biāo)準(zhǔn),規(guī)定了使用該總線的航空電子設(shè)備的信息量流向ARINC429基本數(shù)據(jù)字的格式。ARINC429是一種單向廣播式數(shù)據(jù)總線,傳輸介質(zhì)由雙絞屏蔽電纜組成。ARINC429 數(shù)字信息傳輸規(guī)范闡述了通過一對(duì)屏蔽雙絞線(數(shù)字?jǐn)?shù)據(jù)總線)從一個(gè)端口向其它系統(tǒng)和設(shè)備以串行方式傳輸數(shù)字?jǐn)?shù)據(jù)信息的方法。信息傳送的速率是:高速傳輸?shù)奈凰俾蕿?00Kb/s±1%,低速傳輸?shù)奈凰俾蕿?2. 0~14.5Kb/s±1%。ARINC429規(guī)定數(shù)據(jù)傳輸采用雙極性歸零碼(如圖1所示),即調(diào)制信號(hào)由“高”、“零”和“低”狀態(tài)組成。雙極性歸零碼的基本信號(hào)波形中攜帶了位同步信息,位同步是由零狀態(tài)變至“高”或“低”狀態(tài)的這一狀態(tài)變化來識(shí)別。字同步是以傳輸周期間至少四位的時(shí)間間隔為基準(zhǔn),緊跟該字間隔后要發(fā)送的第一位起點(diǎn)即為新字的起點(diǎn)。圖2所示為一個(gè)ARINC429數(shù)據(jù)字格式。 [align=center] 圖1 ARINC429數(shù)字信息傳輸格式[/align] [align=center] 圖2 ARINC429數(shù)字字格式[/align]   1.2ARINC429通信模塊原理   本ARINC429數(shù)據(jù)總線通信模塊的主要功能有:完成兩路ARINC429接收數(shù)據(jù)的串并轉(zhuǎn)換和并串轉(zhuǎn)換;支持中斷方式、查詢方式接收發(fā)送數(shù)據(jù)從ARINC429數(shù)據(jù)總線的通信協(xié)議出發(fā),機(jī)載設(shè)備之間通信或與檢測設(shè)備通信首先應(yīng)通過一個(gè)發(fā)送器發(fā)送數(shù)據(jù),把這些數(shù)據(jù)轉(zhuǎn)換為符合ARINC429數(shù)據(jù)總線規(guī)范的數(shù)據(jù)在數(shù)據(jù)總線上傳輸,到了目標(biāo)設(shè)備時(shí)又通過它的接收器把這些數(shù)據(jù)轉(zhuǎn)化為設(shè)備能識(shí)別的數(shù)據(jù)格式。   1.3 一種ARINC429總線接口卡結(jié)構(gòu)設(shè)計(jì)   本文介紹的插卡采用CPLD技術(shù),可實(shí)現(xiàn)兩路PXI總線與ARINC429總線的通訊,且基于可編程芯片的特點(diǎn),還可擴(kuò)展為多路接收與發(fā)送,電路簡單、器件少、可靠性高。硬件電路總體分為了四個(gè)部分:(1) CPCI/PXI接口芯片;(2) CPLD芯片;(3) FIFO芯片;(4)電平轉(zhuǎn)換電路。其基本框圖如圖3所示,該模塊可完成兩路ARINC429數(shù)據(jù)發(fā)送、接收,支持12.5K,25K,50K,100K四種傳輸速率,支持中斷方式、查詢方式接收、發(fā)送數(shù)據(jù)。 2 基于WinDriver的ARINC429總線接口卡驅(qū)動(dòng)程序設(shè)計(jì)   2.1WinDriver開發(fā)工具概述   WinDriver是美國Jungo公司出品的、用于編寫硬件驅(qū)動(dòng)程序的一種工具軟件,主要針對(duì)ISA插卡、PCI插卡和USB這些硬件的設(shè)備驅(qū)動(dòng)程序進(jìn)行開發(fā)。通過運(yùn)行DriverWizard能為插卡產(chǎn)生基本的驅(qū)動(dòng)程序框架,具備設(shè)備檢測、配置寄存器讀寫、自定義寄存器讀寫、I/O和Memory空間訪問等功能。使用自己熟悉的編譯器和編程語言添加代碼,便能得到滿意的設(shè)備驅(qū)動(dòng)。因?yàn)閃indriver把所有繁雜的底層操作都封裝在一個(gè)內(nèi)核模塊中,而提供給用戶標(biāo)準(zhǔn)的Windriver API 函數(shù)來實(shí)現(xiàn)硬件訪問。如此將驅(qū)動(dòng)開發(fā)的繁雜工作變成了僅僅是調(diào)用硬件操作的標(biāo)準(zhǔn)API函數(shù),大大簡化了驅(qū)動(dòng)開發(fā)者的工作,加快了開發(fā)周期。   2.2基于WinDriver的ARINC429驅(qū)動(dòng)程序設(shè)計(jì)   WinDriver編程有兩種模式,一種是用戶模式,這種模式利用軟件自身提供的驅(qū)動(dòng)程序Windrvr.vxd和Windrvr.sys,用戶所面對(duì)的是驅(qū)動(dòng)程序給出的用高級(jí)語言封裝好的相應(yīng)功能接口,不需要對(duì)操作系統(tǒng)內(nèi)核了解太多。另一種模式是核心插入用KernelPlugIn方式進(jìn)行編程,是真正意義上的驅(qū)動(dòng)程序,該模式適宜于用戶對(duì)速度有特殊要求的情況。在本文中采用用戶模式。   以本文設(shè)計(jì)的ARINC429卡為例,利用WinDriver8.01版開發(fā)驅(qū)動(dòng)樣本包括以下步驟:   1)安裝、配置插卡到PC機(jī);   2)運(yùn)行Driver Wizard,在設(shè)備列表中選擇顯示插卡名的一項(xiàng),運(yùn)行“Generate.INF file”選項(xiàng)為該設(shè)備命名為A429,則會(huì)產(chǎn)生A429.INF文件;   3)繼續(xù)運(yùn)行Driver Wizard,選擇VC編譯環(huán)境產(chǎn)生驅(qū)動(dòng)樣本;   4)用產(chǎn)生的.INF文件,按常規(guī)步驟安裝硬件驅(qū)動(dòng),由Windriver提供的內(nèi)核文件接管設(shè)備;   5)在開發(fā)環(huán)境中,移植驅(qū)動(dòng)樣本中的API函數(shù)代碼,編寫具體的功能代碼,建立用戶模式的驅(qū)動(dòng)程序;   6)打包發(fā)布驅(qū)動(dòng)程序。   WinDriver的驅(qū)動(dòng)樣本產(chǎn)生兩個(gè)重要文件:A429_lib.c和A429_diag.c。前者是設(shè)備的應(yīng)用程序級(jí)API函數(shù)文件,用戶可以直接調(diào)用這些標(biāo)準(zhǔn)API函數(shù)實(shí)現(xiàn)對(duì)硬件的操作和訪問,屬于用戶模式的驅(qū)動(dòng)程序。后者是利用上述API函數(shù)訪問硬件的樣本程序文件(控制臺(tái)程序),通過對(duì)該文件的分析可以學(xué)到如何調(diào)用API函數(shù)編寫簡單的驅(qū)動(dòng)程序。結(jié)合兩個(gè)文件分析后得出如下幾個(gè)函數(shù)非常重要:   1) DeviceFindAndOpen () ,獲得驅(qū)動(dòng)程序(指Windrvr.vxd或Windrvr.sys)的句柄,在驅(qū)動(dòng)程序開始時(shí)必須調(diào)用。   2) DeviceClose () ,釋放驅(qū)動(dòng)程的句柄,在程序結(jié)束時(shí)調(diào)用。   3) DiagIntHandler() ,中斷處理函數(shù),用戶加代碼實(shí)現(xiàn)當(dāng)中斷信號(hào)到來時(shí),對(duì)硬件的控制處理。   4) A429_IntEnable() ,中斷使能,以DiagIntHandler作為參數(shù)調(diào)用該函數(shù)后才能進(jìn)入到對(duì)中斷進(jìn)行處理的函數(shù)。   5) A429_IntDisable() ,中斷無效函數(shù),屏蔽中斷信號(hào)。   6) WDC_WriteAddr32() ,按照參數(shù)中給的地址,往寄存器中寫數(shù)。   7) WDC_ReadAddr32() ,從寄存器中讀數(shù)。   本驅(qū)動(dòng)軟件為在Windows2000系統(tǒng)平臺(tái)下基于WinDriver采用VC語言編制的驅(qū)動(dòng)軟件的DLL動(dòng)態(tài)庫,主要完成初始化和數(shù)據(jù)的收發(fā)功能,并檢驗(yàn)數(shù)據(jù)的正確性。具體功能有輸入端口選擇、發(fā)送/接受FIFO復(fù)位、數(shù)據(jù)傳輸率設(shè)定與獲得、奇偶校驗(yàn)設(shè)置與獲得、發(fā)數(shù)據(jù)前判斷發(fā)送FIFO是否空及收數(shù)據(jù)前判斷接受FIFO中是否有數(shù)等。要實(shí)現(xiàn)這些功能需要導(dǎo)入文件A429_lib.c并結(jié)合硬件設(shè)計(jì)的定義適當(dāng)調(diào)用上述7個(gè)函數(shù)并封裝將能實(shí)現(xiàn)這些功能的函數(shù)作為導(dǎo)出函數(shù)供測試程序直接調(diào)用。下面是設(shè)計(jì)的函數(shù)與其功能的對(duì)應(yīng)關(guān)系   1) void*A429_Open(),對(duì)DeviceFindAndOpen()的封裝,獲得驅(qū)動(dòng)程序的句柄。   2) int A429_Close(void*hDev),以上面函數(shù)返回的句柄作為參數(shù),退出驅(qū)動(dòng)程序。   3) void A429_SetCheck(BYTE chan, BYTE check),chan:通道號(hào),根據(jù)chan的值設(shè)置對(duì)應(yīng)端口的校驗(yàn)值保存在變量check中。   4) void A429_SetSpeed(BYTE chan,BYTE boud),設(shè)置對(duì)應(yīng)端口的數(shù)據(jù)發(fā)送速率,保存在變量boud中。   5) void A429_ResetSendChan(BYTE chan),將chan對(duì)應(yīng)的發(fā)送端口復(fù)位。實(shí)現(xiàn)代碼即是調(diào)用WDC_WriteAddr32(),其地址參數(shù)值根據(jù)硬件設(shè)計(jì)的定義傳遞。   6) void A429_ResetReceiChan(BYTE chan),復(fù)位與chan對(duì)應(yīng)的接收端口。   7) void A429_ResetAll(),對(duì)所有發(fā)送和接受端口復(fù)位。   8) BYTE A429_SendChanIsBusy(BYTE chan),檢查與參數(shù)值對(duì)應(yīng)的發(fā)送端口是否忙,返回值為0代表空閑狀態(tài),為1則忙。   9) byte A429_GetCheck(BYTE chan),獲得用戶設(shè)置的奇偶校驗(yàn)量。   10) WORD A429_GetData(BYTE chan,WORD Maxlenth,DWORD *pdata),從接收通道獲得數(shù)量長度不大于Maxlenth的ARINC429數(shù)據(jù)字,存入為chan對(duì)應(yīng)通道分配的pdata所指緩存區(qū)中,返回取走數(shù)據(jù)個(gè)數(shù) [align=center] 圖3 ARINC429總線接口卡的基本結(jié)構(gòu)[/align] [align=center] 圖4主程序流程圖[/align]   上述函數(shù)能實(shí)現(xiàn)簡單的一次發(fā)送和接受數(shù)據(jù),是提供給用戶的導(dǎo)出函數(shù)。導(dǎo)出變量有讀寫緩存區(qū)地址 ,為了能不間斷的測試發(fā)送接收數(shù)據(jù)的正取性,本文設(shè)計(jì)三個(gè)線程,分別為往發(fā)送FIFO寫數(shù)的寫線程、從接受FIFO取數(shù)存入緩存區(qū)的的讀線程和通知測試程序緩沖區(qū)有數(shù)請(qǐng)取出的通知線程,并為該三線程建立一個(gè)互斥對(duì)象,以防止對(duì)同一數(shù)據(jù)進(jìn)行操作時(shí)發(fā)生錯(cuò)誤。在寫線程中根據(jù)測試程序輸入數(shù)的多少循環(huán)調(diào)用WDC_WriteAddr32(),發(fā)送的數(shù)據(jù)存入發(fā)送緩存區(qū)。讀線程將接收FIFO中的數(shù)讀出與發(fā)送數(shù)據(jù)比較,若正確則存入接收緩存區(qū)并刪除發(fā)送數(shù)據(jù)為接下來的發(fā)送數(shù)據(jù)騰出內(nèi)存空間。測試程序接收到通知,調(diào)用用戶設(shè)計(jì)的處理函數(shù)依次取走接收緩存區(qū)數(shù)據(jù)轉(zhuǎn)存,驗(yàn)證板卡能否正確收發(fā)數(shù)據(jù)。圖4是整個(gè)程序流程圖,限于篇幅,詳細(xì)的代碼就不一一介紹,初始化中包括中斷使能,中斷服務(wù)程序即是在中斷處理函數(shù)DiagIntHandler()中調(diào)用讀線程。 3 結(jié)論   本驅(qū)動(dòng)程序在NI公司PXI-1000機(jī)箱,PXI-8156控制器,CPU:X86 Fimily 5 Model 4,   內(nèi)存 81,460kB,操作系統(tǒng) :Microsoft Windows 2000 professional的條件下,進(jìn)行了連續(xù)的僅一個(gè)通道收發(fā)、兩通道同時(shí)收發(fā)數(shù)據(jù)測試,結(jié)果表明本文設(shè)計(jì)的驅(qū)動(dòng)程序能成功高效運(yùn)行,有較高的實(shí)用價(jià)值,對(duì)后續(xù)的利用WinDriver開發(fā)驅(qū)動(dòng)程序相關(guān)研究有一定參考價(jià)值。也再次說明了硬件開發(fā)人員利用WinDriver開發(fā)驅(qū)動(dòng)程序,不必了解繁瑣的內(nèi)核驅(qū)動(dòng)知識(shí),也能快速開發(fā)出性能指標(biāo)令人滿意的設(shè)備驅(qū)動(dòng)程序,是設(shè)計(jì)硬件驅(qū)動(dòng)的高效率的工具。 參考文獻(xiàn)   1楊淑云,劉強(qiáng).基于WinDriver的設(shè)備驅(qū)動(dòng)程序的設(shè)計(jì)開發(fā)[J] .電子技術(shù). 2001 (9): 21- 23   2黃訊,孫政順.利用WinDriver開發(fā)PCI設(shè)備驅(qū)動(dòng)程序[J].電子技術(shù)應(yīng)用.2001(3):15-16   作者簡介:易小青(1984-),女,碩士研究生,從事計(jì)算機(jī)在電力調(diào)度自動(dòng)化應(yīng)用研究。王倩(1962-),女,教授,從事計(jì)算機(jī)技術(shù)在電力系統(tǒng)的應(yīng)用研究。

標(biāo)簽:

點(diǎn)贊

分享到:

上一篇:采用常規(guī)PLC優(yōu)化運(yùn)動(dòng)控制功能

下一篇:微能WIN-V63矢量控制變頻器在...

中國傳動(dòng)網(wǎng)版權(quán)與免責(zé)聲明:凡本網(wǎng)注明[來源:中國傳動(dòng)網(wǎng)]的所有文字、圖片、音視和視頻文件,版權(quán)均為中國傳動(dòng)網(wǎng)(www.treenowplaneincome.com)獨(dú)家所有。如需轉(zhuǎn)載請(qǐng)與0755-82949061聯(lián)系。任何媒體、網(wǎng)站或個(gè)人轉(zhuǎn)載使用時(shí)須注明來源“中國傳動(dòng)網(wǎng)”,違反者本網(wǎng)將追究其法律責(zé)任。

本網(wǎng)轉(zhuǎn)載并注明其他來源的稿件,均來自互聯(lián)網(wǎng)或業(yè)內(nèi)投稿人士,版權(quán)屬于原版權(quán)人。轉(zhuǎn)載請(qǐng)保留稿件來源及作者,禁止擅自篡改,違者自負(fù)版權(quán)法律責(zé)任。

相關(guān)資訊

網(wǎng)站簡介|會(huì)員服務(wù)|聯(lián)系方式|幫助信息|版權(quán)信息|網(wǎng)站地圖|友情鏈接|法律支持|意見反饋|sitemap

中國傳動(dòng)網(wǎng)-工業(yè)自動(dòng)化與智能制造的全媒體“互聯(lián)網(wǎng)+”創(chuàng)新服務(wù)平臺(tái)

網(wǎng)站客服服務(wù)咨詢采購咨詢媒體合作

Chuandong.com Copyright ?2005 - 2024 ,All Rights Reserved 版權(quán)所有 粵ICP備 14004826號(hào) | 營業(yè)執(zhí)照證書 | 不良信息舉報(bào)中心 | 粵公網(wǎng)安備 44030402000946號(hào)