1. 程式人生 > >淺談USB驅動架構

淺談USB驅動架構

https://blog.csdn.net/u014276460/article/details/47292427

USB系統可以分為兩個系統:(1)主機系統HOST;(2)裝置系統(Device)。

USB主機系統Host

USB主機系統中,USB主機控制器是一塊核心的處理晶片,主機控制器通過根集線器(Root Hub)與外部USB從機裝置相連。USB主機控制器包含硬體、軟體、韌體等部分。

USB裝置系統Device

USB裝置按功能可分為兩部分:集線器Hub、功能部件。如下圖所示,主機通過根集線器連線到各種外圍裝置(集線器、功能部件)。

USB驅動架構

下圖所示是典型的USB驅動架構。


USB core

USB Core包含Host Core Driver、Hub Driver,簡稱USBD 

module,獨立於硬體的協議棧,支援USB Host協議、USB Hub功能。

HCD(Host Controller Driver)

硬體之上執行的是HCD,USB HCD包含三種USB介面規範:

(1)UHCI:通用主機控制介面,USB1.0/1.1;

(2)OHCI:開放主機控制介面,USB1.0/1.1;

(3)EHCI:增強主機控制介面,USB2.0;

HCD的內部結構如下圖所示:


其中,HCD包含了Platform Device Driver、Host Controller Driver、Root Hub Driver。

USB Core和HCD構成了USB驅動的核心部分,在上層就是用各種USB裝置的廠商提供相應的驅動程式。

以如下一個帶OTG技術的WindowsCE USB驅動架構為例,可以將USB驅動從上到下分為3層:

(1)應用層:Client(USB Device Driver);

(2)匯流排層:USBD;

(3)硬體層:USB HCD;


USB Host的應用協議支援4種應用:RNDIS、Print、Mass Storage、HID;其中HID(Human Interface Device)是一種通訊協議。

USB OTG控制器的上層是USB OTG控制器的驅動,USB OTG Core Driver是協議層(匯流排層),如果做Host,它會使用USB Host協議棧;如果做Device,它會使用USB Device協議棧。

USB裝置工作流程

當裝置功能驅動希望向某個管道發出讀寫請求時,首先構造請求(USB Request Block,URB)發給USB匯流排驅動(USBD中的Hub Driver),USB匯流排驅動解釋該請求,並轉換請求發往USB主機控制器埠驅動(usbport.sys,應該屬於HCD),進而通過小埠驅動(usbohci.sys等,應該屬於USB HCD)與裝置進行通訊。具體如下圖所示:


參考文獻

http://blog.csdn.net/myarrow/article/details/8500155

http://blog.csdn.net/LoongEmbedded/article/details/7519808