天天看點

Linux USB劄記

 嵌入式linux核心添加USB子產品(U盤)支援

使用menuconfig工具進行配置

1、Device Drivers->SCSI device support->SCSI disk support此選項必須勾選

2、Device Drivers->USB support->Support for Host-side USB 此選項選中後會出現子菜單,故必須選中

3、Device Drivers->USB support->USB Mass Storage support 此選項必須選中,否則/dev/下沒有裝置

4、因為我是在DM6467平台下,是以需要Device Drivers->USB support->Inventra USB Highspeed Dual Role Controller Support選項,并選擇其子選項下的DaVinci 644x USB support下Driver Mode為Host

編譯核心即可,下載下傳核心後成功支援USB的熱插拔及其檔案系統

以上選項僅基于我自己的平台,且測試條件單一(隻有一個U盤、linux核心為2.6.0.10)

EHCI和OHCI,UHCI的比較和差別 

2012-07-20 23:25 34488人閱讀 評論(1) 收藏 舉報

interface工作

什麼是 ehci?什麼是 ohci?就是host controller 的接口

EHCI和OHCI的比較和差別

   什麼是 ehci?什麼是 ohci?就是host controller 的接口.從硬體上來說,usb 裝置要想工作,除了外設本身,必須還有一個咚咚叫做 usb host controller.一般來說,一個電腦裡有一個 usb host controller就可以了,她就可以控制很多個裝置了,比如 u 盤,比如 usb 鍵盤,比如 usb 滑鼠.所有的外設都把自己的請求送出給usb host controller.然後讓 usb host controller 統一來排程.

   現在一般的USB橋接器子產品有兩種類型,UHCI和OHCI。在決定插入那一個橋接器子產品時,可以察看/proc/pci檔案來決定。。一般而言,UHCI類型的橋接器它的插入子產品是uhci或usb-uhci(由核心版本決定);而對于OHCI類型的橋接器它的插入子產品是ohci或usb-ohci。

    uhci(universal host controller interface): Intel用在自家晶片組上的usb 1.1主要制器(host controller)的硬體執行個體

    ehci(enhanced host controller interface): usb 2.0的主要制器标準接口。

     ohci(open host controller inferface):一個不僅僅是usb用的主要制器接口标準。主要是遵循csr (configuration space register)标準。是其他廠商在設計usb host controller時遵循的标準,如via, nec, ali, 包括nvidia等等。

     ehci是滿足usb 2.0 specification裡面對usb host controller (high speed)的要求的硬體設計。

為了實作USB主機功能的統一,提高系統的可靠性與可移植性,上遊晶片生産廠家在确定USB标準的同時,也确定了相應的主機規範。現在用得比較廣泛的有三種,其中的用于USB2.0高速裝置的EHCI(Enhanced Host Control Interface增強主機控制接口)規範是INTEL用于USB2.0高速主機的。而同是INTEL推出的UHCI(Universal Host Control Interface 通用主機)與前Compaq 、Microsoft等推出的OHCI(Open Host Control Interface開放主機控制接口)可用于全速與低速USB系統中,硬體的要求與系統性能、軟體複雜的要求相對較低,也能夠滿足大部分的具有USB接口嵌入式系統的要求。而在UHCI與OHCI的對比中,UHCI對硬體的要求相對較少,但對系統的處理能力與軟體的開發要求相對要高(PC機就較多地采用了UHCI);OHCI則把較多的功能定義在硬體中,軟體需要處理的内容就相對容易,對系統的處理能力和系統資源的要求就低。

是以,在嵌入式的USB HOST功能中,較多地選用了遵循OHCI的規範的硬體,進而簡化了系統的設計。

EHCI 驅動程式的功能包括:

  • 符合支援 USB 2.0 的增強主機控制器接口的标準。
  • 支援高速控制、批處理和中斷傳輸。
  • 目前尚不支援高速同步事務。
  • USB 2.0 晶片包含一個 EHCI 控制器以及一個或多個 OHCI 或 UHCI 控制器。
  • USB 1.1 裝置插入後會動态配置設定給 OHCI 或 UHCI 控制器。USB 2.0 裝置插入後會動态配置設定給 EHCI 控制器。

    簡單地講,OHCI、UHCI都是USB1.1的接口标準,而EHCI是對應USB2.0的接口标準,最新的xHCI是USB3.0的接口标準。

  • 1. OHCI(Open Host Controller Interface)是支援USB1.1的标準,但它不僅僅是針對USB,還支援其他的一些接口,比如它還支援Apple的火線(Firewire,IEEE 1394)接口。與UHCI相比,OHCI的硬體複雜,硬體做的事情更多,是以實作對應的軟體驅動的任務,就相對較簡單。主要用于非x86的USB,如擴充卡、嵌入式開發闆的USB主要。
  • 2. UHCI(Universal Host Controller Interface),是Intel主導的對USB1.0、1.1的接口标準,與OHCI不相容。UHCI的軟體驅動的任務重,需要做得比較複雜,但可以使用較便宜、較簡單的硬體的USB控制器。Intel和VIA使用UHCI,而其餘的硬體提供商使用OHCI。
  • 3. EHCI(Enhanced Host Controller Interface),是Intel主導的USB2.0的接口标準。EHCI僅提供USB2.0的高速功能,而依靠UHCI或OHCI來提供對全速(full-speed)或低速(low-speed)裝置的支援。
  • 4. 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)。