• USB CDC类


    USB CDC类说明

    因为近期的一个项目用到了USB的CDC类,留个记录

    什么是USB CDC类

    USB的CDC类是USB通信设备类 (Communication Device Class)的简称。CDC类是USB组织定义的一类专门给各种通信设备(电信通信设备和中速网络通信设备)使用的USB子类。

    CDC规范是为满足电信服务(传统上终止模拟或数字电话线的设备)和中速网络服务(“始终连接”LAN/WAN媒体类型)的需求而制定的,是移动电话、模拟/ADSL/电缆调制解调器、模拟/数字电话、无线终端、以太网适配器以及Legacy和其他网络设备的理想选择。

    CDC USB Driver支持以下子类:ECM、NCM、ACM、OBEX、设备管理。

    CDC USB Class Driver支持主机端与CDC USB外设的通信,CDC USB Function Driver提供设备端对CDC外设所需的USB CDC实现。

    背景

    USB (Universal Serial Bus)提供可扩展、可热插拔的 Plug and Play 串口接口,确保与存储设备、键盘、操纵杆、打印机、扫描仪、调制解调器和数码相机等外围设备进行标准、低成本的连接。

    USB Class Driver是一种逻辑设备驱动程序(LDD),它控制提供通用功能的USB设备,并按照特定的设备类实现。

    USB Function Driver USB功能驱动程序是在设备内实现的驱动程序,用于处理标准或自定义USB设备功能的设备特定功能。这个驱动程序提供了对应的USB类驱动程序。

    CDC USB (USBnet) Class/Function Driver是一个USB类/函数驱动程序,支持通信设备的USB类定义,以及无线移动通信设备的CDC子类。

    USB CDC Class Driver和USB CDC Function Driver分别是全功能的USB通信类/设备驱动程序。DC类驱动程序是USB主机栈的一部分,它为不支持USB的嵌入式系统提供了一个完整的USB主机通信解决方案。CDC功能驱动程序是USB设备栈的一部分,它使软件和设备制造商能够将标准USB设备/功能连接到他们的嵌入式设备中。

    USB CDC ACM(抽象控制模型)

    允许任何通信设备提供串行通信接口(例如发送和接收AT命令的调制解调器设备)。

    CDC ACM驱动实现以USB设备驱动和tty设备驱动为基础,可将USB设备驱动的实现看作tty驱动和硬件之间数据流转换的桥梁。也即,整个USB CDC协议的实现均体现在USB部分,USB设备的描述符定义,CDC虚拟串口的设定,线路状态设置与读取,串口数据的发送与读取均遵循CDC协议规范。

    内核配置

    进入到直接下载的kernel目录下,运行命令make menuconfig
    host端

    Symbol: USB_ACM [=n]                                                                                                                                       │
      │ Type  : tristate                                                                                                                                           │
      │ Prompt: USB Modem (CDC ACM) support                                                                                                                        │
      │   Location:                                                                                                                                                │
      │     -> Device Drivers                                                                                                                                      │
      │ (3)   -> USB support (USB_SUPPORT [=y]) 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    device端

    Symbol: USB_CONFIGFS_ACM [=n]                                                                                                                              │
      │ Type  : boolean                                                                                                                                            │
      │ Prompt: Abstract Control Model (CDC ACM)                                                                                                                   │
      │   Location:                                                                                                                                                │
      │     -> Device Drivers                                                                                                                                      │
      │       -> USB support (USB_SUPPORT [=y])                                                                                                                    │
      │         -> USB Gadget Support (USB_GADGET [=y])                                                                                                            │
      │ (4)       -> USB Gadget functions configurable through configfs (USB_CONFIGFS [=n]) 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    USB CDC ACM驱动支持

    多个USB CDC ACM设备在单独的物理USB设备上。
    具有CDC ACM多种功能的复合USB设备。
    两种方式之一的枚举:

    • 虚拟COM口(虚拟串口)

    • 虚拟调制解调器设备。

    同步I/O和重叠I/O
    串行事件(如TX空,RX准备,RLSD, RING)
    封装命令。
    串口配置(如波特率、流量控制)

    USB CDC NCM(控制网络模型)

    NCM(网络控制模型)协议用于在设备和主机之间交换高速以太网框架数据。 符合CDC NCM的设备作为虚拟网卡向主机操作系统公开。 为网卡分配MAC地址和IP地址。

    CDC NCM设备的一般使用情况是支持3.5G/4G网络的无线网络适配器,如HSPA+和LTE。

    内核配置

    进入到直接下载的kernel目录下,运行命令make menuconfig
    host端

    Symbol: USB_NET_CDC_NCM [=m]                                                                                                                               │
      │ Type  : tristate                                                                                                                                           │
      │ Prompt: CDC NCM support                                                                                                                                    │
      │   Location:                                                                                                                                                │
      │     -> Device Drivers                                                                                                                                      │
      │       -> Network device support (NETDEVICES [=y])                                                                                                          │
      │         -> USB Network Adapters (USB_NET_DRIVERS [=y])                                                                                                     │
      │ (4)       -> Multi-purpose USB Networking Framework (USB_USBNET [=y])
     
      │ Symbol: USB_NET_HUAWEI_CDC_NCM [=m]                                                                                                                        │
      │ Type  : tristate                                                                                                                                           │
      │ Prompt: Huawei NCM embedded AT channel support                                                                                                             │
      │   Location:                                                                                                                                                │
      │     -> Device Drivers                                                                                                                                      │
      │       -> Network device support (NETDEVICES [=y])                                                                                                          │
      │         -> USB Network Adapters (USB_NET_DRIVERS [=y])                                                                                                     │
      │ (5)       -> Multi-purpose USB Networking Framework (USB_USBNET [=y])                    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    device端

    Symbol: USB_CONFIGFS_NCM [=n]                                                                                                                              │
      │ Type  : boolean                                                                                                                                            │
      │ Prompt: Network Control Model (CDC NCM)                                                                                                                    │
      │   Location:                                                                                                                                                │
      │     -> Device Drivers                                                                                                                                      │
      │       -> USB support (USB_SUPPORT [=y])                                                                                                                    │
      │         -> USB Gadget Support (USB_GADGET [=y])                                                                                                            │
      │ (1)       -> USB Gadget functions configurable through configfs (USB_CONFIGFS [=n])
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    USB CDC NCM驱动支持

    多个USB CDC NCM设备在单独的物理USB设备上
    设备管理控制请求
    具有多种CDC NCM功能的复合USB设备
    获取/设置NDIS对象标识符(OID)
    NDIS 5.0/5.1/6.0和NDIS 6.2
    支持高速4G LTE网络

    USB CDC EEM(以太网仿真模型)

    EEM(以太网仿真模型)是一个在USB总线上廉价和高效传输以太网帧的规范。

    EEM是USB CDC规范的一部分,但与ECM不同的是,EEM规范缺乏通过USB扩展以太网接口的控制请求。 相反,EEM利用USB带宽在设备和主机之间移动以太网数据包(虽然ECM只是作为一个通道,通过USB总线将以太网数据包传输到设备,然后将它们输出到网络,EEM可以将几个以太网帧封装到一个USB数据包,从而利用USB带宽来实现最大的传输性能)。

    CDC EEM设备的一般使用情况是创建与主机的“USB网络”连接,而不是将EEM设备扩展为实际LAN/WLAN的“网卡”。

    内核配置

    host端

    Symbol: USB_NET_CDC_EEM [=n]                                                                                                                               │
      │ Type  : tristate                                                                                                                                           │
      │ Prompt: CDC EEM support                                                                                                                                    │
      │   Location:                                                                                                                                                │
      │     -> Device Drivers                                                                                                                                      │
      │       -> Network device support (NETDEVICES [=y])                                                                                                          │
      │         -> USB Network Adapters (USB_NET_DRIVERS [=y])                                                                                                     │
      │ (8)       -> Multi-purpose USB Networking Framework (USB_USBNET [=y])
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    device端

     Symbol: USB_CONFIGFS_EEM [=n]                                                                                                                              │
      │ Type  : boolean                                                                                                                                            │
      │ Prompt: Ethernet Emulation Model (EEM)                                                                                                                     │
      │   Location:                                                                                                                                                │
      │     -> Device Drivers                                                                                                                                      │
      │       -> USB support (USB_SUPPORT [=y])                                                                                                                    │
      │         -> USB Gadget Support (USB_GADGET [=y])                                                                                                            │
      │ (6)       -> USB Gadget functions configurable through configfs (USB_CONFIGFS [=n])
    
    Symbol: USB_ETH_EEM [=n]                                                                                                                                   │
      │ Type  : boolean                                                                                                                                            │
      │ Prompt: Ethernet Emulation Model (EEM) support                                                                                                             │
      │   Location:                                                                                                                                                │
      │     -> Device Drivers                                                                                                                                      │
      │       -> USB support (USB_SUPPORT [=y])                                                                                                                    │
      │         -> USB Gadget Support (USB_GADGET [=y])                                                                                                            │
      │           -> USB Gadget precomposed configurations (<choice> [=m])                                                                                         │
      │ (7)         -> Ethernet Gadget (with CDC Ethernet support) (USB_ETH [=n]) 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    USB CDC EEM驱动支持:

    多个USB CDC EEM设备在单独的物理USB设备上
    USB设备连接
    设备管理控制请求
    具有多种CDC EEM功能的复合USB设备
    获取/设置NDIS对象标识符(OID)
    NDIS 5.0/5.1和NDIS 6.0

    USB CDC ECM(以太网控制模型)

    提供设备制造商接口作为一个标准的NIC (Network interface Card)设备。该接口通常用于高速局域网网络设备,通过USB实现高速以太网数据传输。

    CDC
    ECM(以太网网络控制模型)协议用于在设备和主机之间交换以太网框架的数据。符合CDC ECM的设备将自己作为虚拟网卡公开给主机操作系统。为网卡分配MAC地址和IP地址。

    CDC ECM设备的一般用例是LAN/WLAN的点对点以太网适配器。

    内核配置

    host端

    Symbol: USB_NET_CDCETHER [=y]                                                                                                                              │
      │ Type  : tristate                                                                                                                                           │
      │ Prompt: CDC Ethernet support (smart devices such as cable modems)                                                                                          │
      │   Location:                                                                                                                                                │
      │     -> Device Drivers                                                                                                                                      │
      │       -> Network device support (NETDEVICES [=y])                                                                                                          │
      │         -> USB Network Adapters (USB_NET_DRIVERS [=y])                                                                                                     │
      │ (4)       -> Multi-purpose USB Networking Framework (USB_USBNET [=y])  
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    device端

     Symbol: USB_CONFIGFS_ECM [=n]                                                                                                                              │
      │ Type  : boolean                                                                                                                                            │
      │ Prompt: Ethernet Control Model (CDC ECM)                                                                                                                   │
      │   Location:                                                                                                                                                │
      │     -> Device Drivers                                                                                                                                      │
      │       -> USB support (USB_SUPPORT [=y])                                                                                                                    │
      │         -> USB Gadget Support (USB_GADGET [=y])                                                                                                            │
      │ (5)       -> USB Gadget functions configurable through configfs (USB_CONFIGFS [=n]) 
      
    Symbol: USB_CONFIGFS_ECM_SUBSET [=n]                                                                                                                       │
      │ Type  : boolean                                                                                                                                            │
      │ Prompt: Ethernet Control Model (CDC ECM) subset                                                                                                            │
      │   Location:                                                                                                                                                │
      │     -> Device Drivers                                                                                                                                      │
      │       -> USB support (USB_SUPPORT [=y])                                                                                                                    │
      │         -> USB Gadget Support (USB_GADGET [=y])                                                                                                            │
      │ (6)       -> USB Gadget functions configurable through configfs (USB_CONFIGFS [=n]) 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    USB CDC ECM驱动支持

    多个USB CDC ECM设备在单独的物理USB设备上
    设备管理控制请求
    具有多种CDC ECM功能的复合USB设备
    获取/设置NDIS对象标识符(OID)
    NDIS 5.0/5.1和NDIS 6.0

    RNDIS

    RNDIS是指RemoteNDIS,既是远程网络驱动接口规范,基于USB实现RNDIS实际上就是TCP/IP over USB,就是在USB设备上跑TCP/IP,让USB设备看上去像一块网卡。

    内核配置

    host端

    Symbol: USB_NET_RNDIS_HOST [=y]                                                                                                                            │
      │ Type  : tristate                                                                                                                                           │
      │ Prompt: Host for RNDIS and ActiveSync devices                                                                                                              │
      │   Location:                                                                                                                                                │
      │     -> Device Drivers                                                                                                                                      │
      │       -> Network device support (NETDEVICES [=y])                                                                                                          │
      │         -> USB Network Adapters (USB_NET_DRIVERS [=y])                                                                                                     │
      │ (5)       -> Multi-purpose USB Networking Framework (USB_USBNET [=y])     
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    device端

    Symbol: USB_ETH_RNDIS [=n]                                                                                                                                 │
      │ Type  : boolean                                                                                                                                            │
      │ Prompt: RNDIS support                                                                                                                                      │
      │   Location:                                                                                                                                                │
      │     -> Device Drivers                                                                                                                                      │
      │       -> USB support (USB_SUPPORT [=y])                                                                                                                    │
      │         -> USB Gadget Support (USB_GADGET [=y])                                                                                                            │
      │           -> USB Gadget precomposed configurations (<choice> [=m])                                                                                         │
      │ (2)         -> Ethernet Gadget (with CDC Ethernet support) (USB_ETH [=n]) 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    OBEX

    OBEX(对象交换)兼容无线移动通信OBEX功能模型,支持通过USB的OBEX应用程序。

    CDC OBEX驱动程序通过将USB设备公开为主机操作系统的虚拟COM端口来提供一个传输层。驱动程序可以与支持各种OBEX配置文件的OBEX栈接口,例如文件传输,对象推送。

    背景

    OBEX协议被设计用来在设备之间传输数据对象。该协议最初是为红外数据传输而开发的,但现在已普遍用于蓝牙和其他各种无线通信。

    该协议是面向消息的,但被设计为在面向字符的类tcp协议之上分层。因此,OBEX是使用一对散装管道实现的。

    特性列表

    在单独的物理USB设备上支持多个CDC OBEX设备
    支持具有多种CDC OBEX功能的复合USB设备
    OBEX函数被枚举为一个虚拟串口
    用户模式传输层,工作在虚拟串行端口和带有OpenOBEX栈的接口之上
    支持同步I/O和重叠I/O
    支持串行事件(如TX空,RX准备,RLSD, RING

    WMC-Device

    WMC-Device Management兼容Device Management功能模型,支持基于AT命令的最小控制模型。

    参考:
    https://www.jungo.com/st/embedded_usb_cdc.html

  • 相关阅读:
    论文《Enhancing Hypergraph Neural Networks with Intent Disentanglement for SBR》阅读
    JavaScript获取字符串的字节长度
    带你着手「Servlet」
    如何获取QColorDialog.getColor()的取消事件
    设计模式 --单例模式
    HCIA实验(07)
    【工作篇】软件工程师的知识基础(持续更新)
    Pytest系列-fixture的详细使用和结合conftest.py的详细使用(3)
    树莓派65/100 - Pico W初体验,点亮板载的LED灯
    django-haystack使用小结
  • 原文地址:https://blog.csdn.net/UUUUUltraman/article/details/125538665