zoukankan      html  css  js  c++  java
  • USB中CDC-ECM的了解和配置

    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

    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()4API

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

  • 相关阅读:
    windows笔记进程的句柄
    windows笔记创建线程的函数CreateThread
    c#实现从其他网站抓取imei码信息,手工输入验证码
    Linux下自动修改用户密码的方法(直接通过命令而不是在终端输入密码)
    Redis学习笔记List数据类型
    在Linux(centos)上安装PHP的mongodb扩展
    CI(codeigniter)如何防止sql注入
    MongoDB增加用户认证: 增加用户、删除用户、修改用户密码、读写权限、只读权限
    Sublime Text编辑器如何显示顶部的菜单栏
    C#图片选择器
  • 原文地址:https://www.cnblogs.com/lcchuguo/p/5159791.html
Copyright © 2011-2022 走看看