天天看點

36、USB裝置驅動

    USB(Universal Serial Bus)串行通用總線,支援即插即用,也稱之為菊鍊(daisy chaining),因為在一條線纜上可以最多連結127個裝置;速度傳輸速率可達4Mb/s~12Mb/s。USB采用級聯方式。<?xml:namespace prefix = o />

1、USB連接配接拓撲結構

1)USB host控制器;host控制器其實也就是一個PCI裝置,挂載在PCI總線上。

2)USB Hub;USB裝置。

我們可以将USB裝置了解也一個USB Host連接配接多個邏輯裝置。

36、USB裝置驅動
36、USB裝置驅動

2、USB通信流程

USB的連接配接模式是Host和Device的連接配接模式,所有的請求都是由Host向Device發出。

36、USB裝置驅動

(SW-software)

    每個USB裝置都會有多個管道。對于USB裝置驅動程式員,主要工作在USB裝置層。

對于每個USB裝置,都有一個或者多個的接口,每個接口(Interface)有多個端點(Endpoints),每個端點通過管道(Pipes)和USB Host控制器連接配接。每個USB裝置都會有一個特殊的端點,Endpoint0,它負責傳輸裝置的描述資訊,同時也負責傳輸PC與裝置之間的控制資訊。

36、USB裝置驅動

USB裝置驅動向USB控制器驅動請求請求的每次傳輸被稱為一個事務,事務有四種類型,Bulk Transaction,Control Transaction,Interrupt Transaction,Isochronous Transaction。每次事務都會分解成若幹個資料包在USB總線上傳輸。每次傳輸必須經曆兩個或三個部分;第一部分,USB控制器向USB裝置發出指令,第二部分是USB控制器和USB裝置之間傳遞讀寫請求,是可選的,第三部分是握手信号。

如下為Bulk Transaction的示意圖:

36、USB裝置驅動
36、USB裝置驅動

其它參見[1]。

3、關于Windows 下的USB驅動

常用usbview和BusHound來觀察和分析USB裝置。關于USB裝置請求,裝置描述符,配置描述符,接口描述符,端點描述符,及USB具體執行個體,可以參見[1]。

USB驅動程式的主要功能就是設定這些USB令牌,和擷取USB裝置描述符。USB驅動程式将這些請求最終轉化為USB請求包(URB),然後發往USB總線驅動程式。

[1] Windows驅動開發詳解,張帆

繼續閱讀