1. 程式人生 > >USB中CDC-ECM的瞭解和配置

USB中CDC-ECM的瞭解和配置

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow

也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!

               

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中典型類及子類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的虛擬乙太網介面研究與設計

           

給我老師的人工智慧教程打call!http://blog.csdn.net/jiangjunshow

這裡寫圖片描述