USB中典型类及子类:
|   类别  |   解释  |   子类  |   典型应用  |   IC芯片  |   备注  | 
|   视频类  |   
  |   免驱USB摄像头  |   
  |   
  | |
|   通讯类  |   
  |   
  |   
  | ||
|   ECM(p24)  |   免驱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:
Device Drivers  --->
    [*] Network device support  --->
        USB Network Adapters  --->
            <*> Multi-purpose USB Networking Framework
            -*-   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=8152
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-ECM(以太网控制模型),解释了其工作原理和如何在Linux环境下配置和使用CDC-ECM设备。通过实际例子展示了CDC-ECM设备在系统中的识别过程。
          
      
          
                
                
                
                
              
                
                
                
                
                
              
                
                
                    
              
            
                  
					3150
					
被折叠的  条评论
		 为什么被折叠?
		 
		 
		
    
  
    
  
					
					
					


            