cdc ecm 和 cdc eem的区别

转载:http://blog.csdn.net/kangear/article/details/37605811

 

USB中典型类及子类: 

        以前接触过UVC,今天接触了CDC-ECM原理上是一样的,定义一套标准协议主从机都遵守了就不需要额外的驱动程序。

        简单翻译(其实用Google的多一些)一下usbcdc11的第3.8.2关于CDC-ECM的章节。

 

3.8.2 Ethernet Networking Control Model

        以太网控制模型是用在主从设备间的以太网帧数据的交换。通信类接口用于配置和管理以太网程序,程序中包含的“以太网控制模型”子类码是通信类接口描述定义。

        数据接口则用于在USB总线上交换USB数据包,这些USB数以的包封装了完整的以太网包。CRC校验和不能包含在以太网收发数据包中。检验失败的帧数据不能再发送到主机。这意味着设备必须能够缓冲至少一个完整的以太网帧数据。

 

 

        尽管USB虚拟网络接口通常一直保持连接状态,一些网络设备管理的要求,需要正确地初始化设备和主机网络堆栈两者。也可能是偶然的变化配置或状态,例如,增加组播过滤器。

        这是有效的通信类接口与通信类子类乙太网路控制模型的唯一一类特定的请求代码列于表10。

 

 

 

Linux内核配置支持CDC-ECM:

 

[python] view plain copy
 
  1. Device Drivers  --->  
  2.     [*] Network device support  --->  
  3.         USB Network Adapters  --->  
  4.             <*> Multi-purpose USB Networking Framework  
  5.             -*-   CDC Ethernet support (smart devices such as cable modems)  

 

 

匹配CDC-ECM设备的LOG信息:

usb 1-1: new full speed USB device using s3c2410-ohci and address 3

usb 1-1: New USB device found, idVendor=0bda, idProduct=8

usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3

usb 1-1: Product: USB 10/100 LAN

usb 1-1: Manufacturer: Realtek

usb 1-1: SerialNumber: 00E04C36004F

usb 1-1: configuration #2 chosen from 2 choices

eth1: register 'cdc_ether' at usb-s3c24xx-1, CDC Ethernet Device, 00:e0:4c:36:00:4f

 

然后就完事了,它就是一个普通的网卡了。

 

        总结:ECM的驱动源码文件是drivers/net/usb/cdc_ether.c。不需要添加Vid Pid等等任何操作就可以使用。cdc_ether.c与传统的以太网芯片的驱动程序并不一样,并不是实现xxx_open(),xxx_stop(),xxx_tx(), xxx_hard_header(), xxx_get_stats, xxx_tx_timeout()而是实现了:usbnet_generic_cdc_bind(), usbnet_cdc_unbind(), usbnet_cdc_bind(), usbnet_cdc_status()等4个API。

 

USB中典型类及子类2:


| Class |  Description | Example         |
|:-----: |:------------:|-----------------|
|  00h   |       -      | -               |
|  01h   |     Audio    | USB Audio Card  |
|  08h   | Mass Storage | USB Flash(UPan) |




For Audio Class:
```
Device Drivers --->
Sound card support--->
<*> Sound card support
  <*> Advanced Linux Sound Architecture  --->
      [*] USB sound devices  --->
         <*>   USB Audio/MIDI driver
```
then run `cat /proc/cards` you will see what like this
```
$ cat /proc/asound/cards 
 0 [Intel          ]: HDA-Intel - HDA Intel
                      HDA Intel at 0xfebf4000 irq 44
 1 [Set            ]: USB-Audio - C-Media USB Headphone Set
                      C-Media USB Headphone Set at usb-0000:00:1d.2-1, full speed

```
the [Set] is a USB audio card.

 

参考:《基于USB+CDC的虚拟以太网接口研究与设计》

 

      以太网仿真模型,是一种在USB总线上高效率地传输以太网数据包的一种规范。EEM是USB CDC规范的一部分。与ECM不同,EEM没有定义在USB总线上模拟以太网的完整的控制请求。相反,EEM利用USB在设备和主机之间传输以太网数据包。在这种操作模式下,EEM就是在USB总线和设备之间传输以太网数据包的一个通道。为了提高效率,在一次USB传输过程中,可以包含多个EEM封包。通常来说,USB EEM设备的是用于为主机建立一个基于USB的网络连接,而不需要设备模拟一个真正的网卡。
    
功能支持:

1. 同时支持多设备
2. 多端口复合设备支持 
3. 获取和设置NDIS Object Identifiers (OID's) 
4. 支持NDIS 5.0/5.1 and NDIS 6.0
5. 支持Windows 2000 through Windows 10, 包括32 bit and 64 bit

USB CDC ECM/MBIM

   以太网控制模型用于在设备和主机之间传输以太网数据包。在操作系统看来,CDC网卡设备就是一个虚拟以太网卡,包含标准网卡需要的MAC地址和IP地址。CDC网卡设备通常是一个以太网卡,用于连接LAN或者是WLAN。

功能支持:

1. 同时支持多设备
2. 多端口复合设备支持 
3. 获取和设置NDIS Object Identifiers (OID's) 
4. 支持NDIS 5.0/5.1 and NDIS 6.0,NDIS 6.20
5. 支持Windows 2000 through Windows 10, 包括32 bit and 64 bit

posted @ 2024-02-21 17:21  zxiaocheng  阅读(349)  评论(0编辑  收藏  举报