真的有「USB通訊協定」嗎?

真的有「USB通訊協定」嗎?

根據維基百科, USB:

定義了總線中用於電腦和電子設備之間的連接、通訊和供電的電纜、連接器和通訊協議

但真的有「USB通訊協議“? 我的理解就是它:

  1. 將 USB 裝置連接到機器(例如 Ubuntu 或任何類型的 Linux)
  2. Linux 找到該裝置的裝置驅動程式(以某種方式 -獎金如果你知道的話!
  3. 該設備現在已連接到/dev/theDevice
  4. 用戶空間應用程式現在可以讀取/寫入,/dev/theDevice並且驅動程式處理底層設備/硬體的低階 IO

對我來說,這個流程中沒有任何地方出現「USB 通訊協定」。如果我的理解是正確的,USB只是PC和設備之間的電纜和電氣連接。

我這裡錯了嗎? USB 實際上是否實現了某種低階協定(強調了上述流程)?如果是這樣,它是什麼? 它如何在 30,000 英尺的視野中發揮作用?

答案1

是的,請參閱USB協定

據我了解,USB 規範定義了一組複雜的分層協定和設備設定檔。

例如,USB 裝置可以符合進階模板,如大容量儲存、鍵盤(或人機介面裝置等),並由通用裝置驅動程式管理。某些 USB 裝置可以在較低層級進行通信,以便作業系統低階 USB 支援可以識別需要特定於裝置的較高層級驅動程式。

答案2

問題:是否存在正在運行的低階 USB 通訊協定?

答:

是的,USB 規格包括USB協定它定義了總線在位元級別上的使用方式。這將是「低階」協議,它是高級協議(即大容量儲存、HID 等)的基礎。

有關 USB 協定如何運作的詳細信息,請參閱OSDev 維基有幫助。這是另一個有趣的描述使用序列圖來描述每個 USB 協定的各種資料事務。

附加問題:Linux 如何尋找並載入該裝置的裝置驅動程式?

獎金答:

'在 Linux 上,當使用支援 USB 的核心時,將透過硬體核心由於 USB 規範。在硬體方面,偵測由 USB 主機控制器完成。然後,在核心中,主機控制器驅動程式接管並將線路上的低階位元轉換為 USB 協定格式的資訊。然後,該資訊將被填入核心中的 USB 核心驅動程式中。

我從這個優秀的文章開源,其中對您在 Linux 環境中的問題有更詳細和清晰的說明。

答案3

與幾乎所有其他類型的通訊介面一樣,USB 也是作為一種協定實現的堆疊。此堆疊中所有或多種類型裝置共用的等級由 USB 標準本身定義,這既實現了相容性,也防止每個裝置進行冗餘協定設計。此外,協定的每一層都會抽象化下一層不需要擔心的細節。因此,當您實際編寫裝置特定層時,您只需使用通用的「傳送」和「接收」函數即可將資料從端點 A 獲取到端點 B 作為裝置設計者,您不必關心這是怎麼發生的。此外,協定棧中的較低層級可以更改實現,只要它們向其上方的層公開公共介面即可。這樣,當協定棧的一部分發生變化時,協定棧的其餘部分不一定需要改變。理想情況下,堆疊高層的協定甚至不必完全關心哪個協定正在堆疊的某個較低層級使用。一般來說,在傳送訊息時,堆疊中的每個連續層都會將下一個最高層產生的訊息封裝在自己的有效負載欄位中。當收到訊息時,每一層都會剝離與該層相關的部分,並將其有效負載轉發到堆疊上的下一個適當的層。不僅 USB 如此,幾乎所有通訊匯流排都是如此。例如,TCP/IP/乙太網路堆疊可能是其中最常使用的。給定層通常負責的任務在模型中描述,例如開放系統互連模型

在 USB 中,有一個定義電壓狀態/時序等的實體層協定。以及如何解釋它們。該協定顯然需要成為 USB 標準本身的一部分,而不是特定於給定裝置(特別是因為主機無法知道哪種裝置將插入給定 USB 連接埠。)

接下來是總線管理協議,用於描述誰可以在何時在總線上通話。這在 OSI 模型中稱為媒體存取層。在USB中,這一層幾乎可以概括為“設備可以在主機告訴它這樣做時進行傳輸”,因此USB中的這一層沒有特別複雜的協定。

接下來,有一個標準協議描述一個資料包以及如何將其從發送者路由到接收者。該層還需要成為 USB 標準本身的一部分,以便在主機實際知道特定類型的設備之前可以進行初始通信,以發現已連接的設備類型。除了每個裝置在這一層都有一個特定的 ID 之外,USB 中還存在端點 ID 的概念。這允許任何給定設備擁有多個USB 端點,這些端點由標準USB 堆疊進行多路復用和多路分解,與標準TCP/IP 堆疊對套接字進行多路復用和多路分解的方式非常相似。應用程式可以將每個端點視為單獨的資料流。

最後,還有為設備本身定義的協定。請注意,實際上有一些常見的預先設計的設備作為 USB 標準的一部分包含在常見用例中,例如大容量存儲設備、滑鼠、鍵盤等,這樣每個設備製造商就不必重新發明這些設備。然而,更複雜的設備可以在這一層自由設計自己的自訂協定。給定傳輸的該層的輸出會作為上一層資料包的有效負載傳遞。請注意,對於足夠複雜的設備,協定的設備特定部分本身可以分為多個獨立的層,但較低層不必知道或關心這一點。他們需要知道的是,他們需要將一組給定的位元組從主機傳遞到特定的設備端點或從特定的設備端點傳遞到主機。同樣,在層之間擁有標準介面可以實現關注點分離,因此一層不必關心另一層的內部工作,而只需關心它應該傳遞到或期望從緊鄰的層或層接收的特定資料。中位於其下方。

答案4

也許部分答案就在“這個短語的定義中”通訊協議「。訪問與您相同的來源(維基百科),您會找到有用的信息,例如:

  • 為了進行通信,必須就協議達成協議。
  • 通訊系統使用明確定義的格式(協定)來交換訊息。
  • 協定必須定義通訊的語法、語意和同步。
  • 因此,協議可以作為硬體、軟體或兩者來實現。

一個簡單的思考方式是協議是預先定義並商定的做某事的方式,在這種情況下某物是如何將資料移入和移出 USB 連接裝置的。硬體方面每個別針具有預先定義的電壓位準和使用協議,每種類型的設備都有一個預先定義的使用協議每個引腳,以及每個數據包具有預先定義的語法和資料格式。還有一個通訊握手納入協議。總的來說,這些是使用 USB 裝置的標準集合的所有部分,也稱為USB協定,由成員決定(即設計、提議、辯論、修訂並最終同意)USB 實作者論壇有限公司

所以是的,有USB 協議,或者更正確地說一些預先定義和商定的 USB 協議s針對不同的 USB 用途。

相關內容