日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

Linux那些事儿 之 戏说USB(3)我是一棵树

發(fā)布時(shí)間:2023/11/27 生活经验 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux那些事儿 之 戏说USB(3)我是一棵树 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
從拓?fù)渖蟻砜?#xff0c;USB子系統(tǒng)并不以總線的方式來部署,它是一顆由幾個(gè)點(diǎn)對(duì)點(diǎn)的連接構(gòu)成的樹。




它主要包括了USB連接、USB host controller和USB device三個(gè)部分。而USB device還包括了hub和功能設(shè)備等。下面還是逐個(gè)說說吧。

什么是USB controller?在一個(gè)USB系統(tǒng)中只能有一個(gè)host,其實(shí)說白了就是咱們的主機(jī),而USB和主機(jī)的接口就是host controller,你的主機(jī)總不可能只能有一個(gè)USB host controller吧,所以說一個(gè)主機(jī)可以支持多個(gè)host controller,比如分別屬于不同廠商的。那么USB host controller本身是做什么的?這個(gè)問題復(fù)旦人甲兄弟說的太精彩了,我還是直接拿來吧。controller,控制器,顧名思義,用于控制,控制什么,控制所有的usb設(shè)備的通信。通常計(jì)算機(jī)的cpu并不是直接和usb設(shè)備打交道,而是和控制器打交道,他要對(duì)設(shè)備做什么,他會(huì)告訴控制器,而不是直接把指令發(fā)給設(shè)備,然后控制器再去負(fù)責(zé)處理這件事情,他會(huì)去指揮設(shè)備執(zhí)行命令,而cpu就不用管剩下的事情,他還是該干嘛干嘛去,控制器替他去完成剩下的事情,事情辦完了再通知cpu。否則讓cpu去盯著每一個(gè)設(shè)備做每一件事情,那是不現(xiàn)實(shí)的,那就好比讓一個(gè)學(xué)院的院長去盯著我們每一個(gè)本科生上課,去管理我們的出勤,只能說,不現(xiàn)實(shí)。所以我們就被分成了幾個(gè)系,通常院長有什么指示直接跟各系領(lǐng)導(dǎo)說就可以了,而系主任就會(huì)去安排下面的人去執(zhí)行具體的任務(wù),完了之后他們就會(huì)像院長匯報(bào)。

那么hub是什么?還是拿復(fù)旦人甲現(xiàn)成的答案吧,不能怪我不努力,只是復(fù)旦人甲說的太精彩了。在大學(xué)里,有的宿舍里網(wǎng)口有限,但是我們這一代人上大學(xué)基本上是每人一臺(tái)電腦,所以網(wǎng)口不夠,于是有人會(huì)使用hub,讓多個(gè)人共用一個(gè)網(wǎng)口,這是以太網(wǎng)上的hub,而usb的世界里同樣有hub,其實(shí)原理是一樣的,任何支持usb的電腦不會(huì)說只允許你只能一個(gè)時(shí)刻使用一個(gè)usb設(shè)備,比如你插入了u盤,你同樣還可以插入usb鍵盤,還可以再插一個(gè)usb鼠標(biāo),因?yàn)槟銜?huì)發(fā)現(xiàn)你的電腦里并不只是一個(gè)usb接口。這些口實(shí)際上就是所謂的hub口。而現(xiàn)實(shí)中經(jīng)常是讓一個(gè)usb控制器和一個(gè)hub綁定在一起,專業(yè)一點(diǎn)說叫集成,而這個(gè)hub也被稱作root hub,換言之,和usb控制器綁定在一起的hub就是系統(tǒng)中最根本的hub,其它的hub可以連接到她這里,然后可以延伸出去,外接別的設(shè)備,當(dāng)然也可以不用別的hub,讓usb設(shè)備直接接到root hub上。

而USB連接指的就是連接device和host(或hub)的四線電纜。電纜中包括的VBUS(電源線)、GND(地線)還有兩根信號(hào)線。USB系統(tǒng)就是通過VBUS和GND向設(shè)備提供電源的。主機(jī)對(duì)連接的USB設(shè)備提供電源供其使用,而每個(gè)USB設(shè)備也能夠有自己的電源。


咱們的USB大樹要想茁長成長也離不開USB協(xié)議。USB總線是一個(gè)單主方式的實(shí)現(xiàn),是一種輪詢方式的總線。2.0協(xié)議規(guī)定所有的數(shù)據(jù)傳輸都必須由主機(jī)發(fā)起,host controller初始化所有的數(shù)據(jù)傳輸,各種設(shè)備緊緊圍繞在主機(jī)周圍。

USB通信最基本的形式是通過USB設(shè)備里一個(gè)叫 endpoint 的東東,而主機(jī)和endpoint之間的數(shù)據(jù)傳輸是通過 pipe 。有關(guān) endpoint 和 pipe ,復(fù)旦人甲同樣也有精辟的見解:endpoint就是通信的發(fā)送或者接收點(diǎn),你要發(fā)送數(shù)據(jù),那你只要把數(shù)據(jù)發(fā)送到正確的端點(diǎn)那里就可以了。之所以U盤有兩個(gè) bulk 端點(diǎn),是因?yàn)槎它c(diǎn)也是有方向的,一個(gè)叫做 Bulk? in,一個(gè)叫做 Bulk? out,從usb主機(jī)到設(shè)備稱為out,從設(shè)備到主機(jī)稱為in。而管道,實(shí)際上只是為了讓我們能夠找到端點(diǎn),就相當(dāng)于我們?nèi)粘Uf的郵編地址,比如一個(gè)國家,為了通信,我們必須給各個(gè)地方取名,完了給各條大大小小的路取名,比如你要揭發(fā)你們那里的官員腐敗,你要去上訪,你從某偏僻的小縣城出發(fā),要到北京來上訪,那你的這個(gè)端點(diǎn)(endpoint)就是北京,而你得知道你來北京的路線,那這個(gè)從你們縣城到北京的路線就算一條管道。有人好奇的問了,管道應(yīng)該有兩端吧,一個(gè)端點(diǎn)是北京,那另一個(gè)端點(diǎn)呢?答案是,這條管道有些特殊,就比如上訪,我們只需要知道一端是北京,而另一端是哪里無所謂,因?yàn)椴还苣阍谀睦锬愣嫉玫奖本﹣砩显L。沒聽說過你在山西你可以上訪,你要在寧夏還不能上訪了,沒這事對(duì)吧。嚴(yán)格來說,管道的另一端應(yīng)該是usb主機(jī),即前面說的那個(gè)host,usb協(xié)議里邊也是這么說的,協(xié)議里邊說pipes代表著一種能力,怎樣一種能力呢,在主機(jī)和設(shè)備上的端點(diǎn)之間移動(dòng)數(shù)據(jù),聽上去挺玄的。

端點(diǎn)不但是有方向的,而且這個(gè)方向還是確定的,或者in,或者out,沒有又是in又是out的。你到北京就叫上訪,北京的下來就叫慰問。有沒有特殊的呢,看你怎么去理解0號(hào)端點(diǎn)了,協(xié)議里規(guī)定了,所有的USB設(shè)備必須具有端點(diǎn)0,它可以作為in端點(diǎn),也可以作為out端點(diǎn),USB系統(tǒng)軟件利用它來實(shí)現(xiàn)缺省的控制管道,從而控制設(shè)備。端點(diǎn)也是限量供應(yīng)的,不是想有多少就有多少的,除了端點(diǎn)0,低速設(shè)備最多只能擁有2個(gè)端點(diǎn),高速設(shè)備也最多只能擁有15個(gè)in端點(diǎn)和15個(gè)out端點(diǎn)。這些端點(diǎn)在設(shè)備內(nèi)部都有唯一的端點(diǎn)號(hào),這個(gè)端點(diǎn)號(hào)是在設(shè)備設(shè)計(jì)時(shí)就已經(jīng)指定的。

為什么端點(diǎn)0就非要那么的個(gè)性那?這還是有內(nèi)在原因的。管道的通信方式其實(shí)有兩種,一種是stream的,一種是message的,message管道要求從它那兒過的數(shù)據(jù)必須具有一定的格式,不是隨便傳的,因?yàn)樗饕褪怯糜谥鳈C(jī)向設(shè)備請(qǐng)求信息的,必須得讓設(shè)備明白請(qǐng)求的是什么。而stream管道就沒這么苛刻,要隨和多了,它對(duì)數(shù)據(jù)沒有特殊的要求。協(xié)議里說,message管道必須對(duì)應(yīng)兩個(gè)相同號(hào)碼的端點(diǎn),一個(gè)用來in,一個(gè)用來out,咱們的缺省管道就是message管道,當(dāng)然,與缺省管道對(duì)應(yīng)的端點(diǎn)0就必須是兩個(gè)具有同樣端點(diǎn)號(hào)0的端點(diǎn)。

USB endpoint有四種類型,分別對(duì)應(yīng)了四種不同的數(shù)據(jù)傳輸方式。它們是控制傳輸(Control Transfers),中斷傳輸(Interrupt Data Transfers),批量傳輸(Bulk Data Transfers),等時(shí)傳輸(Isochronous Data Transfers)??刂苽鬏斢脕砜刂茖?duì)USB設(shè)備不同部分的訪問,通常用于配置設(shè)備,獲取設(shè)備信息,發(fā)送命令到設(shè)備,或者獲取設(shè)備的狀態(tài)報(bào)告??傊褪怯脕韨魉涂刂菩畔⒌?#xff0c;每個(gè)USB設(shè)備都會(huì)有一個(gè)endpoint 0的控制端點(diǎn),內(nèi)核里的USB core使用它在設(shè)備插入時(shí)進(jìn)行設(shè)備的配置。

中斷傳輸用來以一個(gè)固定的速率傳送少量的數(shù)據(jù),USB鍵盤和USB鼠標(biāo)使用的就是這種方式,USB的觸摸屏也是,傳輸?shù)臄?shù)據(jù)包含了坐標(biāo)信息。

批量傳輸用來傳輸大量的數(shù)據(jù),確保沒有數(shù)據(jù)丟失,并不保證在特定的時(shí)間內(nèi)完成。U盤使用的就是批量傳輸,咱們用它備份數(shù)據(jù)時(shí)需要確保數(shù)據(jù)不能丟,而且也不能指望它能在一個(gè)固定的比較快的時(shí)間內(nèi)拷貝完。

等時(shí)傳輸同樣用來傳輸大量的數(shù)據(jù),但并不保證數(shù)據(jù)是否到達(dá),以穩(wěn)定的速率發(fā)送和接收實(shí)時(shí)的信息,對(duì)傳送延遲非常敏感。顯然是用于音頻和視頻一類的設(shè)備,這類設(shè)備期望能夠有個(gè)比較穩(wěn)定的數(shù)據(jù)流,比如你在網(wǎng)上QQ視頻聊天,肯定希望每分鐘傳輸?shù)膱D像/聲音速率是比較穩(wěn)定的,不能說這一分鐘對(duì)方看到你在向她向你深情表白,可是下一分鐘卻看見畫面停滯在那里,只能看到你那傻樣一動(dòng)不動(dòng),你說這不浪費(fèi)感情嘛。

總結(jié)

以上是生活随笔為你收集整理的Linux那些事儿 之 戏说USB(3)我是一棵树的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。