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层。spa

图 1‑2 SylixOS USB虚拟网卡框架orm

    USB网卡驱动层:服务对象是网络协议栈(TCP/IP或者LWIP)用来接收或发送网络报文。对象

    USB协议层:从USB网卡驱动层接收网络报文加工生成对应的USB报文或者,从UDC层接收USB报文转换成网络报文。接口

    Gadget层:完成的工做是绑定UDC层和USB协议层,注册绑定相关的回调函数,此层功能相似于Linux下的Platform功能。是为了去除耦合便于移植和代码复用。get

UDC层:配置USB寄存器来实现硬件传输功能。回调函数

2. SylixOS虚拟网卡数据流

2.1      数据流总体框架

    USB数据在传输的过程当中会通过如图 2‑1所示中的相关代码层。数据每通过一个代码层,代码层会对数据进行加工处理。it

图 2‑1 USB虚拟网卡数据分层

2.2      数据流实例

    如图 2‑2所示,举一个数据传输的实例。上层应用要传输数据“123”(数据“123”称为原始数据),首先须要通过协议栈层。协议栈会把原始数据封装成网络报文继续向下传输。须要注意若是是普通网卡驱动最终传输的就是网络报文,但USB仍然须要对网络报文再次封装。网络报文通过USB协议层时,会根据安装好的驱动选择对应的USB驱动协议进行报文封装,把网络报文转换成USB报文。最终在USB上传输的是USB报文。发送的过程是对原始数据封装组包的过程,同理接收数据是对接收到的数据拆包解析的过程。有了这套机制,就能够保证数据能够正确传输。

图 2‑2 数据流实例

相关文章
相关标签/搜索