2018-06-09 08:53:17| 來(lái)源:admin| 瀏覽量:846
作者:北極
鏈接:https://www.zhihu.com/question/37949786/answer/74243169
來(lái)源:知乎
著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。
這并非USB接口或者USB傳輸協(xié)議的問(wèn)題,是USB HID規(guī)范(鍵盤(pán)鼠標(biāo)規(guī)范都在這個(gè)范圍內(nèi))的限制,廠(chǎng)商們只要自己定義一套規(guī)范,是有辦法突破這個(gè)限制的,只不過(guò)適用性差一點(diǎn),需要驅(qū)動(dòng)而已?;蛘邚S(chǎng)商們推動(dòng)USB-IF去更新USB HID規(guī)范即可,這都不是大問(wèn)題。這個(gè)問(wèn)題也不能說(shuō)USB鍵盤(pán)就么有PS/2鍵盤(pán)好,只能說(shuō)廠(chǎng)商比較懶而已。
線(xiàn)纜方面,USB2.0是4根,3.0是9根(但通過(guò)改造可以只用5根+外殼接地)。
USB的協(xié)議本身的缺點(diǎn)有:
1. 協(xié)議是非對(duì)等協(xié)議,必須有主機(jī)支持,無(wú)法搭建星形結(jié)構(gòu)或者總線(xiàn)式結(jié)構(gòu),整個(gè)設(shè)備樹(shù)必須有個(gè)根節(jié)點(diǎn),設(shè)備與設(shè)備之間無(wú)法直接通信,相對(duì)而言,以太網(wǎng)和串口都是對(duì)等的通信系統(tǒng)。
2. Host(主機(jī))端協(xié)議棧過(guò)于龐大復(fù)雜,很難小型化。一個(gè)最小的USB Host驅(qū)動(dòng)需要幾千行代碼實(shí)現(xiàn),如果再配置設(shè)備驅(qū)動(dòng),代碼可能上萬(wàn)行(以C語(yǔ)言計(jì)),而串口協(xié)議棧則很簡(jiǎn)單,TCP/IP協(xié)議棧雖然復(fù)雜,但鏈路層不需要協(xié)商。USB設(shè)備通信的前提是使用USBD建立設(shè)備鏈接,這個(gè)過(guò)程復(fù)雜而麻煩,網(wǎng)絡(luò)和串口都可以無(wú)鏈接的方式直接發(fā)包。
3. 控制器驅(qū)動(dòng)難寫(xiě)。寫(xiě)過(guò)EHCI驅(qū)動(dòng)的都知道這東西很麻煩,但網(wǎng)卡驅(qū)動(dòng)往往非常簡(jiǎn)單,對(duì)比之下簡(jiǎn)單的網(wǎng)卡驅(qū)動(dòng)可能在千行左右,串口驅(qū)動(dòng)就更簡(jiǎn)單了。這一條以及上一條就限制了USB在低配置的設(shè)備上使用(比如內(nèi)存只有32K的單片機(jī),要跑USB很困難)
4. OTG協(xié)議復(fù)雜,OTG目標(biāo)是實(shí)現(xiàn)USB主機(jī)和設(shè)備之間的靈活切換,但代價(jià)是更復(fù)雜的驅(qū)動(dòng)。
5. 通信距離過(guò)短。
所以,USB適用于那種有一個(gè)功能強(qiáng)大的主機(jī)帶動(dòng)多個(gè)設(shè)備場(chǎng)景,但不太適用于對(duì)等通信或者小設(shè)備之間的通信。
至于USB本身支撐的功能(比如支持哪些設(shè)備),那是上層協(xié)議的問(wèn)題,理論上應(yīng)用層走什么協(xié)議都是可以的,是否支持完全看廠(chǎng)商的態(tài)度。