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 数据流实例

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