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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Адаптер USB to Ethernet
DiMonstr
сообщение Nov 17 2009, 13:02
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 81
Регистрация: 26-10-06
Из: Россия, Пенза
Пользователь №: 21 706



Посоветуйте путь наименьшего сопротивления реализации данного девайса.
Есть CY7C68013A, к нему подключена ПЛИС, которая висит на шине PCI процессора RDC R8610. Процессор имеет MAC-контроллер, который совместно с микросхемой физического уровня образует шину Fast Ethernet для подключения к локальной сетки.

Сначала была мысль использовать класс CDC Ethernet Emulation Model (EEM). Разбором пакетов EEM занимается RDC. А контроллер CY7C68013A по сути кладет данные в FIFO, а ПЛИС их забирает в режиме Master FIFO.

Потом наскочил на такую весчь, как Remote Network Driver Interface Specification (RNDIS). Спецификация обеспечивает поддержку сетевых устройств с различными шинами, в том числе и USB.

Есть ли принципиальные преимущества и недостатки этих спецификаций в сравнении. Хотелось бы пообщаться с теми, кто имеет опыт в этих делах. Какие подводные камни ожидают в первом и во-втором случае?
Go to the top of the page
 
+Quote Post
VslavX
сообщение Nov 17 2009, 14:02
Сообщение #2


embarrassed systems engineer
*****

Группа: Свой
Сообщений: 1 081
Регистрация: 24-10-05
Из: Осокорки
Пользователь №: 10 038



Цитата(DiMonstr @ Nov 17 2009, 15:02) *
Сначала была мысль использовать класс CDC Ethernet Emulation Model (EEM). Разбором пакетов EEM занимается RDC. А контроллер CY7C68013A по сути кладет данные в FIFO, а ПЛИС их забирает в режиме Master FIFO.

Считается, что по такому пути сделать устройство проще и оно будет более строго соответствовать спецификации USB. Единственный минус - я не смог найти штатного драйвера для Windows. Если кто-то сможет подсказать вариант - буду благодарен.

Цитата(DiMonstr @ Nov 17 2009, 15:02) *
Потом наскочил на такую весчь, как Remote Network Driver Interface Specification (RNDIS). Спецификация обеспечивает поддержку сетевых устройств с различными шинами, в том числе и USB.

RNDIS - сугубо майкрософтовская придумка, причем, изначально идея была гораздо шире чем только реализация сети по USB - там много интерфейсов перечислено - FireWire и прочие. Как я понял, на USB пока все и закончилось. Реализовать устройство немного сложнее, но, начиная с Windows 2000 есть штатный драйвер RNDIS для USB. Причем - есть где подсмотреть обмен и раскрыть недокументированные неясности - WinCE смартфоны и наладонники подключаются к ПК по RNDIS - это также внушает надежду что RNDIS поддерживаться будет еще долго. Начиная с Висты - драйвер сразу идет в комплекте - его не надо даже устанавливать специально.

Про "подводные камни" пока много не расскажу - сам только начал controlplane ковырять, но тут на форуме есть люди которые успешно RNDIS реализовали, думаю, если будет нужна консультация - помогут.
Go to the top of the page
 
+Quote Post
DiMonstr
сообщение Nov 18 2009, 14:28
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 81
Регистрация: 26-10-06
Из: Россия, Пенза
Пользователь №: 21 706



Цитата(VslavX @ Nov 17 2009, 17:02) *
Считается, что по такому пути сделать устройство проще и оно будет более строго соответствовать спецификации USB. Единственный минус - я не смог найти штатного драйвера для Windows. Если кто-то сможет подсказать вариант - буду благодарен.


А стандартный драйвер системы usbser.sys не реализует в себе работу с классом CDC Ethernet Emulation Model (EEM)?
Я полагаю, что EEM по спецификации является подклассом класса Communications Device Class. Значит драйвер для CDC также реализует поддержку EEM протокола.
Кто-нибудь проверял это?
Go to the top of the page
 
+Quote Post
chan
сообщение Nov 18 2009, 19:03
Сообщение #4


Участник
*

Группа: Свой
Сообщений: 68
Регистрация: 8-05-05
Пользователь №: 4 846



А почему не хотите воспользоваться аппаратным конвертером, например Realtek, или нужна обработка пакетов?
Go to the top of the page
 
+Quote Post
VslavX
сообщение Nov 18 2009, 19:53
Сообщение #5


embarrassed systems engineer
*****

Группа: Свой
Сообщений: 1 081
Регистрация: 24-10-05
Из: Осокорки
Пользователь №: 10 038



Цитата(DiMonstr @ Nov 18 2009, 16:28) *
Значит драйвер для CDC также реализует поддержку EEM протокола.
Кто-нибудь проверял это?

Маловероятно. Если драйвер это делал бы, то у него в теле файла ссылки на функции NDIS были бы, а таковых нет
Go to the top of the page
 
+Quote Post
DiMonstr
сообщение Nov 19 2009, 08:52
Сообщение #6


Частый гость
**

Группа: Свой
Сообщений: 81
Регистрация: 26-10-06
Из: Россия, Пенза
Пользователь №: 21 706



Цитата(chan @ Nov 18 2009, 22:03) *
А почему не хотите воспользоваться аппаратным конвертером, например Realtek, или нужна обработка пакетов?

Во-первых, планирую забацать композитный девайс, который будет включать два интерфейса: Mass Storage Device и CDC Ethernet Emulation Model. На счет второго правда сейчас неясности со стандартным драйвером в винде. Есть он или нет? Альтернативный вариант заюзать механизм обмена через USB с локальной сеткой по спецификации Remote NDIS.
Во-вторых, пакеты будет разбирать ПЛИС и направлять их либо в сеть ethernet либо на USB флэшку.


Цитата(VslavX @ Nov 18 2009, 22:53) *
Маловероятно. Если драйвер это делал бы, то у него в теле файла ссылки на функции NDIS были бы, а таковых нет

Хренова crying.gif
А кроме спецификации RNDIS и CDC EEM есть ещё варианты сделать сетевое устройство USB с использованием стандартного драйвера?
Go to the top of the page
 
+Quote Post
Itch
сообщение Nov 19 2009, 08:59
Сообщение #7


Местный
***

Группа: Свой
Сообщений: 348
Регистрация: 27-06-06
Из: Новосибирск
Пользователь №: 18 410



Готовое устройство стоит примерно 8$, есть смысл его разрабатывать заново?
Go to the top of the page
 
+Quote Post
VslavX
сообщение Nov 19 2009, 09:12
Сообщение #8


embarrassed systems engineer
*****

Группа: Свой
Сообщений: 1 081
Регистрация: 24-10-05
Из: Осокорки
Пользователь №: 10 038



Цитата(DiMonstr @ Nov 19 2009, 10:52) *
А кроме спецификации RNDIS и CDC EEM есть ещё варианты сделать сетевое устройство USB с использованием стандартного драйвера?

Еще рассматривался вариант эмуляции какого-нибудь готового USB->EMAC чипа, типа MosCHIP MCS7830. И драйвера к нему есть, и даже программа адаптации для OEM-производителей - можно свои названия в драйвер прикрутить. Но мне показалось, что там возни больше чем с RNDIS.
Go to the top of the page
 
+Quote Post
Genadi Zawidowsk...
сообщение Jan 8 2017, 18:45
Сообщение #9


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

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



Цитата(VslavX @ Nov 17 2009, 17:02) *
Считается, что по такому пути сделать устройство проще и оно будет более строго соответствовать спецификации USB. Единственный минус - я не смог найти штатного драйвера для Windows. Если кто-то сможет подсказать вариант - буду благодарен.


И Вот наступил 17-й год...

Выяснилось, что W10 поддерживает CDC EEM (но не CDC ECM) и CDC ACM последовательные порты "из коробки".

Сообщение отредактировал Genadi Zawidowski - Jan 8 2017, 19:06
Эскизы прикрепленных изображений
Прикрепленное изображение
Прикрепленное изображение
 

Прикрепленные файлы
Прикрепленный файл  usblyzer_output.pdf ( 398.06 килобайт ) Кол-во скачиваний: 16
 
Go to the top of the page
 
+Quote Post
Genadi Zawidowsk...
сообщение Jan 10 2017, 00:40
Сообщение #10


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

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



Есть проблема...
В составном устройстве (CDC ACM + CDC EEM) все нормально. По одиночке все варианты (IAD + звук, пара CDC, ECM без драйвера) опознаются нормально.
CDC EEM в одиночку говорит что не может запуститься, необработанных запросов по EP0 нет (кроме device qualifier, но и это не помогает). При этом составное устройство (в ветке device manager-а USB Controllers) не появляется, в отличии от всех остальных случаев.
Наличие/отсутствие Interface Association Descriptor в функции на поведение не влияет. Если CDC EEM стоит первым в "компании" с чем-то другим, тоже всё работает. Не работает в одиночку.
Что-нибудь сказать можно? Вот дамп дескрипторов.

Сообщение отредактировал Genadi Zawidowski - Jan 10 2017, 02:31
Прикрепленные файлы
Прикрепленный файл  descriptor.pdf ( 321.55 килобайт ) Кол-во скачиваний: 10
 
Go to the top of the page
 
+Quote Post
Genadi Zawidowsk...
сообщение Jan 10 2017, 02:24
Сообщение #11


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

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



err

Сообщение отредактировал Genadi Zawidowski - Jan 10 2017, 02:28
Go to the top of the page
 
+Quote Post
controller_m30
сообщение Jan 10 2017, 05:31
Сообщение #12


Местный
***

Группа: Участник
Сообщений: 254
Регистрация: 24-02-09
Пользователь №: 45 309



Цитата(Genadi Zawidowski @ Jan 10 2017, 03:40) *
Вот дамп дескрипторов.

Приложите ещё дескрипторы комбинированного устройства, и других устройств по отдельности, которые нормально распознаются. В общем все остальные варианты дескрипторов, для сличения между собой.

Ещё вопрос. Движок энумерации универсальный - на все случаи жизни, или же изначально он работал только с одним из устройств, которые комбинируются?
Go to the top of the page
 
+Quote Post
Genadi Zawidowsk...
сообщение Jan 10 2017, 09:12
Сообщение #13


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

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



Универсальный. Дамп комбинированного устройства выше приложен. Работают все варианты (разумеется, речь об енумерации, на все варианты ендпоинтов не хватит). И по одному все. Только CDC EEM такой особенный...
Вот исходники в аттачменте, если что отсюда https://188.134.5.254/browser/hfreceiver/tr...bd_desc.c#L1576 - смотреть со строки 1576.
Не, с длинами в дескрипторах всё решено, дескрипторы создаются с автоматическим подсчётом размеров.

Сообщение отредактировал Genadi Zawidowski - Jan 10 2017, 09:17
Прикрепленные файлы
Прикрепленный файл  usbd_desc.zip ( 12.53 килобайт ) Кол-во скачиваний: 6
 
Go to the top of the page
 
+Quote Post
Genadi Zawidowsk...
сообщение Jan 10 2017, 10:20
Сообщение #14


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

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



Может существует у кого-нибудь дескриптор устройства с единственным CDC EEM, которое (устройство) нормально работает? Например какой-нибудь USB dongle..
Go to the top of the page
 
+Quote Post
controller_m30
сообщение Jan 10 2017, 10:50
Сообщение #15


Местный
***

Группа: Участник
Сообщений: 254
Регистрация: 24-02-09
Пользователь №: 45 309



Я нашёл два отличия в дампах для комбинированного устройства, и для единственного.
1. Для единственного устройства в "Device Descriptor", там где ссылки на строковые дескрипторы (смещ. 14,15,16) - не показаны строки, на которые идёт ссылка. Может их нет в списке дескрипторов?
А у комбинированного устройства, строчки в этих позициях показаны... Может это что-то значит?
Если винда не находит строковые дескрипторы, когда они должны быть - она энумерацию не закончит. Или там нужно нолики поставить, или проверить наличие строковых дескрипторов с номерами 01, 02, 03.

2. Единственное устройство работает с EP1 (In/Out), а комбинированное с EP2 (тоже In/Out). Посмотрите, может программа единственного устройства не сконфигурировала EP1, а по прежнему конфигурирует EP2? Или не сами EndPoint-ы, а их прерывания не сконфигурированны (должны быть разрешены EP1, а разрешено EP2).

Сообщение отредактировал controller_m30 - Jan 10 2017, 10:50
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 29th March 2017 - 15:11
Рейтинг@Mail.ru


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