您的位置:首页 > 理论基础 > 计算机网络

USB中网络配置

2015-07-07 10:40 561 查看
USB中典型类及子类:
类别
解释
子类
典型应用
IC芯片
备注
UVC
视频类
 
免驱USB摄像头
 
 
CDC
通讯类
RNDIS
 
 
 
ECM(p24)
免驱USB网卡
RTL8152B
 
EEM
 
 
 
......
 
 
 
 

        以前接触过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
plaincopy

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 
通讯设备类协议
CDC

Communication Devices Class Specification








USB



不同的通讯设备接口,
其中的以太网控制模型
ECM(Ethernet Networking Control Model)
与以太网仿真模型
EEM

Ethernet Emulation 
Model
)可以将其虚拟为一个标准的以太网接口
[3][4]
。自从
USB CDC
规格发布以来,
国外的软硬件公司都使用
USB CDC

USB
上实现一些通讯接口的功能,如串口,
ISDN

ATM
,以太网等。
Microsoft 

WINXP
版本上内置了基于
CDC

RNDIS

动,使得在
WINXP
下可以无缝的连接基于
RNDIS 

USB 
以太网接口设备。
Linux

2.6
以后的版本就缺省支持基于
CDC
的以太网接口(
usbnet
)与串口。在
Linux
内核中,
usbnet
模块用于创建
USB
虚拟以太网设接口。创建成功后,这一虚拟网络
接口便可以如同标准网络接口一样被指定一个
IP
地址。
USB
电缆连接上后,
usbnet
模块便能使
USB
虚拟的以太网接口
ping
测其它
IP
地址,
甚至
“谈论”
DHCP

 HTTP

 
NFS

 telnet

 

ftp
[5]
。简言之,任何在实际的以太网接口上运行的应用将不折不
扣地在
USB
虚拟以太网接口上得到实现,因为它们不能分辨出其正在使用的是真实
的以太网硬件接口还是
USB
虚拟的以太网接口

参考:《基于USB+CDC的虚拟以太网接口研究与设计
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: