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

          新聞中心

          EEPW首頁 > 手機與無線通信 > 設(shè)計應(yīng)用 > 一種64位高速PCI總線接口的設(shè)計與實現(xiàn)

          一種64位高速PCI總線接口的設(shè)計與實現(xiàn)

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


          3 設(shè)備驅(qū)動開發(fā)
          在Windows環(huán)境下開發(fā)設(shè)備驅(qū)動程序主要有兩種模型,即WinDriver和WDM。本使用了WDM驅(qū)動模型。開發(fā)設(shè)備驅(qū)動程序WDM需要處理:硬件訪問、中斷處理和DMA傳輸3方面問題。
          3.1 硬件訪問
          X86處理器有兩種獨立的映射空間:I/O空間和內(nèi)存空間,I/O空間只能通過I/O指令來訪問,KIoRange類封裝了對I/O空間的操作命令。對于設(shè)備,可以通過實例化KIoRange類來對I/O空間進行相應(yīng)的操作。
          對于PCI設(shè)備可以使用KMemoryRange類對內(nèi)存進行相應(yīng)操作,具體操作與KIoRange類對I/O空間的操作相似。
          3.2 中斷處理
          驅(qū)動程序使用KInterrupt類來對中斷操作的處理,其中包括中斷的初始化、將一個中斷服務(wù)例程連接到一個中斷和解除其連接等。
          中斷服務(wù)例程不是KInterrupt類的成員函數(shù),這是為了減少中斷延遲時間。中斷處理需要中斷服務(wù)例程和延遲過程調(diào)用例程,在中斷服務(wù)例程中,首先判斷該中斷是否是自己設(shè)備產(chǎn)生的,若不是,則返回False;若是,則請求一個延遲過程調(diào)用例程(DPC)。
          3.3 DMA傳輸
          PCI9656使用DMA方式進行數(shù)據(jù)傳輸。DMA傳輸需要3個類:KDmaAdapter,KDmaTransfer和KCommonDmaBuffer。其中,KDmaAdapter類用于建立一個DMA適配器,它說明了DMA通道的特性,如寬度,單次傳輸最大個數(shù)等,需要注意的是本設(shè)備使用的是64位寬度,因此需要特別指出;KDmaTransfer類用于DMA傳輸控制,如傳輸開始、傳輸字節(jié)數(shù)等;KCommonDmaBuffer類用于申請系統(tǒng)提供的公共緩沖區(qū)。具體DMA傳輸設(shè)置如下
          b.jpg

          本文引用地址:http://www.ex-cimer.com/article/156552.htm



          評論


          相關(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); })();