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

 
 
 
Reply to this topicStart new topic
> Composite CDC ACM, два виртуальных сериальника при недостатке EP
Dron_Gus
сообщение May 16 2017, 08:40
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 202
Регистрация: 9-01-05
Из: Санкт-Петербург
Пользователь №: 1 861



Добрый день.

Есть задачка под 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 тоже не прицепить.

В общем приветствуются любые идеи.


--------------------
Если сверху смотреть, то сбоку кажется, что снизу ничего не видно.
Go to the top of the page
 
+Quote Post
Genadi Zawidowsk...
сообщение May 16 2017, 09:20
Сообщение #2


Профессионал
*****

Группа: Участник
Сообщений: 1 544
Регистрация: 22-06-07
Из: Санкт-Петербург, Россия
Пользователь №: 28 634



Один Control Interface к двум Data Interface в CDC не стоит делать. он не занимает ендпоинтов.

Вот вам образец как делается два например CDC.

Целиком проект тут
https://188.134.5.254/browser/trunk

Отсутствие Interrupt endpoint мешает работать под windows xp и 7-кой. под W10 работает.

Сообщение отредактировал Genadi Zawidowski - May 16 2017, 09:24
Прикрепленные файлы
Прикрепленный файл  192_kHz_descriptor.pdf ( 460.7 килобайт ) Кол-во скачиваний: 23
Прикрепленный файл  usb.zip ( 86.49 килобайт ) Кол-во скачиваний: 14
 
Go to the top of the page
 
+Quote Post
Dron_Gus
сообщение May 16 2017, 10:27
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 202
Регистрация: 9-01-05
Из: Санкт-Петербург
Пользователь №: 1 861



Цитата(Genadi Zawidowski @ May 16 2017, 12:20) *
Один 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 ("резервный" вариант), будет ли операционная система перебирать конфигурации пока не найдет устраивающую ее? Не совсем понимаю механизм переключения конфигураций.

Или, может быть, можно как-то со стороны устройства определить тип ОС? Хотя что-то сомневаюсь.


--------------------
Если сверху смотреть, то сбоку кажется, что снизу ничего не видно.
Go to the top of the page
 
+Quote Post
AlexRayne
сообщение May 16 2017, 11:53
Сообщение #4


Местный
***

Группа: Участник
Сообщений: 282
Регистрация: 27-09-07
Пользователь №: 30 877



А встречал кто нибудь реализацию виртуального хаба? чтобы через его интерфейс можно было цеплять произвольное количество девайсов?
Go to the top of the page
 
+Quote Post
Genadi Zawidowsk...
сообщение May 16 2017, 13:18
Сообщение #5


Профессионал
*****

Группа: Участник
Сообщений: 1 544
Регистрация: 22-06-07
Из: Санкт-Петербург, Россия
Пользователь №: 28 634



я ендпоинты нотификационные назначал на несуществующие номера. На один всех нельзя. Увидите в исходниках.
Go to the top of the page
 
+Quote Post
Dron_Gus
сообщение May 16 2017, 13:19
Сообщение #6


Профессионал
*****

Группа: Свой
Сообщений: 1 202
Регистрация: 9-01-05
Из: Санкт-Петербург
Пользователь №: 1 861



Цитата(AlexRayne @ May 16 2017, 14:53) *
А встречал кто нибудь реализацию виртуального хаба? чтобы через его интерфейс можно было цеплять произвольное количество девайсов?

Сомневаюсь что такое возможно. У каждого устройства есть адресс. Чтобы эмулировать несколько надо откликаться на несколько. Я такого не видел.

Цитата(Genadi Zawidowski @ May 16 2017, 16:18) *
я ендпоинты нотификационные назначал на несуществующие номера. На один всех нельзя. Увидите в исходниках.

Спасибо. Т.е. девайс будет слать NACK при обращении к ним? И все будет как бы верно?


--------------------
Если сверху смотреть, то сбоку кажется, что снизу ничего не видно.
Go to the top of the page
 
+Quote Post
Genadi Zawidowsk...
сообщение May 16 2017, 13:19
Сообщение #7


Профессионал
*****

Группа: Участник
Сообщений: 1 544
Регистрация: 22-06-07
Из: Санкт-Петербург, Россия
Пользователь №: 28 634



Насчет альтернативных конфигураций в CDC кажется и не предполагается...
Цитата
Т.е. девайс будет слать NACK при обращении к ним? И все будет как бы верно?

Девайс не может слать NAK с отсутствующего EP, там таймаут просто... хотя надо смотреть, у меня уже не работает usblyzer. Критерий что все нормально - если работает через USB HUB, многие вещи допустимые при прямом соединении не работают через HUB.

Кстати, у F7 endpoints больше чем у F4
ps: в питере можно и лично повидаться.

Сообщение отредактировал Genadi Zawidowski - May 16 2017, 13:24
Go to the top of the page
 
+Quote Post
Dron_Gus
сообщение May 16 2017, 15:07
Сообщение #8


Профессионал
*****

Группа: Свой
Сообщений: 1 202
Регистрация: 9-01-05
Из: Санкт-Петербург
Пользователь №: 1 861



Цитата(Genadi Zawidowski @ May 16 2017, 16:19) *
Насчет альтернативных конфигураций в CDC кажется и не предполагается...

Девайс не может слать NAK с отсутствующего EP, там таймаут просто... хотя надо смотреть, у меня уже не работает usblyzer. Критерий что все нормально - если работает через USB HUB, многие вещи допустимые при прямом соединении не работают через HUB.

Кстати, у F7 endpoints больше чем у F4
ps: в питере можно и лично повидаться.

Я имел в виду конфигурации устройства. Те что в Configuration Descriptor. Обычно он один, не очень представляю логику хоста по выбору из нескольких.
Надо будет почитать спеку, что же делает девайс если нет контрольной точки. Вроде как Int точки опрашиваются с заданным интервалом. Расточительно ждать таймаут. А вообще красивое решение. sm.gif
Да. Про Ф7 знаю. И про HS порт у 407го. Но таковы реалии проекта. Кстати вот этого http://rusefi.com Может быть осилю свою версию с STM32F7xx, но пока на стадии рисования железа завис.
Можно. Раньше вроде были какие-то встречи посетителей electronix.ru . Потом я лет так на 5 выпал. Ну в любом случае с меня пиво! sm.gif


--------------------
Если сверху смотреть, то сбоку кажется, что снизу ничего не видно.
Go to the top of the page
 
+Quote Post
Dron_Gus
сообщение May 24 2017, 09:11
Сообщение #9


Профессионал
*****

Группа: Свой
Сообщений: 1 202
Регистрация: 9-01-05
Из: Санкт-Петербург
Пользователь №: 1 861



Вроде заработало под Линуксом. Правда если включить отладочную информацию от модуля cdc_acm то он сыплет ошибками по несузествующим EP. Но на работу не влияет.


--------------------
Если сверху смотреть, то сбоку кажется, что снизу ничего не видно.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 25th November 2017 - 00:35
Рейтинг@Mail.ru


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