<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è) > EDA/PCB > 設計應用 > 基于PCD656的高速PCI總線(xiàn)接口的設計與實(shí)現

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

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

  3 設備驅動(dòng)開(kāi)發(fā)

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

  3.1 硬件訪(fǎng)問(wèn)

  X86處理器有兩種獨立的映射空間:I/O空間和內存空間,I/O空間只能通過(guò)I/O指令來(lái)訪(fǎng)問(wèn),KIoRange類(lèi)封裝了對I/O空間的操作命令。對于設計的設備,可以通過(guò)實(shí)例化KIoRange類(lèi)來(lái)對I/O空間進(jìn)行相應的操作。

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

  3.2 中斷處理

  驅動(dòng)程序使用KInterrupt類(lèi)來(lái)實(shí)現對中斷操作的處理,其中包括中斷的初始化、將一個(gè)中斷服務(wù)例程連接到一個(gè)中斷和解除其連接等。

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

  3.3 DMA傳輸

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

 ?。?)實(shí)例化三個(gè)類(lèi)



  OnDmaReady例程中獲取傳輸的物理內存的地址和字節數,然后設置相應的DMA寄存器值開(kāi)始DMA傳輸。DMA傳輸結束后,應使m_CmxentTm-nsfer無(wú)效并刪除。具體流程如圖2所示。

 DMA傳輸流程

圖2 DMA傳輸流程



關(guān)鍵詞: PCD 656 PCI 總線(xiàn)

評論


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