DiMonstr 0 12 октября, 2009 Опубликовано 12 октября, 2009 (изменено) · Жалоба Дайте пожалуйста консультацию по применению 32-разрядного контроллера MICROCHIP с поддержкой USB 2.0 OTG. Суть задачи: наобходимо реализовать интеллектуальный 4-х портовый хаб, который может определять с каким VID и PID подключено USB-устройство и если в списке разрешенных устройство отсутствует, то запретить его работу. Предполагаемая структура устройства: PC-HOST <=> PIC32MX440F128H (в режиме device) <=> Parallel Interface <=> PIC32MX440F128H (в режиме HOST) <=> HUB <=> Mouse, Printer, Keyboard, Scaner. Интерфейс между двумя контроллерами PIC - параллельный PMP. Нужно реализовать между двумя контроллерами PIC транзитную передачу пакетов от хоста ПК к хабу и на этапе инициализации устройства подключенного к хабу на шине USB компьютера, контроллер PIC должен сравнивать поля VID и PID в дескрипторе устройства. Возможно ли решить такую задачу с программной точки зрения на контроллере PIC? Изменено 12 октября, 2009 пользователем DiMonstr Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 68 12 октября, 2009 Опубликовано 12 октября, 2009 · Жалоба Возможно ли решить такую задачу с программной точки зрения на контроллере PIC? Нет. Есть несколько путей решения вашей задачи: 1. Поставить FPGA, которая будет парсить поток между хостом и хабом (или, как вариант, сама являться хабом). 2. Поставить МК с хостом, который будет проверять VID/PID устройства перед подключением к "настоящему" хосту. 3. Следить за VID/PID программно со стороны хоста. ИМХО, если нужно именно аппаратное решение, то вариант 2 является наиболее простым. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
evc 0 13 октября, 2009 Опубликовано 13 октября, 2009 · Жалоба Нет... Почему бы нет? PIC32MX440F128H (в режиме HOST) и есть МК с хостом. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DiMonstr 0 13 октября, 2009 Опубликовано 13 октября, 2009 (изменено) · Жалоба ...ИМХО, если нужно именно аппаратное решение, то вариант 2 является наиболее простым. Почему нет??? К варианту №2 и подходит контроллер PIC32MX440F128H. Получится организовать транзитную передачу пакетов??? Одним из первых вариантов было применение контроллера USB фирмы Cypress семейства EZ-HOSTс двумя модулями SIE. Там можно было закольцевать обмен транзакциями между SIE1 и SIE2. Первый настроить как Device, а второй как Host. Но не судьба - их очень тяжело купить:((( Кто-нибудь работал с этим каменем? Изменено 13 октября, 2009 пользователем DiMonstr Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 68 13 октября, 2009 Опубликовано 13 октября, 2009 · Жалоба Спецификацию почитали бы что-ли. Ну как Вы собираетесь девайсом хаб изображать, а? Вариант 2 предполагает использование аналоговых ключей для коммутации, а не "транзитную передачу пакетов" силами контроллера. И да, любой МК с хостом в этом случае годится, в т.ч. PIC. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DiMonstr 0 13 октября, 2009 Опубликовано 13 октября, 2009 (изменено) · Жалоба Спецификацию почитали бы что-ли. Ну как Вы собираетесь девайсом хаб изображать, а? Да Вы не поняли. В качестве хаба будет отдельный полностью аппаратный хаб контроллер (например, ISP1520). Восходящий порт предполагается подключить к контроллеру PIC32MX440F128H в режиме хост. К ПК предполагается подключить второй контроллер PIC32MX440F128H в режиме функция. Два контроллера потому, что сложно достать контроллер с двумя портами USB, настраиваемых либо как хост либо функция или OTG. Ну а дальше не буду повторяться. Этот механизм называется "виртуализация". Вариант 2 предполагает использование аналоговых ключей для коммутации, а не "транзитную передачу пакетов" силами контроллера. И да, любой МК с хостом в этом случае годится, в т.ч. PIC. А каким образом Вы предлагаете применить аналоговый ключ? Что будет представлять из себя логика работы устройства? Изменено 13 октября, 2009 пользователем DiMonstr Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 68 13 октября, 2009 Опубликовано 13 октября, 2009 · Жалоба Этот механизм называется "виртуализация". И Вы готовы наворотить гору весьма сложного софта для контроллеров и драйверов со стороны хоста? А каким образом Вы предлагаете применить аналоговый ключ? Что будет представлять из себя логика работы устройства? Устройство получается очень простое: Ставим стандартную ИС хаба, внешние разъемы через мультиплексоры могут быть подключены либо к соответствующим портам хаба, либо к порту микроконтроллера. При подключении нового устройства сначала при помощи МК смотрим VID/PID, затем, если они относятся к числу разрешенных, коммутируем устройство на хаб. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlexandrY 3 13 октября, 2009 Опубликовано 13 октября, 2009 · Жалоба PIC-и никак не пойдут. А вот это устройство сможет сделать то что вам надо. http://www.alylab.eu/OpenProjects/ARMUltimator2/ARMU2.htm В i.MX27 есть специальный режим на USB прозрачного перенаправления с одного USB порта на другой и при этом процессор может слушать обмен. В случае чего запрещенного берет и глушит обмен. Ну и FPGA на крайний случай может помочь. Простым контроллером USB-дивайса никакого процессора очевидно не сделать чисто эмуляцию восходящего порта хаба. И потому что в шине USB часто валит полный поток даже когда никто из дивайсов ничего не передает. И потому что контроллер процессора чтобы понять что ему передают должен принять пакет т.е. в USB от него всегда уйдет ACK, а очень часто надо и NAK передавать, и это еще не касаясь синхронизации и прочих жестких таймингов. Дайте пожалуйста консультацию по применению 32-разрядного контроллера MICROCHIP с поддержкой USB 2.0 OTG. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DiMonstr 0 14 октября, 2009 Опубликовано 14 октября, 2009 · Жалоба И Вы готовы наворотить гору весьма сложного софта для контроллеров и драйверов со стороны хоста? Конечно нет! Поэтому и ищу другие варианты решения этой задачи. Устройство получается очень простое... Я накидал структурную схемку на бумажке. Что получилось - на фотке во вложении. Правильно ли я думаю, что в этом случае необходимо будет реализовать следующие функции: 1) управление мультиплексорами; 2) контроллер должен определять к какому порту USB подключили (отключили) девайс и подключать его к себе управляя двумя мультиплексорами. Тут два варианта: либо с помощью хаба, либо дополнительной микросхемы; 3) контроллер должен уметь запрашивать дескриптор устройства и дескриптор серийного номера; Если это так, то получается действительно очень просто:) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 68 14 октября, 2009 Опубликовано 14 октября, 2009 · Жалоба 2) контроллер должен определять к какому порту USB подключили (отключили) девайс и подключать его к себе управляя двумя мультиплексорами. Тут два варианта: либо с помощью хаба, либо дополнительной микросхемы; Достаточно и одного мультиплексора - выходы, идущие к контроллеру, вполне можно и запараллелить. Управлять однозначно от контроллера, плюс от хаба нужно будет получать статус подключения устройства. Если это так, то получается действительно очень просто:) Ну, как мы знаем, дьявол скрывается в деталях. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться