<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于USB總線和Aduc831單片機(jī)的數(shù)據(jù)采集系統(tǒng)的設(shè)計

          基于USB總線和Aduc831單片機(jī)的數(shù)據(jù)采集系統(tǒng)的設(shè)計

          作者: 時間:2012-03-27 來源:網(wǎng)絡(luò) 收藏

          3.2 設(shè)備驅(qū)動程序

          設(shè)備驅(qū)動程序WDM。WDM型驅(qū)動程序是內(nèi)核程序,與標(biāo)準(zhǔn)的Win32用戶態(tài)程序不同。采用了分層處理的方法, 較高級的設(shè)備驅(qū)動程序和較低級的USB函數(shù)層。其中USB函數(shù)層由兩部分組成:較高級的通用串行模塊(USBD)和較低級的主控制器驅(qū)動程序模塊(HCD)。USB設(shè)備驅(qū)動程序不必具體對硬件編程,所有的USB命令、讀寫操作通過驅(qū)動程序轉(zhuǎn)給USB設(shè)備。但是,USB設(shè)備驅(qū)動程序必須定義與外部設(shè)備的通訊接口和通訊的數(shù)據(jù)格式,也必須定義與應(yīng)用程序的接口。Windows 98/2000提供了一系列的驅(qū)動程序,他們具有為許多標(biāo)準(zhǔn)類型設(shè)備服務(wù)所需的所有基本功能,用戶按照提示可以定義設(shè)備的配置和功能,然后做功能的修改即可??梢园裊SB設(shè)備驅(qū)動程序的功能劃分成4個不同的模塊來實現(xiàn):初始化模塊、即插即用管理模塊、電源管理模塊以及I/O功能實現(xiàn)模塊。初始化模塊提供1個入口函數(shù)DriverEntry(),在DriverEntry中,需要提供一個AddDevice例程,把驅(qū)動程序添加到驅(qū)動程序堆棧中去。另外,所有對各種IRP(I/O請求包)的處理例程都在此入口函數(shù)中作為定義。
          DriverEntry(IN PDRIVER_OBJECT DriverObject,…) //驅(qū)動程序入口
          {
          DriverObject->DriverExtension->AddDevice=USBAddDevice;
          DriverObject->DriverUnload=USBUnload;
          DriverObject->MajorFunction[IRP_MJ_READ]=USBRead;
          DriverObject->MajorFunction[IRP_MJ_WRITE]=USBWrite;
          DriverObject->MajorFunction[IRP_MJ_DEVICE_CONTROL] = USBDeviceControl;
          RegisterForPnpNotification(DriverObject);
          return status;
          }

          即插即用管理模塊用來實現(xiàn)USB設(shè)備的熱插拔及動態(tài)配置。當(dāng)硬件檢測到有USB設(shè)備接入時,Windows98查找響應(yīng)的驅(qū)動程序,并調(diào)用它的 DriverEntry例程。PnP(即插即用)管理器調(diào)用驅(qū)動程序的AddDevice例程,告訴它添加了一個設(shè)備。在此處理過程中,驅(qū)動程序收到一個設(shè)備啟動請求(IRP_MN_START_DEVICE)的IRP。同理,當(dāng)要拔除時,PnP管理器會發(fā)出一個設(shè)備刪除請求(IRP_MN_REMOVE_DEVICE)的IRP,由驅(qū)動程序進(jìn)行處理。通過對這些PnP請求的處理,可支持設(shè)備的熱插拔和即插即用功能。

          電源管理模塊負(fù)責(zé)設(shè)備的掛起與喚醒。

          I/O功能實現(xiàn)模塊完成I/O請求的大部分工作。若應(yīng)用程序想對設(shè)備進(jìn)行I/O操作,它便使用Windows API函數(shù),對WIN32子進(jìn)行WIN32調(diào)用。此調(diào)用由I/O服務(wù)接收并通知I/O管理器,I/O管理將此請求構(gòu)造成一個合適的I/O請求包(IRP)并把它傳遞給USB設(shè)備驅(qū)動程序。USB設(shè)備驅(qū)動程序接收到這個IRP以后,根據(jù)IRP中包含的具體操作代碼,構(gòu)造相應(yīng)的USB請求塊并把此 URB(USB請求塊)放到一個新的IRP中。然后,把此IRP傳遞到USB驅(qū)動程序,USB總線驅(qū)動程序根據(jù)IRP中所含的URB執(zhí)行相應(yīng)的操作(如從USB設(shè)備讀取數(shù)據(jù)等),并把操作結(jié)構(gòu)通過IRP返還給USB設(shè)備驅(qū)動程序。USB設(shè)備驅(qū)動程序接收到此IRP后,將操作結(jié)果通過IRP返還給 I/O管理器。最后,I/O管理器將此IRP中操作結(jié)果返還給應(yīng)用程序,至此應(yīng)用程序?qū)SB設(shè)備的一次I/O操作完成。

          結(jié)束語:

          USB為計算機(jī)外設(shè)輸入輸出提供了新的接口標(biāo)準(zhǔn)。它使設(shè)備具有熱插拔,即插即用,自動配置的能力,并標(biāo)準(zhǔn)化設(shè)備連接, 還可與MAX485結(jié)合起來實現(xiàn)數(shù)據(jù)的遠(yuǎn)程采集。該系統(tǒng)具有可靠性高、性價比高和多點采集等優(yōu)點。而USB2.0標(biāo)準(zhǔn)具有更高的傳輸速率,更具有美好的應(yīng)用前景。

          參考文獻(xiàn):
          1. datasheet. Analog device.
          2. USB1.1. Universal serial bus specification S.
          3. 張念淮、江浩.《USB總線接口開發(fā)指南》 國防工業(yè)出版社.


          上一頁 1 2 3 4 下一頁

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();