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