USB中CDC ECM的了解和配置

2021-08-31 11:28:40 字數 3052 閱讀 1079

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!

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與傳統的乙太網晶元的驅動程式並不一樣,並不是實現***_open(),***_stop(),***_tx(), ***_hard_header(), ***_get_stats, ***_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.

參考:《基於usb+cdc的虛擬乙太網介面研究與設計》

給我老師的人工智慧教程打call!

usb的基本了解

usb,是英文universal serial bus 通用序列匯流排 的縮寫,是乙個外部匯流排標準,用於規範電腦與外部裝置的連線和通訊。usb版本 理論最大傳輸速率 速率稱號 最大輸出電流 推出時間 usb1.0 1.5mbps 192kb s 低速 low speed 5v 500ma 1996...

usb中的endpoint 端點 和傳輸模式

端點 端點位於usb 外設內部,所有通訊資料的 或目的都基於這些端點,是乙個可定址的fifo。每個usb 外設有乙個唯一的位址,可能包含最多十六個端點。主機通過發出器件位址和每次資料傳輸的端點號,向乙個具體端點 fifo 傳送資料。每個端點的位址為0 到15,乙個端點位址對應乙個方向。所以,端點2 ...

usb中的endpoint 端點 和傳輸模式

端點 端點位於usb 外設內部,所有通訊資料的 或目的都基於這些端點,是乙個可定址的fifo。每個usb 外設有乙個唯一的位址,可能包含最多十六個端點。主機通過發出器件位址和每次資料傳輸的端點號,向乙個具體端點 fifo 傳送資料。每個端點的位址為0 到15,乙個端點位址對應乙個方向。所以,端點2 ...