сначала просто наблюдение:
есть два бытовых адаптера 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 DevicesATM120 -
CDC Subclass for Asynchronous Transfer Mode Devicesда и то, как мне показалось, описание неполное:
не описаны структуры, через которые производится конфигурация самого UART на стороне Device (хосту-то всёравно какая скорость будет - это определяется лишь частотой посылок пакетов по шине): а ведь оно должно конфигуриться каким-то стандартным способом, прописанным в бумагах (скорость, четность, число битов, etc)
есть конечно много примеров реализации CDC на тех или иных uC, но хотелось бы сперва почитать первоисточник...