<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è) > 嵌入式系統 > 設計應用 > 基于1394b總線(xiàn)仿真設備的WDM驅動(dòng)開(kāi)發(fā)

基于1394b總線(xiàn)仿真設備的WDM驅動(dòng)開(kāi)發(fā)

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

IEEE-1394b總線(xiàn)協(xié)議具有實(shí)時(shí)性、可靠性、確定性等特性,這些特性使其在點(diǎn)對點(diǎn)通信方面表現突出。IEEE-1394b作為F22猛禽戰機的總線(xiàn),同時(shí)也使用在F35、NASA的航天飛機上以及DV設備上。而總線(xiàn)的仿真驗證設備需要圖形化的界面軟件,這就要求其工作環(huán)境支持PC機環(huán)境。作為硬件與軟件橋梁的驅動(dòng)程序主要工作是保證軟硬件協(xié)調工作,提供安全簡(jiǎn)單的操作接口,保證通信數據的可靠性、實(shí)時(shí)性、確定性等。

本文引用地址:http://dyxdggzs.com/article/201610/307352.htm

1 硬件系統簡(jiǎn)介

圖1是以Xilinx的V6系列的FPGA為核心的硬件框圖。該設備具有3個(gè)余度,并且三余度之間能夠獨立工作,互不影響。硬件采用三路Link和PHY芯片,三路獨立供電。由于仿真設備運行的環(huán)境的封閉性,從而設計軟件和硬件兩種供電控制開(kāi)關(guān)。軟件電源控制信號由FPGA控制可編程的電源控制芯片來(lái)遠程控制設備。設備供電無(wú)需外接電源,直接利用PC機的PCI或者PCIe總線(xiàn)插槽供電,硬件提供電源管理系統進(jìn)行電壓轉換。該設備支持速率S100Mbps和S400Mbps,硬件提供S100Mbps和S400Mbps端口速率切換按鈕,FPGA內部通信速率由邏輯控制完成。

基于1394b總線(xiàn)仿真設備的WDM驅動(dòng)開(kāi)發(fā)

FPGA邏輯功能框如圖2所示,FPGA邏輯對PCI/PCIe總線(xiàn)協(xié)議和1394b總線(xiàn)進(jìn)行協(xié)議封裝以及協(xié)議解析;對內存空間,IO空間以及中斷號等進(jìn)行劃分;對操作寄存器進(jìn)行定義;對發(fā)送數據的DM口,接收數據的GRF口進(jìn)行控制;開(kāi)放LINK和PHY的軟件訪(fǎng)問(wèn)權限,便于實(shí)現遠程訪(fǎng)問(wèn)功能;對DPRAM進(jìn)行雙口切換操作,以保證數據通信的可靠性;設計退避算法防止總線(xiàn)競爭失敗數據丟失;支持操作,實(shí)現通信的實(shí)時(shí)性。

基于1394b總線(xiàn)仿真設備的WDM驅動(dòng)開(kāi)發(fā)

2 驅動(dòng)設計

驅動(dòng)程序是硬件廠(chǎng)商根據硬件工作環(huán)境的操作系統編寫(xiě)的配置文件,其運行于操作系統內核態(tài),是設備與計算機交互的橋梁,它把硬件的功能告訴操作系統,同時(shí)也將系統

的指令傳達給硬件。驅動(dòng)軟件分為軟件驅動(dòng)和硬件驅動(dòng)。軟件驅動(dòng)是把工作最終交給CPU處理,對CPU依賴(lài)性比較高,對操作系統影響比較大;而硬件驅動(dòng)能夠最大化的避免CPU的調度,提高硬件資源的利用率、增加傳輸的實(shí)時(shí)性、減少設備對計算機的依賴(lài)性等。

本設備驅動(dòng)程序采用硬件驅動(dòng),開(kāi)發(fā)工具為DDK(Device Development Kit),調試工具為Debug view,其工作流程如圖3所示。

基于1394b總線(xiàn)仿真設備的WDM驅動(dòng)開(kāi)發(fā)

由于Windows是多任務(wù)非實(shí)時(shí)的操作系統,每個(gè)進(jìn)程占用處理器的時(shí)間應小于50微秒,如果需要長(cháng)時(shí)間的硬件訪(fǎng)問(wèn)應采用系統線(xiàn)程的方法,本設計采用三余度三個(gè)內核線(xiàn)程對數據處理用以保證訪(fǎng)問(wèn)的準確性。由于該設備硬件的快捷性和軟件的延時(shí)性,并且突發(fā)大數據量傳輸發(fā)生概率比較高。所以驅動(dòng)程序在發(fā)送模塊上使用了,在接收模塊使用了,保證數據能夠平滑的通信,在突發(fā)大數據量操作時(shí)保證了數據的完整性和確定性。由于中斷函數(wdmISR)的系統優(yōu)先級最高,其工作占用CPU資源能夠影響到整個(gè)系統的運行,所以中斷需盡可能的簡(jiǎn)短、盡可能避免使用浮點(diǎn)操作、盡可能的將處理移交給任務(wù)處理。所以設計了中斷延時(shí)處理函數DPC(Deferred Procedure Call)對系統進(jìn)行資源合理利用保證通信的有效性。中斷服務(wù)程序功能框圖如圖4所示。

基于1394b總線(xiàn)仿真設備的WDM驅動(dòng)開(kāi)發(fā)

:為了提高硬件資源利用率以及設備工作的安全性。本設備設計為三余度(兩個(gè)余度為主節點(diǎn),一個(gè)余度為備用節點(diǎn))一體設備,三節點(diǎn)能夠獨立進(jìn)行工作。1394b總線(xiàn)協(xié)議允許發(fā)送物理層包訪(fǎng)問(wèn)遠程節點(diǎn),并且能夠通過(guò)遠程訪(fǎng)問(wèn)包對設備節點(diǎn)進(jìn)行遠程控制。所以當任意一個(gè)主節點(diǎn)出現故障,備用節點(diǎn)可以通過(guò)遠程命令斷開(kāi)故障主節點(diǎn),從而啟用備用節點(diǎn),增加設備運行的安全性。

單功能多設備的運行對驅動(dòng)程序而言每個(gè)設備都有自己的內存空間、I/O空間以及中斷號,運行互不影響。軟件對硬件的操作,在方面只需要對操作進(jìn)行排隊處理,就能夠避免軟件對硬件的并行操作。而三余度多功能多樣性設備的運行對驅動(dòng)而言,使用的可能有很多的共享資源(如等資源),并且軟件對3個(gè)余度的操作有可能是并行的,驅動(dòng)軟件設計在節點(diǎn)間共享資源進(jìn)行加鎖處理保證通信的獨立性及確定性。

能夠有效的避免資源訪(fǎng)問(wèn)沖突,能夠以不同優(yōu)先級級別控制各個(gè)功能,能夠以不同頻率控制各個(gè)功能,有效的提高了軟件對硬件操作的安全性。該驅動(dòng)設計了節點(diǎn)間公共資源訪(fǎng)問(wèn)設置互斥信號量(KeWaitForMultipleObjects),只有信號的擁有者才能釋放信號量。同時(shí)設計了保護節點(diǎn)內共享資源的保護措施,如中斷掛接IoCionnect Intei Tupt函數下的自旋鎖。對上層操作進(jìn)行堆棧處理,保證操作的有效性,并且對該操作進(jìn)行風(fēng)險評估(如對鏈路層操作可能影響設備收發(fā)數據操作),達到對硬件的全面保護。

內核線(xiàn)程:由于該設備應用于通信方面,突發(fā)性大數據量傳輸發(fā)生率比較高,而windows環(huán)境下每個(gè)進(jìn)程占用處理器的時(shí)間應小于50微秒,所以該驅動(dòng)在PNP(Plug and Play)

為每個(gè)節點(diǎn)設置一個(gè)線(xiàn)程(PsCreateSvstemThread)對突發(fā)的大數據量數據進(jìn)行平滑處理,以保證數據平穩的交由上層,該線(xiàn)程為事件驅動(dòng)類(lèi)型。并且通過(guò)KeCetCurrentThread和KeSetPriorityThread調整線(xiàn)程優(yōu)先級。

當中斷發(fā)生,中斷處理函數記錄中斷狀態(tài)并清除中斷,判斷中斷是否為空,如果不為空則通過(guò)IoRequestDpc請求DPC,同時(shí)把相應的中斷狀態(tài)傳給DPC。DPC通過(guò)中斷狀態(tài)判斷中斷類(lèi)型和發(fā)生中斷的節點(diǎn),并且置位對應線(xiàn)程的線(xiàn)程事件。線(xiàn)程觸發(fā)后,從阻塞態(tài)變?yōu)榫途w態(tài),當該進(jìn)程得到處理器資源,調用數據處理函數處理數據。

:Windows是多任務(wù)非實(shí)時(shí)的操作系統,而DMA可以有效的避免CPU的調度而節省時(shí)間,提高設備的實(shí)時(shí)性。系統要求DMA的使用率盡可能的減少并且盡可能的快捷。本設計使用硬件側DMA,由FPGA邏輯實(shí)現,DMA控制由驅動(dòng)控制。

驅動(dòng)軟件對DMA進(jìn)行初始化,當中斷服務(wù)程序被調用,驅動(dòng)程序根據DPRAM的0、1區標志獲取新數據存放區域,并從該區獲取新數據的刷新標記。如有新數據,則服務(wù)程序申請DMA資源,獲取到DMA資源后,鎖定DMA資源并啟動(dòng)(DMA源地址、目的地址、數據搬運長(cháng)度、控制命令)I/O端口到主存區的DMA。DMA完成后上報完整中斷并釋放DMA資源。當上層調用IRP_MJ_DEVICE_CONTROL對DPRAM進(jìn)行寫(xiě)操作時(shí),驅動(dòng)程序判斷用戶(hù)該次操作的DPRAM的內存大小,如果在32K~2048K字節之間,則啟動(dòng)主存區到I/O端口的DMA,如果大于則分次啟動(dòng)DMA,如果小于32K字節則單拍或者多拍操作。操作流程與啟動(dòng)接收DMA相同,操作完成則上報中斷。

:快捷性是硬件的特性之一,而應用層相對于硬件是及其緩慢的。并且由于PCI數據包封包的影響,其總線(xiàn)實(shí)際帶寬只有133 Mbps/s,而本1394b設備支持S100Mbps

和S400Mbps兩種傳輸速率。所以為避免設備長(cháng)時(shí)間工作帶來(lái)內存遞增、內存泄漏以及突發(fā)大數據量給PCI總線(xiàn)通信超負荷運轉造成數據丟失現象,驅動(dòng)利用IoAllocateMdl申請一塊3M的內存區,供硬件軟件交互循環(huán)利用的用以保證傳輸的有可靠性,以及安全性。

當中斷服務(wù)程序被調用時(shí),驅動(dòng)啟動(dòng)DMA或者讀寫(xiě)寄存器操作把數據從指定DPRAM區搬運到主存區,更新新的數據指針并通過(guò)軟中斷方式通知上層軟件。上層軟件通過(guò)Deviee IoCo ntrol對設備進(jìn)行控制,當應用層對驅動(dòng)進(jìn)行操作時(shí),驅動(dòng)根據寫(xiě)指針與讀指針的差值提供可操作的內存塊給上層軟件。

不僅能夠提高帶寬的利用率,并且能夠有效避免硬件與軟件操作沖突情況的出現,并且避免了資源訪(fǎng)問(wèn)沖突的重試耗時(shí),提高傳輸的有效性、實(shí)時(shí)性。驅動(dòng)收發(fā)模塊乒乓操作如圖5和圖6所示。

基于1394b總線(xiàn)仿真設備的WDM驅動(dòng)開(kāi)發(fā)

發(fā)送模塊中,驅動(dòng)軟件與應用層交互,采用兩塊地址內存區。內存塊操作由用戶(hù)層軟件操作,操作完成后切換內存區并通知驅動(dòng)最新數據存放位置。驅動(dòng)軟件與硬件交互也采用兩塊DPRAM區。DPRAM的0、1區的切換操作由驅動(dòng)軟件進(jìn)行操作,數據更新完畢的DPRAM交由邏輯處理并進(jìn)行換區操作。

接收模塊中,驅動(dòng)軟件設計循環(huán)隊列與上層軟件進(jìn)行交互。硬件與驅動(dòng)軟件交互同樣采用乒乓原理,該操作由硬件邏輯操作,驅動(dòng)軟件根據最新數據存放的DPRAM區,以及消

息新舊標記來(lái)進(jìn)行數據處理。處理完成后完成數據新舊標志切換,并軟中斷方式通知應用層有新數據到達,應用層驅動(dòng)返回的地址指針和內存大小獲取最新數據。

3 驗證分析

本設備提供DLL(Dynamic Link Library),采用Microsoft Visual Studio 2008專(zhuān)業(yè)版開(kāi)發(fā),封裝為標準的動(dòng)態(tài)鏈接庫。提供Demo程序,圖7為CC(Control computer)的發(fā)送數據窗口測試圖,圖8為RN(Remote Node)的接收數據的窗口測試圖。

基于1394b總線(xiàn)仿真設備的WDM驅動(dòng)開(kāi)發(fā)

由上圖可見(jiàn)驅動(dòng)程序實(shí)現了1394b的S400 Mbps速率和PCI的S133 Mbps速率的跨速率通信數據不丟失,避免了軟硬件交互產(chǎn)生的誤碼,使在S100 Mbps通信速率下平均帶寬達到79.2 Mbps,在S400Mbps通信速率下平均帶寬達到231.7 Mbps,實(shí)現了數據延時(shí)控制在us級別,實(shí)現了操作的準確性,保證了數據傳輸的確定性。

4 結束語(yǔ)

自2011年中國面臨著(zhù)國外大規模技術(shù)轉移封鎖以來(lái),國內自研設備百花齊放,尤其是軟件硬化無(wú)疑已經(jīng)成為焦點(diǎn)。作為硬件靈魂的驅動(dòng)程序越來(lái)越受到人們的重視。本文根據軟硬件的特性進(jìn)行軟硬件工作協(xié)調,提高了硬件資源的利用率,提高了仿真通信的實(shí)時(shí)性,確定性,可靠性。由于需求要求該設備為PCI總線(xiàn)設備,通信的帶寬受到限制,所以準備利用PCIe總線(xiàn)和實(shí)時(shí)操作系統提高設備的通信帶寬。



評論


相關(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>