Перейти к содержанию
    

USB CDC: как сэкономить на конечных точках?

Проверил по-быстрому... Четыре VCP:

image.png.dc5c9e7dd87a86b56236466bc90df80e.png

 

Spoiler
Connection Status Device connected
Current Configuration 1
Speed Full (12 Mbit/s)
Device Address 1
Number Of Open Pipes 12
Offset Field Size Value Description
0 bLength 1 12h  
1 bDescriptorType 1 01h Device
2 bcdUSB 2 0200h USB Spec 2.0
4 bDeviceClass 1 EFh Miscellaneous
5 bDeviceSubClass 1 02h Common Class
6 bDeviceProtocol 1 01h Interface Association Descriptor
7 bMaxPacketSize0 1 40h 64 bytes
8 idVendor 2 FFFFh  
10 idProduct 2 4738h  
12 bcdDevice 2 0102h 1.02
14 iManufacturer 1 01h "MicroGenSF"
15 iProduct 1 02h "Storch TRX"
16 iSerialNumber 1 03h "SN:19640302_122880000_2"
17 bNumConfigurations 1 01h  
Offset Field Size Value Description
0 bLength 1 09h  
1 bDescriptorType 1 02h Configuration
2 wTotalLength 2 0111h  
4 bNumInterfaces 1 08h  
5 bConfigurationValue 1 01h  
6 iConfiguration 1 00h  
7 bmAttributes 1 C0h Self Powered
  4..0: Reserved   ...00000   
  5: Remote Wakeup   ..0.....  No
  6: Self Powered   .1......  Yes
  7: Reserved (set to one)
(bus-powered for 1.0)
  1.......   
8 bMaxPower 1 7Dh 250 mA
Offset Field Size Value Description
0 bLength 1 08h  
1 bDescriptorType 1 0Bh Interface Association
2 bFirstInterface 1 00h  
3 bInterfaceCount 1 02h  
4 bFunctionClass 1 02h CDC Control
5 bFunctionSubClass 1 02h Abstract Control Model
6 bFunctionProtocol 1 01h AT Commands: V.250 etc
7 iFunction 1 04h "Storch TRX CAT"
Offset Field Size Value Description
0 bLength 1 09h  
1 bDescriptorType 1 04h Interface
2 bInterfaceNumber 1 00h  
3 bAlternateSetting 1 00h  
4 bNumEndpoints 1 01h  
5 bInterfaceClass 1 02h CDC Control
6 bInterfaceSubClass 1 02h Abstract Control Model
7 bInterfaceProtocol 1 01h AT Commands: V.250 etc
8 iInterface 1 00h  
Offset Field Size Value Description
0 bFunctionLength 1 05h  
1 bDescriptorType 1 24h CS Interface
2 bDescriptorSubtype 1 00h Header
3 bcdCDC 2 0110h 1.10
Offset Field Size Value Description
0 bFunctionLength 1 05h  
1 bDescriptorType 1 24h CS Interface
2 bDescriptorSubtype 1 01h Call Management
3 bmCapabilities 1 00h  
  7..2: Reserved   000000..   
  1: Data Ifc Usage   ......0.  Call management only over Comm Ifc
  0: Call Management   .......0  Does not handle call management itself
4 bDataInterface 1 01h  
Offset Field Size Value Description
0 bFunctionLength 1 04h  
1 bDescriptorType 1 24h CS Interface
2 bDescriptorSubtype 1 02h Abstract Control Management
3 bmCapabilities 1 02h  
  7..4: Reserved   0000....   
  3: Connection   ....0...   
  2: Send Break   .....0..   
  1: Line Coding   ......1.  Line Coding requests and Serial State notification supported
  0: Comm Features   .......0   
Offset Field Size Value Description
0 bFunctionLength 1 05h  
1 bDescriptorType 1 24h CS Interface
2 bDescriptorSubtype 1 06h Union
3 bControlInterface 1 00h  
4 bSubordinateInterface0 1 01h CDC Data
Offset Field Size Value Description
0 bLength 1 07h  
1 bDescriptorType 1 05h Endpoint
2 bEndpointAddress 1 85h 5 In
3 bmAttributes 1 03h Interrupt
  1..0: Transfer Type   ......11  Interrupt
  7..2: Reserved   000000..   
4 wMaxPacketSize 2 000Ah 10 bytes
6 bInterval 1 FFh 255 ms
Offset Field Size Value Description
0 bLength 1 09h  
1 bDescriptorType 1 04h Interface
2 bInterfaceNumber 1 01h  
3 bAlternateSetting 1 00h  
4 bNumEndpoints 1 02h  
5 bInterfaceClass 1 0Ah CDC Data
6 bInterfaceSubClass 1 00h  
7 bInterfaceProtocol 1 00h  
8 iInterface 1 00h  
Offset Field Size Value Description
0 bLength 1 07h  
1 bDescriptorType 1 05h Endpoint
2 bEndpointAddress 1 01h 1 Out
3 bmAttributes 1 02h Bulk
  1..0: Transfer Type   ......10  Bulk
  7..2: Reserved   000000..   
4 wMaxPacketSize 2 0040h 64 bytes
6 bInterval 1 00h  
Offset Field Size Value Description
0 bLength 1 07h  
1 bDescriptorType 1 05h Endpoint
2 bEndpointAddress 1 81h 1 In
3 bmAttributes 1 02h Bulk
  1..0: Transfer Type   ......10  Bulk
  7..2: Reserved   000000..   
4 wMaxPacketSize 2 0040h 64 bytes
6 bInterval 1 00h  
Offset Field Size Value Description
0 bLength 1 08h  
1 bDescriptorType 1 0Bh Interface Association
2 bFirstInterface 1 02h  
3 bInterfaceCount 1 02h  
4 bFunctionClass 1 02h CDC Control
5 bFunctionSubClass 1 02h Abstract Control Model
6 bFunctionProtocol 1 01h AT Commands: V.250 etc
7 iFunction 1 05h "Storch TRX CTL"
Offset Field Size Value Description
0 bLength 1 09h  
1 bDescriptorType 1 04h Interface
2 bInterfaceNumber 1 02h  
3 bAlternateSetting 1 00h  
4 bNumEndpoints 1 01h  
5 bInterfaceClass 1 02h CDC Control
6 bInterfaceSubClass 1 02h Abstract Control Model
7 bInterfaceProtocol 1 01h AT Commands: V.250 etc
8 iInterface 1 00h  
Offset Field Size Value Description
0 bFunctionLength 1 05h  
1 bDescriptorType 1 24h CS Interface
2 bDescriptorSubtype 1 00h Header
3 bcdCDC 2 0110h 1.10
Offset Field Size Value Description
0 bFunctionLength 1 05h  
1 bDescriptorType 1 24h CS Interface
2 bDescriptorSubtype 1 01h Call Management
3 bmCapabilities 1 00h  
  7..2: Reserved   000000..   
  1: Data Ifc Usage   ......0.  Call management only over Comm Ifc
  0: Call Management   .......0  Does not handle call management itself
4 bDataInterface 1 03h  
Offset Field Size Value Description
0 bFunctionLength 1 04h  
1 bDescriptorType 1 24h CS Interface
2 bDescriptorSubtype 1 02h Abstract Control Management
3 bmCapabilities 1 02h  
  7..4: Reserved   0000....   
  3: Connection   ....0...   
  2: Send Break   .....0..   
  1: Line Coding   ......1.  Line Coding requests and Serial State notification supported
  0: Comm Features   .......0   
Offset Field Size Value Description
0 bFunctionLength 1 05h  
1 bDescriptorType 1 24h CS Interface
2 bDescriptorSubtype 1 06h Union
3 bControlInterface 1 02h  
4 bSubordinateInterface0 1 03h CDC Data
Offset Field Size Value Description
0 bLength 1 07h  
1 bDescriptorType 1 05h Endpoint
2 bEndpointAddress 1 86h 6 In
3 bmAttributes 1 03h Interrupt
  1..0: Transfer Type   ......11  Interrupt
  7..2: Reserved   000000..   
4 wMaxPacketSize 2 000Ah 10 bytes
6 bInterval 1 FFh 255 ms
Offset Field Size Value Description
0 bLength 1 09h  
1 bDescriptorType 1 04h Interface
2 bInterfaceNumber 1 03h  
3 bAlternateSetting 1 00h  
4 bNumEndpoints 1 02h  
5 bInterfaceClass 1 0Ah CDC Data
6 bInterfaceSubClass 1 00h  
7 bInterfaceProtocol 1 00h  
8 iInterface 1 00h  
Offset Field Size Value Description
0 bLength 1 07h  
1 bDescriptorType 1 05h Endpoint
2 bEndpointAddress 1 02h 2 Out
3 bmAttributes 1 02h Bulk
  1..0: Transfer Type   ......10  Bulk
  7..2: Reserved   000000..   
4 wMaxPacketSize 2 0040h 64 bytes
6 bInterval 1 00h  
Offset Field Size Value Description
0 bLength 1 07h  
1 bDescriptorType 1 05h Endpoint
2 bEndpointAddress 1 82h 2 In
3 bmAttributes 1 02h Bulk
  1..0: Transfer Type   ......10  Bulk
  7..2: Reserved   000000..   
4 wMaxPacketSize 2 0040h 64 bytes
6 bInterval 1 00h  
Offset Field Size Value Description
0 bLength 1 08h  
1 bDescriptorType 1 0Bh Interface Association
2 bFirstInterface 1 04h  
3 bInterfaceCount 1 02h  
4 bFunctionClass 1 02h CDC Control
5 bFunctionSubClass 1 02h Abstract Control Model
6 bFunctionProtocol 1 01h AT Commands: V.250 etc
7 iFunction 1 06h "Storch TRX EXT1"
Offset Field Size Value Description
0 bLength 1 09h  
1 bDescriptorType 1 04h Interface
2 bInterfaceNumber 1 04h  
3 bAlternateSetting 1 00h  
4 bNumEndpoints 1 01h  
5 bInterfaceClass 1 02h CDC Control
6 bInterfaceSubClass 1 02h Abstract Control Model
7 bInterfaceProtocol 1 01h AT Commands: V.250 etc
8 iInterface 1 00h  
Offset Field Size Value Description
0 bFunctionLength 1 05h  
1 bDescriptorType 1 24h CS Interface
2 bDescriptorSubtype 1 00h Header
3 bcdCDC 2 0110h 1.10
Offset Field Size Value Description
0 bFunctionLength 1 05h  
1 bDescriptorType 1 24h CS Interface
2 bDescriptorSubtype 1 01h Call Management
3 bmCapabilities 1 00h  
  7..2: Reserved   000000..   
  1: Data Ifc Usage   ......0.  Call management only over Comm Ifc
  0: Call Management   .......0  Does not handle call management itself
4 bDataInterface 1 05h  
Offset Field Size Value Description
0 bFunctionLength 1 04h  
1 bDescriptorType 1 24h CS Interface
2 bDescriptorSubtype 1 02h Abstract Control Management
3 bmCapabilities 1 02h  
  7..4: Reserved   0000....   
  3: Connection   ....0...   
  2: Send Break   .....0..   
  1: Line Coding   ......1.  Line Coding requests and Serial State notification supported
  0: Comm Features   .......0   
Offset Field Size Value Description
0 bFunctionLength 1 05h  
1 bDescriptorType 1 24h CS Interface
2 bDescriptorSubtype 1 06h Union
3 bControlInterface 1 04h  
4 bSubordinateInterface0 1 05h CDC Data
Offset Field Size Value Description
0 bLength 1 07h  
1 bDescriptorType 1 05h Endpoint
2 bEndpointAddress 1 87h 7 In
3 bmAttributes 1 03h Interrupt
  1..0: Transfer Type   ......11  Interrupt
  7..2: Reserved   000000..   
4 wMaxPacketSize 2 000Ah 10 bytes
6 bInterval 1 FFh 255 ms
Offset Field Size Value Description
0 bLength 1 09h  
1 bDescriptorType 1 04h Interface
2 bInterfaceNumber 1 05h  
3 bAlternateSetting 1 00h  
4 bNumEndpoints 1 02h  
5 bInterfaceClass 1 0Ah CDC Data
6 bInterfaceSubClass 1 00h  
7 bInterfaceProtocol 1 00h  
8 iInterface 1 00h  
Offset Field Size Value Description
0 bLength 1 07h  
1 bDescriptorType 1 05h Endpoint
2 bEndpointAddress 1 03h 3 Out
3 bmAttributes 1 02h Bulk
  1..0: Transfer Type   ......10  Bulk
  7..2: Reserved   000000..   
4 wMaxPacketSize 2 0040h 64 bytes
6 bInterval 1 00h  
Offset Field Size Value Description
0 bLength 1 07h  
1 bDescriptorType 1 05h Endpoint
2 bEndpointAddress 1 83h 3 In
3 bmAttributes 1 02h Bulk
  1..0: Transfer Type   ......10  Bulk
  7..2: Reserved   000000..   
4 wMaxPacketSize 2 0040h 64 bytes
6 bInterval 1 00h  
Offset Field Size Value Description
0 bLength 1 08h  
1 bDescriptorType 1 0Bh Interface Association
2 bFirstInterface 1 06h  
3 bInterfaceCount 1 02h  
4 bFunctionClass 1 02h CDC Control
5 bFunctionSubClass 1 02h Abstract Control Model
6 bFunctionProtocol 1 01h AT Commands: V.250 etc
7 iFunction 1 07h "Storch TRX EXT2"
Offset Field Size Value Description
0 bLength 1 09h  
1 bDescriptorType 1 04h Interface
2 bInterfaceNumber 1 06h  
3 bAlternateSetting 1 00h  
4 bNumEndpoints 1 01h  
5 bInterfaceClass 1 02h CDC Control
6 bInterfaceSubClass 1 02h Abstract Control Model
7 bInterfaceProtocol 1 01h AT Commands: V.250 etc
8 iInterface 1 00h  
Offset Field Size Value Description
0 bFunctionLength 1 05h  
1 bDescriptorType 1 24h CS Interface
2 bDescriptorSubtype 1 00h Header
3 bcdCDC 2 0110h 1.10
Offset Field Size Value Description
0 bFunctionLength 1 05h  
1 bDescriptorType 1 24h CS Interface
2 bDescriptorSubtype 1 01h Call Management
3 bmCapabilities 1 00h  
  7..2: Reserved   000000..   
  1: Data Ifc Usage   ......0.  Call management only over Comm Ifc
  0: Call Management   .......0  Does not handle call management itself
4 bDataInterface 1 07h  
Offset Field Size Value Description
0 bFunctionLength 1 04h  
1 bDescriptorType 1 24h CS Interface
2 bDescriptorSubtype 1 02h Abstract Control Management
3 bmCapabilities 1 02h  
  7..4: Reserved   0000....   
  3: Connection   ....0...   
  2: Send Break   .....0..   
  1: Line Coding   ......1.  Line Coding requests and Serial State notification supported
  0: Comm Features   .......0   
Offset Field Size Value Description
0 bFunctionLength 1 05h  
1 bDescriptorType 1 24h CS Interface
2 bDescriptorSubtype 1 06h Union
3 bControlInterface 1 06h  
4 bSubordinateInterface0 1 07h CDC Data
Offset Field Size Value Description
0 bLength 1 07h  
1 bDescriptorType 1 05h Endpoint
2 bEndpointAddress 1 88h 8 In
3 bmAttributes 1 03h Interrupt
  1..0: Transfer Type   ......11  Interrupt
  7..2: Reserved   000000..   
4 wMaxPacketSize 2 000Ah 10 bytes
6 bInterval 1 FFh 255 ms
Offset Field Size Value Description
0 bLength 1 09h  
1 bDescriptorType 1 04h Interface
2 bInterfaceNumber 1 07h  
3 bAlternateSetting 1 00h  
4 bNumEndpoints 1 02h  
5 bInterfaceClass 1 0Ah CDC Data
6 bInterfaceSubClass 1 00h  
7 bInterfaceProtocol 1 00h  
8 iInterface 1 00h  
Offset Field Size Value Description
0 bLength 1 07h  
1 bDescriptorType 1 05h Endpoint
2 bEndpointAddress 1 04h 4 Out
3 bmAttributes 1 02h Bulk
  1..0: Transfer Type   ......10  Bulk
  7..2: Reserved   000000..   
4 wMaxPacketSize 2 0040h 64 bytes
6 bInterval 1 00h  
Offset Field Size Value Description
0 bLength 1 07h  
1 bDescriptorType 1 05h Endpoint
2 bEndpointAddress 1 84h 4 In
3 bmAttributes 1 02h Bulk
  1..0: Transfer Type   ......10  Bulk
  7..2: Reserved   000000..   
4 wMaxPacketSize 2 0040h 64 bytes
6 bInterval 1 00h  

 

Изменено пользователем GenaSPB

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

12 минут назад, GenaSPB сказал:

В данном случае это был STM32MP153DAB...

Понял. Большое спасибо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Дошли руки побаловаться. Скачал у микрософта свежий образ виртуалки W10, проверил - действительно, ставит драйвера для vcp в композитном устройстве автоматически.

 

05.09.2020 в 12:14, GenaSPB сказал:

Ловите от того, что ранее давал (с двумя компортами).

Сравнил со своими дескрипторами - все совпадает кроме 

05.09.2020 в 12:14, GenaSPB сказал:

6 bFunctionProtocol 1 01h AT Commands: V.250 etc

У меня тут стоит ноль. Раньше я тоже писал сюда единицу, но года два назад линух  при втыкании такого устройства стал пытаться с криком "О! Модем подвезли" установить через него связь. Что в общем-то и логично. У ардуинщиков были сложности с этим по этой же причине - у них в дескрипторе этот же протокол указан. У вас упоминание тут AT commands имеет какое-то обоснование или тоже скопировано из примеров в интернете?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Модем тут остался случайно после безуспешных попыток получить управление dtr (или rts, не помню сейчас) через winapi. Винда просто не формирует управляющего пакета. За инфу про поведение в линуксе спасибо, уберу.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

04.09.2020 в 13:42, Сергей Борщ сказал:

Интересно, а можно ли использовать одну и ту же interrupt контрольную точку в нескольких виртуальных портах?

Попросил товарища проверить это, в силу отсутствия железа, на котором я это хотел тестировать.
Он тестировал на другом МК, но суть от этого не менялась. У меня STM32, у него LPC1768.
В дескрипторах обоих виртуальных портов он указал одну и ту же физическую КТ для INTERRUPT.

Проверяли на Windows 10 - работает.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 9/4/2020 at 7:44 PM, GenaSPB said:

Windows 7 при отсутствии или фэйковой interrupt ep работает только в направлении устройства. Десятый виндовс раньше работал. После какого то обновления перестал.

Напомню об результатах своих проверок

 

Изменено пользователем GenaSPB

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

18.10.2020 в 22:39, GenaSPB сказал:

Напомню об результатах своих проверок

Никак не дает мне покоя мысль, что же такого разного могло быть между Вашей десяткой и моей...
Для точного понимания предлагаю несколько определений:

  • отсутствующая КТ - это когда в дескрипторе просто ее не указали - здесь да, не работает;
  • фэйковая КТ - КТ, которая есть в дескрипторе, но ее физически нет в МК (например, задали номер 7, а в МК их всего 5) - не работает тоже;
  • разделяемая КТ - КТ, которая есть в дескрипторах нескольких VCP с одним и тем же номером и которая реально есть в МК.

Я полагаю, что Вы тестировали с первыми двумя пунктами? Или в моем понимании "разделяемая" - это по-Вашему тоже "фейковая"?
Но, возможно, какие-то версии винды после энумерации просмотрят списки конечных точек на предмет пересечения, и тогда - печаль:boredom:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 часа назад, Arlleex сказал:

Но, возможно, какие-то версии винды после энумерации просмотрят списки конечных точек на предмет пересечения, и тогда - печаль:boredom:

Тут есть некоторое наше общее недопонимание. Если я правильно помню - в посылках этой контрольной точки есть параметр "интерфейс", т.е. к какому из интерфейсов данное сообщение относится, что подразумевает возможность работы одной контрольной точки на несколько интерфейсов. Но с другой стороны, на каждый виртуальный порт вешается свой драйвер и может ли второй драйвер подцепиться к контрольной точке, к которой уже подключен другой драйвер - вопрос.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Плохо работающий компорт был в случае фэйковой. Как и в случае отсутствующей (что Вы подтвердили).
Разделяемую не пробовал. Для экономии с отдельными EP в STM32 делал общую память для INTERRUPT EP

 

20 minutes ago, Сергей Борщ said:

Если я правильно помню - в посылках этой контрольной точки есть параметр "интерфейс"

Откуда... Нету. Интерфейсы есть только для разбора пакетов по EP0

Изменено пользователем GenaSPB

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

12 часов назад, GenaSPB сказал:

Откуда... Нету. Интерфейсы есть только для разбора пакетов по EP0

Стандарт с вами не согласен:

Цитата

Universal Serial Bus Class Definitions for Communications Devices
Revision 1.2 (Errata 1)
November 3, 2010

Communications Class Interface

....

Notification elements pass messages via an interrupt or bulk endpoint, using a standardized format. Messages are formatted as a standardized 8-byte header, followed by a variable-length data field. The header identifies the kind of notification, and the interface associated with the notification; it also indicates the length of the variable length portion of the message.

И я тоже оговорился. Не "контрольной точки", а "конечной точки", конечно же.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Осталось чтобы кто-то проверид работу shared ендпоинтов... или хотя бы то, что они не мешают.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

7 часов назад, GenaSPB сказал:

Осталось чтобы кто-то проверид работу shared ендпоинтов... или хотя бы то, что они не мешают.

Относительно недавно я писал о результатах. Проверяли на двух компах с десятками, и на моем домашнем с семеркой - полет нормальный. Но этого мало, нужен больший охват подопытных.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...