USB 虛擬串口簡介

1. USB虛擬串口簡介

USB虛擬串口屬於USB通信設備類。在物理層通過USB總線,採用虛擬串口的方式爲主機提供一個物理串口。在系統內部,USB控制器提供了一個批量傳輸IN端點和一個批量傳輸的OUT端點,用於數據的接收和發送,模擬串口的RX和TX線。另外USB控制器還提供中斷IN端點,發送當前串口的狀態,實現對串口傳輸的控制。串口設備的數據,由系統的串口採集,在芯片內完成USB包的封裝,通過USB總線上傳至主機,再由相應的串口應用程序進行處理。對用戶來說,看到的是基於串口的數據採集和傳輸,而實際上實現的是基於USB協議包的數據傳輸。

1.1      USB CDC協議簡介

USB的CDC類是USB通信設備類(Communication Device Class)的簡稱。CDC類是USB組織定義的一類專門給各種通信設備(電信通信設備和中速網絡通信設備)使用的USB子類。根據CDC類所針對通信設備的不同,CDC類又被分成以下不同的模型:USB傳統純電話業務(POTS)模型,USB ISDN模型和USB網絡模型,其中USB傳統純電話業務模型又可分爲直線控制模型(Direct Line Control Model)、抽象模型、電話模型,如圖 1.1所示。本文討論的虛擬串口就屬於USB 傳統純電話業務模型下的抽象控制模型。

圖 1.1 CDC分類

1.2      Linux下USB虛擬串口框架

如圖 1.2所示,Linux實現了gadget.h定義的統一接口,然後上層的各種gadget driver(如serial.c等)調用這一套統一的接口可以去實現不同類型的功能,如USB串口、U盤、USB以太網等等。

圖 1.2 USB虛擬串口框架

在Linux中通過USB虛擬的其他設備都需要經過Gadget層的綁定,最終與虛擬的相關設備進行綁定。有關Gadget的綁定流程在之前的文檔中已做過詳細介紹,在此不做過多闡述。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章