usb主機控制器說明

USB拓撲
對於每個嵌入式的CPU芯片中一般都會集成一個或多個Host 控制器,每個Host控制器其實就是一個PCI設備,掛載在PCI總線上,在Linux系統中,驅動開發人員應該給Host 控制器提供驅動程序,Host 控制器用usb_hcd結構來表示。該結構體在/include/linux/usb/hcd.h中定義。

每個USB Host控制器都會自帶一個USB Hub,被稱爲跟(Root)Hub。這個根Hub又可以接子(Sub)Hub,每個Hub上又可以掛載USB 設備。從廣義上來說,USB Hub也算是USB設備。每個根USB Hub下可以直接或間接地連接127個設備

幾種USB控制器類型:OHCI,UHCI,EHCI,xHCI
OHCI、UHCI都是USB1.1的接口標準,而EHCI是對應USB2.0的接口標準,最新的xHCI是USB3.0的接口標準。

OHCI(Open Host Controller Interface)是支持USB1.1的標準,但它不僅僅是針對USB,還支持其他的一些接口,比如它還支持Apple的火線(Firewire,IEEE
1394)接口。與UHCI相比,OHCI的硬件複雜,硬件做的事情更多,所以實現對應的軟件驅動的任務,就相對較簡單。主要用於非x86的USB,如擴展卡、嵌入式開發板的USB主控。
UHCI(Universal Host Controller Interface),是Intel主導的對USB1.0、1.1的接口標準,與OHCI不兼容。UHCI的軟件驅動的任務重,需要做得比較複雜,但可以使用較便宜、較簡單的硬件的USB控制器。Intel和VIA使用UHCI,而其餘的硬件提供商使用OHCI。
EHCI(Enhanced Host Controller Interface),是Intel主導的USB2.0的接口標準。EHCI僅提供USB2.0的高速功能,而依靠UHCI或OHCI來提供對全速(full-speed)或低速(low-speed)設備的支持。
xHCI(eXtensible Host Controller Interface),是最新最火的USB3.0的接口標準,它在速度、節能、虛擬化等方面都比前面3中有了較大的提高。xHCI支持所有種類速度的USB設備(USB 3.0 SuperSpeed, USB 2.0 Low-, Full-, and High-speed, USB 1.1 Low- and Full-speed)。xHCI的目的是爲了替換前面3中(UHCI/OHCI/EHCI)。
USB主機控制器驅動
顧名思義,主機控制器就是用來控制USB設備與CPU之間通信的。CPU要對設備做什麼操作,會先通知主機控制器,而不是直接發送指令給USB設備。主機控制器接收到CPU的命令後,會去指揮USB設備完成相應的任務。這樣,CPU把命令傳給主機控制器後,就不用管餘下的工作了,CPU轉向處理其他的事情。

USB主機控制器必須由USB主機控制器驅動程序驅動才能運行。USB主機控制器驅動用hc_driver表示,在計算機系統中的每一個主機控制器都有一個對應的hc_driver結構體,該結構體在/include/linux/usb/hcd.h中定義。
————————————————
版權聲明:本文爲CSDN博主「huangweiqing80」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/huangweiqing80/article/details/82998850

發佈了28 篇原創文章 · 獲贊 19 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章