新聞中心

EEPW首頁 > EDA/PCB > 設計應用 > 基于PCD656的高速PCI總線接口的設計與實現(xiàn)

基于PCD656的高速PCI總線接口的設計與實現(xiàn)

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

  3 設備驅動開發(fā)

  在Windows環(huán)境下開發(fā)設備驅動程序主要有兩種模型,即WinDriver和WDM。本設計使用了WDM驅動模型。開發(fā)設備驅動程序WDM需要處理:硬件訪問、中斷處理和DMA傳輸3方面問題。

  3.1 硬件訪問

  X86處理器有兩種獨立的映射空間:I/O空間和內存空間,I/O空間只能通過I/O指令來訪問,KIoRange類封裝了對I/O空間的操作命令。對于設計的設備,可以通過實例化KIoRange類來對I/O空間進行相應的操作。

  對于PCI設備可以使用KMemoryRange類對內存進行相應操作,具體操作與KIoRange類對I/O空間的操作相似。

  3.2 中斷處理

  驅動程序使用KInterrupt類來實現(xiàn)對中斷操作的處理,其中包括中斷的初始化、將一個中斷服務例程連接到一個中斷和解除其連接等。

  中斷服務例程不是KInterrupt類的成員函數(shù),這是為了減少中斷延遲時間。中斷處理需要中斷服務例程和延遲過程調用例程,在中斷服務例程中,首先判斷該中斷是否是自己設備產(chǎn)生的,若不是,則返回False;若是,則請求一個延遲過程調用例程(DPC)。

  3.3 DMA傳輸

  PCI9使用DMA方式進行數(shù)據(jù)傳輸。實現(xiàn)DMA傳輸需要3個類:KDmaAdapter,KDmaTransfer和KCommonDmaBuffer。其中,KDmaAdapter類用于建立一個DMA適配器,它說明了DMA通道的特性,如寬度,單次傳輸最大個數(shù)等,需要注意的是本設備使用的是64位寬度,因此需要特別指出;KDmaTransfer類用于DMA傳輸控制,如傳輸開始、傳輸字節(jié)數(shù)等;KCommonDmaBuffer類用于申請系統(tǒng)提供的公共緩沖區(qū)。具體DMA傳輸設置如下

  (1)實例化三個類



  OnDmaReady例程中獲取傳輸?shù)奈锢韮却娴牡刂泛妥止?jié)數(shù),然后設置相應的DMA寄存器值開始DMA傳輸。DMA傳輸結束后,應使m_CmxentTm-nsfer無效并刪除。具體流程如圖2所示。

 DMA傳輸流程

圖2 DMA傳輸流程



關鍵詞: PCD 656 PCI 總線

評論


相關推薦

技術專區(qū)

關閉