реклама на сайте
подробности

 
 
> UART-to-USB: CDC Standards
Doka
сообщение Apr 1 2009, 07:07
Сообщение #1


Electrical Engineer
******

Группа: СуперМодераторы
Сообщений: 2 163
Регистрация: 4-10-04
Пользователь №: 778



сначала просто наблюдение:

есть два бытовых адаптера RS232-to-USB, но сильно разных. вот логи ядра, при втыкании:
Код
kernel: ohci_hcd 0000:00:03.2: wakeup
kernel: usb 4-1: new full speed USB device using ohci_hcd and address 2
kernel: usb 4-1: configuration #1 chosen from 1 choice
kernel: usbcore: registered new driver usbserial
kernel: drivers/usb/serial/usb-serial.c: USB Serial support registered for generic
kernel: usbcore: registered new driver usbserial_generic
kernel: drivers/usb/serial/usb-serial.c: USB Serial Driver core
kernel: drivers/usb/serial/usb-serial.c: USB Serial support registered for pl2303
kernel: pl2303 4-1:1.0: pl2303 converter detected
kernel: usb 4-1: pl2303 converter now attached to ttyUSB0
kernel: usbcore: registered new driver pl2303
kernel: drivers/usb/serial/pl2303.c: Prolific PL2303 USB to serial adaptor driver


kernel: usb 2-2: new low speed USB device using ohci_hcd and address 3
kernel: usb 2-2: configuration #1 chosen from 1 choice
kernel: drivers/usb/serial/usb-serial.c: USB Serial support registered for DeLorme Earthmate USB
kernel: drivers/usb/serial/usb-serial.c: USB Serial support registered for HID->COM RS232 Adapter
kernel: drivers/usb/serial/usb-serial.c: USB Serial support registered for Nokia CA-42 V2 Adapter
kernel: cypress 2-2:1.0: HID->COM RS232 Adapter converter detected
kernel: usb 2-2: HID->COM RS232 Adapter converter now attached to ttyUSB1
kernel: usbcore: registered new driver cypress
kernel: drivers/usb/serial/cypress_m8.c: Cypress USB to Serial Driver v1.09


еще немного информации:
Код
$ /sbin/lsusb
Bus 004 Device 002: ID 067b:2303 Prolific Technology, Inc. PL2303 Serial Port
Bus 002 Device 003: ID 04b4:5500 Cypress Semiconductor Corp. HID->COM RS232 Adapter

Код
$ cat /proc/bus/usb/devices

T:  Bus=04 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  2 Spd=12  MxCh= 0
D:  Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
P:  Vendor=067b ProdID=2303 Rev= 3.00
S:  Manufacturer=Prolific Technology Inc.
S:  Product=USB-Serial Controller
C:* #Ifs= 1 Cfg#= 1 Atr=80 MxPwr=100mA
I:  If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=pl2303
E:  Ad=81(I) Atr=03(Int.) MxPS=  10 Ivl=1ms
E:  Ad=02(O) Atr=02(Bulk) MxPS=  64 Ivl=0ms
E:  Ad=83(I) Atr=02(Bulk) MxPS=  64 Ivl=0ms

T:  Bus=02 Lev=01 Prnt=01 Port=01 Cnt=01 Dev#=  3 Spd=1.5 MxCh= 0
D:  Ver= 1.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs=  1
P:  Vendor=04b4 ProdID=5500 Rev= 0.00
S:  Manufacturer=Cypress Semiconductor
S:  Product=USB to Serial
C:* #Ifs= 1 Cfg#= 1 Atr=80 MxPwr=100mA
I:  If#= 0 Alt= 0 #EPs= 2 Cls=03(HID  ) Sub=00 Prot=00 Driver=cypress
E:  Ad=81(I) Atr=03(Int.) MxPS=   8 Ivl=10ms
E:  Ad=02(O) Atr=03(Int.) MxPS=   8 Ivl=10ms


====================================================


вопросы:
т.е. есть как минимум два узаконенных способа гонять UART через USB:
1) через CDC
2) через HID

но на usb.org есть описание только как это реализовать через CDC ( http://www.usb.org/developers/devclass_doc...C1.2_WMC1.1.zip ):
CDC120 - CDC Subclass for Communications Devices
ATM120 - CDC Subclass for Asynchronous Transfer Mode Devices

да и то, как мне показалось, описание неполное:
не описаны структуры, через которые производится конфигурация самого UART на стороне Device (хосту-то всёравно какая скорость будет - это определяется лишь частотой посылок пакетов по шине): а ведь оно должно конфигуриться каким-то стандартным способом, прописанным в бумагах (скорость, четность, число битов, etc)

есть конечно много примеров реализации CDC на тех или иных uC, но хотелось бы сперва почитать первоисточник...


--------------------
Блог iDoka.ru
CV linkedin.com/in/iDoka
Sources github.com/iDoka


Never stop thinking...........................
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Andy Mozzhevilov
сообщение Apr 5 2009, 11:00
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 877
Регистрация: 26-01-05
Из: Екатеринбург
Пользователь №: 2 206



Цитата(Doka @ Apr 1 2009, 13:07) *
CDC120 - CDC Subclass for Communications Devices
ATM120 - CDC Subclass for Asynchronous Transfer Mode Devices

да и то, как мне показалось, описание неполное:
не описаны структуры, через которые производится конфигурация самого UART на стороне Device (хосту-то всёравно какая скорость будет - это определяется лишь частотой посылок пакетов по шине): а ведь оно должно конфигуриться каким-то стандартным способом, прописанным в бумагах (скорость, четность, число битов, etc)


В приведенном вами архиве файл PSTN120.pdf (ссылка на него есть из 19-й таблицы CDC120).
6.3.10 SetLineCoding
6.3.11 GetLineCoding
Table 17: Line Coding Structure


--------------------
Пасу котов...
Go to the top of the page
 
+Quote Post
Doka
сообщение Apr 7 2009, 18:49
Сообщение #3


Electrical Engineer
******

Группа: СуперМодераторы
Сообщений: 2 163
Регистрация: 4-10-04
Пользователь №: 778



Цитата(Andy Mozzhevilov @ Apr 5 2009, 15:00) *
В приведенном вами архиве файл PSTN120.pdf (ссылка на него есть из 19-й таблицы CDC120).
6.3.10 SetLineCoding
6.3.11 GetLineCoding
Table 17: Line Coding Structure

во!! оно самое!! видел, но даже в голову не пришло ,что они запихнут это в PSTN Subclass
всё-таки ATM как-то логичней было бы..


Цитата(galjoen @ Apr 5 2009, 21:25) *
Я впервые от вас услышал, что через HID как-то стандартно можно гонять UART. Т.е. в винде кроме мыши и клавы ещё какой-то HID по умолчанию есть? Какая Usage Page д.б. у этого HID-а? Можно глянуть на HID дескриптор этого девайса?
А вроде как по логам Cypress там HID-у свой драйвер установил. Хотя м.б. я не понял.

увы, я в этом не копенгаген. что вижу о том и пою...
но в логах ядра при подключении девайса ясно видна ссылка на /usr/src/kernels/linux-2.6.24.3/drivers/usb/serial/cypress_m8.c

в самом cypress_m8.c есть такая структура:
Код
static struct usb_device_id id_table_cyphidcomrs232 [] = {
        { USB_DEVICE(VENDOR_ID_CYPRESS, PRODUCT_ID_CYPHIDCOM) },
        { }                                             /* Terminating entry */
};


static struct usb_serial_driver cypress_hidcom_device = {
        .driver = {
                .owner =                THIS_MODULE,
                .name =                 "cyphidcom",
        },
        .description =                  "HID->COM RS232 Adapter",
        .usb_driver =                   &cypress_driver,
        .id_table =                     id_table_cyphidcomrs232,
        .num_interrupt_in =             1,
        .num_interrupt_out =            1,
        .num_bulk_in =                  NUM_DONT_CARE,
        .num_bulk_out =                 NUM_DONT_CARE,
        .num_ports =                    1,
        .attach =                       cypress_hidcom_startup,
        .shutdown =                     cypress_shutdown,
        .open =                         cypress_open,
        .close =                        cypress_close,
        .write =                        cypress_write,
        .write_room =                   cypress_write_room,
        .ioctl =                        cypress_ioctl,
        .set_termios =                  cypress_set_termios,
        .tiocmget =                     cypress_tiocmget,
        .tiocmset =                     cypress_tiocmset,
        .chars_in_buffer =              cypress_chars_in_buffer,
        .throttle =                     cypress_throttle,
        .unthrottle =                   cypress_unthrottle,
        .read_int_callback =            cypress_read_int_callback,
        .write_int_callback =           cypress_write_int_callback,
};


какой командой/тулсом линукс можно просмотреть Usage Page этого девайса?


--------------------
Блог iDoka.ru
CV linkedin.com/in/iDoka
Sources github.com/iDoka


Never stop thinking...........................
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 21:59
Рейтинг@Mail.ru


Страница сгенерированна за 0.01415 секунд с 7
ELECTRONIX ©2004-2016