Не надо делать мне как лучше, оставьте мне как хорошо
-
- В принципе, CDC без interrupt живёт. Так что, один контрол и 4 CDC
должно получиться. - VladislavS.(28.12.2021 18:42)
- Т.к. хочется и еще что-нибудь, кроме 4-х UART, то оставлю такой вариант на крайний случай. - LightElf(28.12.2021 18:44)
- Тащемта, похоже MOXA UPort имеет правильный протокол (все 16 портов по одной паре эндпоинтов) - LightElf(28.12.2021 18:21)
- Я когда-то, прикидывал возможность прикинуться хабом и эмулировать запросы/ответы к нескольким устройствам. Но дальше мечтаний дело не продвинулось. - BlackMorda(26.12.2021 12:21)
- Нельзя. Берите камень с большим чмслом endpoints. - Costic(26.12.2021 12:05)
- А если очень хочется? :-) CDC не выйдет, выбираю чего-нибудь другое - LightElf(26.12.2021 13:57)
- Думаю, 3 шт. HID можно. Или 1 HID со скоростью х3. Costic(69 знак., 26.12.2021 15:39)
- ТЗ несколько скорректировал. Не обязательно CDC, можно любой USB UART, имеющий дрова в мейнлайновом линуксе. Завтра посмотрю в протокол FTDI и подобных, может кто умеет гонять несколько портов по одному эндпоинту. Потому как отдавать под UART-ы все эндпоинты жаба душит. В процике слишком много вкусного. - LightElf(26.12.2021 16:51)
- Думаю, 3 шт. HID можно. Или 1 HID со скоростью х3. Costic(69 знак., 26.12.2021 15:39)
- А если очень хочется? :-) CDC не выйдет, выбираю чего-нибудь другое - LightElf(26.12.2021 13:57)
- Я бы делал составное устройство, эмулирующее четыре ftdi
устройства. У них по протоколу один нулевой эндпоинт и два bulk. В
вашем случае нулевой плюс четыре двунаправленных балка. Протокол
смотрите по ссылке Ozelot(1 знак., 25.12.2021 22:50, ссылка)
- Смотрю в эту сторону. Я правильно понимаю, что FT4232 все 4 порта
гоняет через одну пару эндпоинтов? - LightElf(26.12.2021 12:32)
- В ft4232 имеется четыре интерфейса, каждый из которых ассоциируется с одним уартом. Каждый интерфейс имеет в своем составе два эндпоинта, поэтому нужна нулевая(setup) точка и по две (bulkin и bulkout) на каждый интерфейс. Если в вашем контроллере один эндпоинт состоит из двух in и out точек, Ozelot(44 знак., 26.12.2021 15:56)
- Я давал ссылку на протокол ft232 - Ozelot(26.12.2021 15:19)
- Смотрю в эту сторону. Я правильно понимаю, что FT4232 все 4 порта
гоняет через одну пару эндпоинтов? - LightElf(26.12.2021 12:32)
- Однако 4 штуки USB-HID получается сделать. Почему? - Kceния(25.12.2021 16:57)
- HID использует два эндпоинта (interrupt in и interrupt out) или даже один (тогда out идёт через control). CDC по стандарту хочет три (bulk in, bulk out, interrupt in). CH579 имеет 5 двунаправленных эндпоинтов. Один по-любому уходит на control, остаётся только 4 пары in/out. Сделать честных 4x CDC не получается. Вот и ищу "быстро, качественно и дёшево" 😊 - LightElf(26.12.2021 17:10)
- Собственно задача выглядит так: есть линуховый контроллер, которому
не хватает всяких портов. Есть однокристаллка с USB, 4-мя UART-ами
и кучей всякого еще. Хочеццо прикрутить ее к оному линуховому
изделию без погружений в дебри линуховых драйверов. HID
задействовать можно, но в данном случае не очень желательно. - LightElf(25.12.2021 17:15)
- Если "однокристаллка с USB, 4-мя UART-ами и кучей всякого" это
CH579, имхо, логичнее задействоать ethernet. - Гyдвин(26.12.2021 10:05)
- Камень угадал :-) Но конкретно в этом случае нет свободных портов Ethernet. - LightElf(26.12.2021 12:36)
- Хаб купите :), заодно и число USB-портов расширите => Kceния(1 знак., 25.12.2021 17:24, ссылка)
- Хаб не поможет одному устройству выглядеть как 4 разных. - LightElf(25.12.2021 17:30)
- Тогда так => Kceния(1 знак., 25.12.2021 17:34, ссылка)
- Ну там как раз про то, почему 5-ти точек мало :) - LightElf(25.12.2021 17:55)
- А вам-то чем оно не гоже? Вы же именно 4 CDC устройства хотели -
так возьмите "однокристалку" с 16 endpoits. - Kceния(25.12.2021 18:03)
- На прерывания не хватает точек, а они могут быть нужны. Хотя
конечно вариант. Еще один вариант - прикинуться FT4232 ;) LightElf(123 знак., 25.12.2021 18:04 - 26.12.2021 17:12)
- Прерывание там всегда одно, от числа endpoits не зависит (по крайней мере, у STM32). - Kceния(25.12.2021 18:10)
- ещё можно посмотреть в сторону RNDIS - Vit(25.12.2021 18:08)
- Не, мне надо чтобы для софта все четыре порта выглядели как обычные
/ttys, иначе я бы просто (как обычно делаю) Custom HID бы запилил - LightElf(25.12.2021 18:15)
- а если портов а-ля ser2net накрутить к этому? - Vit(26.12.2021 10:02)
- Да, вариант. Спасибо - LightElf(26.12.2021 12:30)
- а если портов а-ля ser2net накрутить к этому? - Vit(26.12.2021 10:02)
- Не, мне надо чтобы для софта все четыре порта выглядели как обычные
/ttys, иначе я бы просто (как обычно делаю) Custom HID бы запилил - LightElf(25.12.2021 18:15)
- На прерывания не хватает точек, а они могут быть нужны. Хотя
конечно вариант. Еще один вариант - прикинуться FT4232 ;) LightElf(123 знак., 25.12.2021 18:04 - 26.12.2021 17:12)
- А вам-то чем оно не гоже? Вы же именно 4 CDC устройства хотели -
так возьмите "однокристалку" с 16 endpoits. - Kceния(25.12.2021 18:03)
- Ну там как раз про то, почему 5-ти точек мало :) - LightElf(25.12.2021 17:55)
- Тогда так => Kceния(1 знак., 25.12.2021 17:34, ссылка)
- Хаб не поможет одному устройству выглядеть как 4 разных. - LightElf(25.12.2021 17:30)
- Если "однокристаллка с USB, 4-мя UART-ами и кучей всякого" это
CH579, имхо, логичнее задействоать ethernet. - Гyдвин(26.12.2021 10:05)
- Маловато эндпоинтов будет Vit(2 знак., 25.12.2021 16:33, ссылка, картинка)
- Вот и я думаю, что маловато... Но "партия сказала: надо!". - LightElf(25.12.2021 16:49)
- А если сделать грязный хак - в дескрипторах для разных CDC указывать номера одних и тех-же Endpoint. По идее, хосту должно быть пофиг, он пришедшие данные будет раздавать по всем CDC, а отправляемые данные от разных CDC будет выдавать по одному Endpoint (как указано в дескрипторе). А потоки разделать как-нибудь на более верхнем уровне. - il-2(26.12.2021 08:38)
- Вот и я думаю, что маловато... Но "партия сказала: надо!". - LightElf(25.12.2021 16:49)
- В принципе, CDC без interrupt живёт. Так что, один контрол и 4 CDC
должно получиться. - VladislavS.(28.12.2021 18:42)