SylixOS USB虛擬網卡框架

1. USB子系統簡介

1.1      USB簡介

     USB,是英文Universal Serial Bus(通用串行總線)的縮寫,是一個外部總線標準,用於規範電腦與外部設備的連接和通訊。是應用在PC領域的接口技術。USB接口支持設備的即插即用和熱插拔功能。USB是在1994年底由英特爾康柏、IBM、Microsoft等多家公司聯合提出的。

1.2      USB虛擬網卡框架

1.2.1   普通網卡與USB網卡框架對比

    如圖 1‑1所示,普通網卡驅動與USB網卡驅動相比最大的區別是,USB網卡把普通的物理硬件換成了USB的物理硬件。

圖 1‑1 USB網卡與普通網卡對比圖

1.2.2   USB虛擬網卡框架

    如圖 1‑2所示,在SylixOS中,USB網卡框架中網卡驅動可大致分爲4層分別爲USB網卡驅動層、USB協議層、Gadget層和UDC層。

圖 1‑2 SylixOS USB虛擬網卡框架

    USB網卡驅動層:服務對象是網絡協議棧(TCP/IP或者LWIP)用來接收或發送網絡報文。

    USB協議層:從USB網卡驅動層接收網絡報文加工生成對應的USB報文或者,從UDC層接收USB報文轉換成網絡報文。

    Gadget層:完成的工作是綁定UDC層和USB協議層,註冊綁定相關的回調函數,此層功能類似於Linux下的Platform功能。是爲了去除耦合便於移植和代碼複用。

UDC層:配置USB寄存器來實現硬件傳輸功能。

2. SylixOS虛擬網卡數據流

2.1      數據流整體框架

    USB數據在傳輸的過程中會經過如圖 2‑1所示中的相關代碼層。數據每經過一個代碼層,代碼層會對數據進行加工處理。

圖 2‑1 USB虛擬網卡數據分層

2.2      數據流實例

    如圖 2‑2所示,舉一個數據傳輸的實例。上層應用要傳輸數據“123”(數據“123”稱爲原始數據),首先需要經過協議棧層。協議棧會把原始數據封裝成網絡報文繼續向下傳輸。需要注意如果是普通網卡驅動最終傳輸的就是網絡報文,但USB仍然需要對網絡報文再次封裝。網絡報文經過USB協議層時,會根據安裝好的驅動選擇對應的USB驅動協議進行報文封裝,把網絡報文轉換成USB報文。最終在USB上傳輸的是USB報文。發送的過程是對原始數據封裝組包的過程,同理接收數據是對接收到的數據拆包解析的過程。有了這套機制,就可以保證數據可以正確傳輸。

圖 2‑2 數據流實例

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