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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

Linux那些事儿 之 戏说USB(4)最终奥义

發(fā)布時間:2023/11/27 生活经验 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux那些事儿 之 戏说USB(4)最终奥义 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.


一個完整的USB系統(tǒng)應(yīng)該實現(xiàn)上面圖里的各個部分,圖里主要顯示了四個層次,USB物理設(shè)備(USB Physical Device)、客戶軟件(Client SW)、USB系統(tǒng)軟件(USB System SW)以及USB Host Controller。Host Controller已經(jīng)說過了,系統(tǒng)軟件就是操作系統(tǒng)里用來支持USB的部分,像咱們的usb core,還有各種設(shè)備驅(qū)動等等,客戶軟件么,就是上層應(yīng)用了,只有設(shè)備和驅(qū)動程序,我們?nèi)匀皇裁炊甲霾涣?#xff0c;現(xiàn)實生活中一個很淺顯的道理就是只靠攝像頭和驅(qū)動是不可能和mm視頻的。

真的是這樣么?多少年以前,作為一個普通人,我會堅定的說是。只是現(xiàn)在,作為一個讀了協(xié)議的普通人,我要說并不完全是這樣。上面的系統(tǒng)軟件,只表示了系統(tǒng)里支持USB的部分,也就是系統(tǒng)相關(guān)設(shè)備無關(guān)的部分,相對于咱們的linux來說,就是usb core,并不包括所謂的各種設(shè)備驅(qū)動。而客戶軟件則指設(shè)備相關(guān),也就是對應(yīng)于特定設(shè)備的部分,你的USB鍵盤驅(qū)動、觸摸屏驅(qū)動什么的都在這兒。這里的名字太迷惑人了,一直覺得寫驅(qū)動是系統(tǒng)級的編程,原來搞協(xié)議的這些同志覺得不是這么回事,我羞愧的低下了無知的腦袋。

為什么會對這幾個概念這么較真兒那,不是因為它們有多可愛,只是它們在協(xié)議里無處不在。主機這邊就分這三層,Host Controller看似在最低層,卻掌控著整個USB的通信,你的USB設(shè)備要想發(fā)揮作用,首先得獲得它的批準。

USB物理設(shè)備這邊看著好像也分了三層,其實我們可以把它們看成一樣的東東,只是為了對應(yīng)了主機這邊的不同層次,Host Controller看到的是一個個hub還有hub上的USB device,而在系統(tǒng)軟件的眼里沒那么多道道兒,hub還有各種設(shè)備什么的都是一個個的邏輯設(shè)備,客戶軟件看到的是設(shè)備提供的功能。接下來還會有說到。站在不同的高度看到不同的風景,不然為什么買房子時高一層要加多少錢那。

已經(jīng)被計算機網(wǎng)絡(luò)中的七層協(xié)議洗過腦的我們應(yīng)該很容易的就看出,真實的數(shù)據(jù)流只發(fā)生在Host Controller和設(shè)備的Bus Interface之間,其它的都是邏輯上的,也就說是虛的。

各種USB設(shè)備提供的功能是不同的,但是面向主機的Bus Interface卻是一致的,主機也不是神仙,掐指一算就可以知道哪個是哪個,所以,那些設(shè)備本身還必須要提供用來確認自己身份的信息,這些信息里有些是共有的,有些是個別設(shè)備特有的。

各種設(shè)備和主機是怎么連接在一起的那?前面的那顆樹已經(jīng)描繪的比較形象了,不過那棵樹里的compound device被有意的飄過了。那么,compound 設(shè)備又是什么樣的設(shè)備?其實,在USB的世界里,不僅僅有compound device,還有composite device,簡單的中文名字已經(jīng)無法形象的表達它們的區(qū)別,就還是使用它們的英文原名了。compound device是那些將hub和連在hub上的設(shè)備封裝在一起所組成的設(shè)備,而composite device是包含彼此獨立的多個接口的設(shè)備。從主機的角度看,一個compound device和單獨的一個hub然后連接了多個USB設(shè)備是一樣的,它里面包含的hub和各個設(shè)備都會有自己獨立的地址,而一個composite device里不管具有多少接口,它都只有一個地址。


上面都是站在host controller的層次上,說的是實實在在的物理拓撲,對于系統(tǒng)軟件來說,沒有這么復雜,所有的hub和設(shè)備都是一個個的邏輯設(shè)備。站的越高,看的越遠,快樂如此簡單。



一個USB邏輯設(shè)備就是一系列端點(endpoint)的集合,它與主機之間的通信發(fā)生在主機上的一個緩沖區(qū)和設(shè)備上的一個端點之間,通過管道來傳輸數(shù)據(jù)。意思就是管道的一端是主機上的一個緩沖區(qū),一端是設(shè)備上的端點。



圖里的Interface是怎么回事?這里先簡單說說吧,反正代碼里會不停的遇到再遇到。USB端點被捆綁為接口(Interface),一個接口代表一個基本功能。有的設(shè)備具有多個接口,像USB揚聲器就包括一個鍵盤接口和一個音頻流接口。在內(nèi)核里一個接口要對應(yīng)一個驅(qū)動程序,USB揚聲器在linux里就需要兩個不同的驅(qū)動程序。到目前為止,可以這么說,一個設(shè)備可以包括多個接口,一個接口可以沒有或具有一個以上的端點,當然以后我們會發(fā)現(xiàn)并不僅僅止于此。不過先說這么多吧,省得說得慷慨激昂,看的昏昏欲睡。

現(xiàn)在已經(jīng)說了USB的歷史發(fā)展體系結(jié)構(gòu)等比較基本的東東,也就是協(xié)議的前幾章,更多的東東還是下面和代碼一塊說吧。為了紀念這個歷史性的時刻,學學電影里的酷哥警察說句:好戲開始了。

總結(jié)

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

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