USB中网络配置
2015-07-07 10:40
561 查看
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
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的虚拟以太网接口研究与设计》
类别 | 解释 | 子类 | 典型应用 | 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的虚拟以太网接口研究与设计》
相关文章推荐
- 计算机网络中的帧封装(C实现)
- HttpClient_javax.net.ssl.SSLHandshakeException: sun.security.validator 问题解决,与环境有关
- ubuntu12.04网络配置——桥接方式配置静态IP
- HTTP缓存是如何实现
- 【后端】content type大全 from http://tool.oschina.net/commons
- Android5.0网络之ipv6
- Android获取网络状态
- http://www.oschina.net/code/snippet_121944_14983
- The method getServletContext() is undefined for the type HttpServletRequest
- 一次完整的HTTP事务过程分析
- The method getDispatcherType() is undefined for the type HttpServletRequest
- TCP协议中的三次握手和四次挥手
- 多台虚拟机的ip设置及相互访问
- 一步步教你为网站开发Android客户端---HttpWatch抓包,HttpClient模拟POST请求,Jsoup解析HTML代码,动态更新ListView
- HTTP Session学习
- java网络编程----TCP UDP
- Linux网络编程经典书籍推荐
- 神经网络识别车牌字符
- 【网络流】 HDOJ 4289 Control
- vs2012引入新lib-----附cocos2dx3.2 http通信lib库添加