行業資(zī)訊
   
Windows XP下(xià)USB整體(tǐ)結構
發布時間:2012-3-20
浏覽人數:1742

     這裏主要講的是Windows XP下(xià)USB驅動協議棧的整體(tǐ)結構,以及内部的一(yī)些重要數據結構。在寫這些東西時,參考了大(dà)牛Tiamo的相關論壇貼子 ,内容很多雷同,說是轉貼也不爲過。

    USB協議棧是由如下(xià)幾個驅動文件構成的:

    usbport.sys    USB主機控制器共用驅動代碼庫,供miniport驅動調用。

    usbhub.sys    USB總線驅動,USB總線也是USB設備的一(yī)種。

    usbehci.sys   USB EHCI主機控制器驅動,它是屬于miniport驅動。

    usbuhci.sys  USB UHCI主機控制器驅動,它是屬于miniport驅動。

    usbohci.sys  USB OHCI主機控制器驅動,它是屬于miniport驅動。

    usbd.sys       USB設備驅動共用代碼庫,供USB設備驅動和總線驅動調用。

    usbccgp.sys  USB複合設備驅動。

    usbstor.sys   USB存儲設備驅動。

    usbaudio.sys USB聲音設備驅動。

    usbvideo.sys USB視頻(pín)設備驅動。

    hidusb.sys    USB HID設備驅動。

    主機控制器驅動是USB協議棧的最底層驅動,在它之上就是USB總線驅動,再之上是USB設備驅動。

    USB設備驅動上面呢,一(yī)般還有其它的驅動。象usbstor上面還有存儲設備class驅動,hidusb上面還有HIDclass驅動。不過這上面的驅動,就和USB的驅動協議棧沒有多大(dà)的關系了。而設備驅動和具體(tǐ)的設備類有千絲萬縷的關系,不是我(wǒ)們要讨論的重點。

    這裏重點要讨論的是控制器和總線,這是USB驅動協議棧的核心。

    我(wǒ)們知(zhī)道,USB2.0有EHCI控制器,USB1.1有UHCI和OHCI控制器。這樣一(yī)共有三種控制器,它們之間有什麽區别呢? 這要先說一(yī)說控制器的作用,USB協議棧并不是憑空而建立起來的,它下(xià)層就是PCI總線驅動(一(yī)般而言,也不一(yī)定非得是PCI總線),而控制器的作用就是和PCI總線打交道,将USB的功能和操作轉變成PCI總線上的一(yī)系列操作,同時還兼任着usb總線的日常管理。

    不同的硬件廠商(shāng)都可以有它自己的一(yī)個控制器規範,這在USB協議出現早期尤爲突出。但這樣各自爲政畢竟對整個規範的發展不利,于是大(dà)家便開(kāi)始統一(yī)接口規範,這統一(yī)規範能滿足大(dà)家的絕大(dà)部分(fēn)需求,所以大(dà)家也就都用标準規範。USB 1.1時,就形成了OHCI和UHCI兩大(dà)陣營,而USB2.0時,則隻有EHCI了,顯然,大(dà)家還是覺得标準越少麻煩越少。

    對比一(yī)下(xià)UHCI和OHCI,兩者都是提供對USB1.1協議的支持,隻不過,UHCI硬件實現相對較少而成本相對較低,但軟件驅動複雜(zá)度相對較高,所以,UHCI多用在PC上,OHCI多用在嵌入設備中(zhōng)。而 EHCI 則是伴随着USB 2.0規範一(yī)同出現(因爲大(dà)家都受夠了要同時支持兩大(dà)規範的痛苦),它同時也向下(xià)兼容UHCI和OHCI。

    好了,廢話(huà)就說這麽多,再具體(tǐ)的網上可查。下(xià)面,就說說控制器驅動的事兒。各大(dà)控制器規範和底層PCI總線的接口差别比較大(dà),但它控制USB總線那一(yī)塊的功能都基本上差不多 -- 都是完全符合USB本身規範的。所以,各大(dà)控制器的驅動底層接口部分(fēn)是各自爲政,而USB總線管理部分(fēn)則被提煉出來,形成一(yī)個共同的代碼庫,名爲usbport.sys。也就是說,usbport.sys并不是一(yī)個獨立的驅動,而隻是一(yī)個供别人調用的動态鏈接庫。而這個動态鏈接庫由于實現了控制器驅動的絕大(dà)多數功能,所以,我(wǒ)們習慣地将它當作控制器驅動的主體(tǐ)。

    講了usbport.sys是怎麽回事,順帶講講usbd.sys。usbd.sys和usbport.sys角色定位類似,它也隻是作爲一(yī)個動态鏈接庫供USB設備驅動和USB總線驅動使用。不過,由于usbd.sys實現的功能很有限,作用沒有usbport.sys那麽突出,所以就顯得比較邊緣化,在一(yī)般的讨論中(zhōng)将它忽略掉。

    關于USB驅動棧的整體(tǐ)結構就講到這裏,後續會具體(tǐ)講講usbhub.sys和usbport.sys所實現的功能。

 

新聞資(zī)訊
聯系我(wǒ)們

聯系電話(huà):020-87518715

聯系郵箱:services@picusit.com

公司名稱:鄭州易科計算機服務有限公司

公司地址:廣州市天河區龍口西路100号中(zhōng)明大(dà)廈1601

熱線咨詢電話(huà):

020-87518715

公司地址:
廣州市天河區龍口西路100号中(zhōng)明大(dà)廈1601
手機掃碼查看更多
如有問題咨詢請及時與我(wǒ)們溝通,我(wǒ)們會爲您詳細解答!
Copyright © 鄭州易科計算機服務有限公司 地址:廣州市天河區龍口西路100号中(zhōng)明大(dà)廈1601

網站首頁

公司介紹

服務項目

成功案例

技術動态

聯系方式