Linux那些事儿 之 戏说USB(2)漫漫辛酸路
這張表是從USB2.0 spec里直接拿過來的,可以看出,它的高速模式最高已經(jīng)達(dá)到了480Mbps,即60MBps,這是個什么概念,也就是說,照這個速度,你將自己從網(wǎng)上下的小短片備份到自己的移動硬盤上不用一秒鐘,而按照USB1.1最高12Mbps的速度,你需要將近1分鐘。2.0比1.1的最高速度足足提高了幾十倍。USB走過的這段辛酸路,對咱們來說最直觀的結(jié)果也就是傳輸速度提高了,過程很艱辛,結(jié)果很簡單,是不。
USB的各個版本是兼容的。每個USB2.0 控制器帶有3個芯片,根據(jù)設(shè)備的識別方式將信號發(fā)送到正確的控制芯片。我們可以將1.1設(shè)備連接到2.0的控制器上使用,不過它只能達(dá)到1.1的速度。同時也可以將2.0的設(shè)備連接到1.1的控制器上,不過不能指望它能以2.0的速度運行。
顯然,Linux對USB1.1和2.0都是支持的,通過看drivers/usb/host目錄下的Kconfig文件,我們可以知道內(nèi)核里支持的控制器。
config USB_EHCI_HCDtristate "EHCI HCD (USB 2.0) support"---help---The Enhanced Host Controller Interface (EHCI) is standard for USB 2.0"high speed" (480 Mbit/sec, 60 Mbyte/sec) host controller hardware.If your USB host controller supports USB 2.0, you will likely want toconfigure this Host Controller Driver.EHCI controllers are packaged with "companion" host controllers (OHCIor UHCI) to handle USB 1.1 devices connected to root hub ports. Portswill connect to EHCI if the device is high speed, otherwise theyconnect to a companion controller. If you configure EHCI, you shouldprobably configure the OHCI (for NEC and some other vendors) USB HostController Driver or UHCI (for Via motherboards) Host ControllerDriver too.You may want to read <file:Documentation/usb/ehci.txt>.To compile this driver as a module, choose M here: themodule will be called ehci-hcd.
這里使用的都是3.18.2 版本內(nèi)核的。所有與USB相關(guān)的代碼都在drivers/usb目錄下面。上面的Kconfig文件說的很清楚,ehci-hcd模塊支持的是USB2.0控制器的高速模式,它本身并不支持全速或低速模式,對連接上的USB1.1設(shè)備的支持,是通過ohci-hcd或uhci-hcd模塊。如果我們只配置了EHCI,就不能使用usb的鼠標(biāo)鍵盤。有時碰到usb鍵盤或鼠標(biāo)不能用的情況,很可能就是因為配置EHCI的同時沒有配置OHCI或UHCI。
config USB_OHCI_HCDtristate "OHCI HCD (USB 1.1) support"---help---The Open Host Controller Interface (OHCI) is a standard for accessingUSB 1.1 host controller hardware. It does more in hardware than Intel'sUHCI specification. If your USB host controller follows the OHCI spec,say Y. On most non-x86 systems, and on x86 hardware that's not using aUSB controller from Intel or VIA, this is appropriate. If your hostcontroller doesn't use PCI, this is probably appropriate. For a PCIbased system where you're not sure, the "lspci -v" entry will list theright "prog-if" for your USB controller(s): EHCI, OHCI, or UHCI.To compile this driver as a module, choose M here: themodule will be called ohci-hcd.
config USB_UHCI_HCDtristate "UHCI HCD (most Intel and VIA) support"depends on PCI || USB_UHCI_SUPPORT_NON_PCI_HC---help---The Universal Host Controller Interface is a standard by Intel foraccessing the USB hardware in the PC (which is also called the USBhost controller). If your USB host controller conforms to thisstandard, you may want to say Y, but see below. All recent boardswith Intel PCI chipsets (like intel 430TX, 440FX, 440LX, 440BX,i810, i820) conform to this standard. Also all VIA PCI chipsets(like VIA VP2, VP3, MVP3, Apollo Pro, Apollo Pro II or Apollo Pro133) and LEON/GRLIB SoCs with the GRUSBHC controller.If unsure, say Y.To compile this driver as a module, choose M here: themodule will be called uhci-hcd.
OHCI和UHCI雖然支持的都是1.1的控制器,但是支持的硬件范圍不一樣,如果你在編譯內(nèi)核,直接選上它們就是了。
USB既然能一路PK走過來,也算是一個挺能秀的角色了,不然也不會有那么多的擁護(hù)者。既然這里說的就是USB,也挑一些大家可能感興趣的幫它秀一下。USB為所有的USB外設(shè)都提供了單一的的標(biāo)準(zhǔn)的連接類型,這就簡化了外設(shè)的設(shè)計,也讓我們不用再去想哪個設(shè)備對應(yīng)哪個插槽的問題,就象種蘿卜,一個蘿卜一個坑,但是哪個蘿卜種到哪個坑里我們是不用想的吧。
USB支持熱插拔,其它的如SCSI設(shè)備等必須在關(guān)掉主機(jī)的情況下才能增加或移走外圍設(shè)備。所以說,USB的一生不僅僅是PK的一生,也是豐富多彩的一生,不用實行一夫一妻制,可以不用關(guān)機(jī)就能更換不同種類的外設(shè)。
USB在設(shè)備供電方面提供了靈活性。USB外設(shè)可以通過USB電纜供電,不然咱們的移動硬盤、ipod什么的也用不了了。
USB能夠支持從幾十k到幾十m的傳輸速率,來適應(yīng)不同種類的外設(shè),這點前面那張表說得很詳細(xì)了。它可以支持多個設(shè)備同時操作,也支持多功能的設(shè)備。多功能的設(shè)備當(dāng)然指的就是一個設(shè)備同時有多個功能,大白話,比如USB揚聲器。這通過在一個設(shè)備里包含多個接口來支持,一個接口支持一個功能,這是后話了。
USB可以支持多達(dá)127個設(shè)備,很多吧,不過比起皇帝的后宮佳麗三千來說還不是一個數(shù)量級的。
USB可以保證固定的帶寬,這個對視頻音頻設(shè)備是利好。
USB spec上還有很多可以秀的,就不多說了。
總結(jié)
以上是生活随笔為你收集整理的Linux那些事儿 之 戏说USB(2)漫漫辛酸路的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux那些事儿 之 戏说USB(1)
- 下一篇: 炸到中国边境口岸了,缅军或全面溃败!当年