Dron_Gus 2 16 мая, 2017 Опубликовано 16 мая, 2017 · Жалоба Добрый день. Есть задачка под STM32407 на FS порту (3 in EP + 3 out EP + EP0) сделать два или даже лучше три последовательных порта. И чтобы работало без самописных драйверов. Т.е. композитное устройство из... 1. CDC ACM в классическом варианте "не влезает", т.к. используется 1 Bulk in + 1 Bulk out + 1 Interrupt EP. Покурил стандарт - Interrupt EP опциональная. Т.е. вроде как хватит и двух EP на интерфейс. Но тут же наступил на грабли - линуксовый драйвер такие устройства отфутболивает. Подавай ему Interrupt EP на Control Interface или иди нафиг. 2. Под линуксом можно использовать кого-нить из http://elixir.free-electrons.com/linux/lat...vers/usb/serial , например http://elixir.free-electrons.com/linux/lat...erial/generic.c но непонятно как он будет работать под виндами. Чужой драйвер подтягивать не хочется. Может есть у кого какие-то идеи? Можно ли заиспользовать одну Interrupt EP в двух интерфейсах? Вроде как нет. Один Control Interface к двум Data Interface в CDC тоже не прицепить. В общем приветствуются любые идеи. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GenaSPB 11 16 мая, 2017 Опубликовано 16 мая, 2017 (изменено) · Жалоба Один Control Interface к двум Data Interface в CDC не стоит делать. он не занимает ендпоинтов. Вот вам образец как делается два например CDC. Целиком проект тут https://188.134.5.254/browser/trunk Отсутствие Interrupt endpoint мешает работать под windows xp и 7-кой. под W10 работает. 192_kHz_descriptor.pdf usb.zip Изменено 16 мая, 2017 пользователем Genadi Zawidowski Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Dron_Gus 2 16 мая, 2017 Опубликовано 16 мая, 2017 · Жалоба Один Control Interface к двум Data Interface в CDC не стоит делать. он не занимает ендпоинтов. Вот вам образец как делается два например CDC. Целиком проект тут https://188.134.5.254/browser/trunk Отсутствие Interrupt endpoint мешает работать под windows xp и 7-кой. под W10 работает. Большое спасибо за информацию! Исходники изучу подробно вечером. К сожалению отсутствие Interrupt Endpoint мешает работать и под Linux http://elixir.free-electrons.com/linux/v4....cdc-acm.c#L1287 . Кто-то решил "исправить" https://lkml.org/lkml/2012/9/9/192 . Для меня Линукс основная ОС. Для себя то я могу это поправить, но не будешь же это обьяснять другим пользвателям. Семерка и ХР, я думаю, мало у кого остались. Но все же хочется иметь более-менее беспроблемный вариант. Видимо не зря со всякими FreeRTOS и ChibiOS идут примеры с Int EP, хотя никаких уведомлений через нее не ходит. Если задать несколько конфигураций. Предположим первая: CDC + CDC + CDC без Int EP, а вторая: CDC с Int EP ("резервный" вариант), будет ли операционная система перебирать конфигурации пока не найдет устраивающую ее? Не совсем понимаю механизм переключения конфигураций. Или, может быть, можно как-то со стороны устройства определить тип ОС? Хотя что-то сомневаюсь. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlexRayne 7 16 мая, 2017 Опубликовано 16 мая, 2017 · Жалоба А встречал кто нибудь реализацию виртуального хаба? чтобы через его интерфейс можно было цеплять произвольное количество девайсов? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GenaSPB 11 16 мая, 2017 Опубликовано 16 мая, 2017 · Жалоба я ендпоинты нотификационные назначал на несуществующие номера. На один всех нельзя. Увидите в исходниках. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Dron_Gus 2 16 мая, 2017 Опубликовано 16 мая, 2017 · Жалоба А встречал кто нибудь реализацию виртуального хаба? чтобы через его интерфейс можно было цеплять произвольное количество девайсов? Сомневаюсь что такое возможно. У каждого устройства есть адресс. Чтобы эмулировать несколько надо откликаться на несколько. Я такого не видел. я ендпоинты нотификационные назначал на несуществующие номера. На один всех нельзя. Увидите в исходниках. Спасибо. Т.е. девайс будет слать NACK при обращении к ним? И все будет как бы верно? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GenaSPB 11 16 мая, 2017 Опубликовано 16 мая, 2017 (изменено) · Жалоба Насчет альтернативных конфигураций в CDC кажется и не предполагается... Т.е. девайс будет слать NACK при обращении к ним? И все будет как бы верно? Девайс не может слать NAK с отсутствующего EP, там таймаут просто... хотя надо смотреть, у меня уже не работает usblyzer. Критерий что все нормально - если работает через USB HUB, многие вещи допустимые при прямом соединении не работают через HUB. Кстати, у F7 endpoints больше чем у F4 ps: в питере можно и лично повидаться. Изменено 16 мая, 2017 пользователем Genadi Zawidowski Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Dron_Gus 2 16 мая, 2017 Опубликовано 16 мая, 2017 · Жалоба Насчет альтернативных конфигураций в CDC кажется и не предполагается... Девайс не может слать NAK с отсутствующего EP, там таймаут просто... хотя надо смотреть, у меня уже не работает usblyzer. Критерий что все нормально - если работает через USB HUB, многие вещи допустимые при прямом соединении не работают через HUB. Кстати, у F7 endpoints больше чем у F4 ps: в питере можно и лично повидаться. Я имел в виду конфигурации устройства. Те что в Configuration Descriptor. Обычно он один, не очень представляю логику хоста по выбору из нескольких. Надо будет почитать спеку, что же делает девайс если нет контрольной точки. Вроде как Int точки опрашиваются с заданным интервалом. Расточительно ждать таймаут. А вообще красивое решение. :) Да. Про Ф7 знаю. И про HS порт у 407го. Но таковы реалии проекта. Кстати вот этого http://rusefi.com Может быть осилю свою версию с STM32F7xx, но пока на стадии рисования железа завис. Можно. Раньше вроде были какие-то встречи посетителей electronix.ru . Потом я лет так на 5 выпал. Ну в любом случае с меня пиво! :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Dron_Gus 2 24 мая, 2017 Опубликовано 24 мая, 2017 · Жалоба Вроде заработало под Линуксом. Правда если включить отладочную информацию от модуля cdc_acm то он сыплет ошибками по несузествующим EP. Но на работу не влияет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться