技術(shù)頻道

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

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

時間:2008-11-04 11:50:00來源:ronggang

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

標簽:

點贊

分享到:

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

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

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

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

相關(guān)資訊

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

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

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

Chuandong.com Copyright ?2005 - 2024 ,All Rights Reserved 深圳市奧美大唐廣告有限公司 版權(quán)所有
粵ICP備 14004826號 | 營業(yè)執(zhí)照證書 | 不良信息舉報中心 | 粵公網(wǎng)安備 44030402000946號