windows裝置驅動程式WDF開發(3)

來源:互聯網
上載者:User

標籤:kernel   nbsp   fpga   max   ...   服務   sea   mod   端點   

第8章 KMDF過濾器驅動程式

1. 管理裝置的主功能為功能驅動FDO, 過濾器驅動位於FDO的上層或下層

    WdfFdoInitSetFilter // 聲明這個一個過濾驅動

2. 安裝要修改FDO的inf檔案

FilterSample執行個體

 

第9章 USB裝置開發

1. USB2.0 最快480Mb/s, UBS3.0速度 5.0Gbps (500MB/s)

2. USB裝置有一到多個配置

    每個配置有一到多個介面

    每個介面有一到多個端點,端點是通訊管道的終點, 有四種:批量(bulk), 控制,中斷(interrupt),同步(Isochronous)

    1)端點0預設是可以訪問的,輸入和輸出

    2)FDO的作用是把IRP引導到正確端點的管道上,把需求提給匯流排驅動,匯流排驅動分解成事務(transaction),送往匯流排

        事務有一到多個階段(phase),phase分令牌(token),資料和握手(ack)

 

3. USB資料轉送方式

    1)控制傳輸:最高優先順序,最大資料64B,每個控制事務包括一個SETUP令牌,帶可選的資料階段和握手階段,裝置必須響應控制傳輸

    2)

 (usb驅動部分待續)

 

第10章 PCI裝置驅動程式開發

1. 微機擴充插槽有:ISA(已淘汰), PCI(隨插即用,不是熱插拔)

   PCI: 32位元據匯流排,速率132~264MB/s, 

   通用PCI匯流排介面:AMCC的S5933,PLX的9054。也可以用FPGA實現PCI介面

2. 開發驅動主要有3方面問題:硬體訪問,中斷處理,DMA傳輸

    X86有兩種地址空間:I/O地址(只有64KB),記憶體位址(4GB以上)

    I/O映射:一個晶片的地址在I/O地址空間的範圍,只能通過I/O指令來訪問。

    記憶體映射:記憶體指令訪問

3. I/O訪問

    WRITE_PORT_UCHAR ,   WRITE_PORT_USHORT, WRITE_PORT_ULONG

    WRITE_PORT_BUFFER_UCHAR ...

4. 儲存空間訪問

    WRITE_REGISTER_UCHAR ...

    WRITE_REGISTER_BUFFER_UCHAR

5. 硬體訪問編程

   1) 根據配置定義地址指標,用於修改PCI9054的寄存器, MemBaseAddress0 和 IoBaseAddress0

   2)EvtDevicePrepareHardware 中初始化 MemBaseAddress0

6. 中斷處理

   WDFINTERRUPT, 運行在DIRQL層級,處理時間儘可能短

   插斷服務常式是非同步呼叫的,必須考慮其他常式和插斷服務常式的共用資料的保護性訪問(硬體中斷自旋鎖,運行在DIRQL)

   WDF_INTERRUPT_CONFIG_INIT, WdfInterruptCreate

7. DMA編程對象

   1) WDFDMAENABLER,用於建立一個DMA適配器,說明DMA通道的特性,  WdfDmaEnablerCreate

   2) WDFDMATRANSACTION, 用於傳輸控制, WdfDmaTransactionCreate

       啟動一個DMA傳輸,擷取傳輸緩衝區的物理地址和位元組數,DMA傳輸結束後的資料處理

       函數:

       WdfDmaTransactionInitialize(EvtProgramDmaFunction): WdfDmaTransactionExecute後會調用EvtProgramDmaFunction

       WdfDmaTransactionExecute 執行DMA傳輸

       WdfDmaTransactionRelease 終止傳輸

     WdfDmaTransactionDmaCompleted 測試傳輸是否完成

       WdfDmaTransactionDmaCompletedFinal 強行完成DMA傳輸

       WdfDmaTransactionGetBytesTransferred 傳輸的總位元組數

       WdfDmaTransactionSetMaximumLength 設定傳輸的最大位元組數,應小於65536

   3) WDFCOMMONBUFFER,申請系統的公用緩衝區, WdfCommonBufferCreate

 

       對於DMA操作,系統提供一個特殊的記憶體,物理上連續的記憶體,稱為公用緩衝區(比較稀有,避免浪費)。

       對於支援分散/聚集DMA的裝置,可以不用公用緩衝區

  

8. DMA傳輸編程

    DPC中,測試DMA傳輸完成沒有,若沒有,則WdfDmaTransactionExecute 繼續傳輸

PCI9056:

#define INTCSR 0x68
#define CNTRL 0x6C
#define DMAMODE0 0x80
#define DMAPADR0 0x84
#define DMALADR0 0x88
#define DMASIZ0 0x8C
#define DMADPR0 0x90//descriptor
#define DMACSR0 0xA8//DMA通道0 命令狀態寄存器
#define HPIC 0x00
#define HPIA 0x04
#define HPID 0x08

 

第11章 UMDF驅動程式編程入門

UMDFSample執行個體

是dll程式

 

第12章 WinDbg使用介紹

1. windbg調試:雙機調試,也可以用虛擬機器代替

    目標機:啟動時選擇“啟用偵錯工具”

    主控機:winDbg中kernel debugging

    windbg:debug-》break, 使主控機和目標機串連

    .reload 載入符號檔案

    ld projectName  載入PDB檔案

    lm l 顯示已經載入符號檔案清單

 

2. 調試

    F9 在源檔案中設定斷點

    G  使目標機運行

    F10 執行

 

windows裝置驅動程式WDF開發(3)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.