ecm工作原理 usb_(转)USB中CDC-ECM的了解和配置

本文介绍了USB中CDC-ECM的工作原理,它用于免驱USB网卡,使得主从设备间能进行以太网帧数据交换。以太网控制模型的通信类接口用于配置和管理以太网程序,数据接口则封装以太网包为USB数据包。在Linux内核中,配置支持CDC-ECM后,设备将作为普通网卡使用。驱动源码位于drivers/net/usb/cdc_ether.c,实现了特定的API。此外,还列举了USB类别的示例,包括音频类设备的配置和识别。
摘要由CSDN通过智能技术生成

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:

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 3usb1-1: New USB device found, idVendor=0bda, idProduct=8152usb1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3usb1-1: Product: USB 10/100LAN

usb1-1: Manufacturer: Realtek

usb1-1: SerialNumber: 00E04C36004F

usb1-1: configuration #2 chosen from 2choices

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.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值