Kruftin 0 25 июля, 2013 Опубликовано 25 июля, 2013 (изменено) · Жалоба Здравствуйте! Не подскажете как должно происходить подтверждение данных отправленных device устройством на хост. Т.е. хост прислал запрос на дескриптор устройства, далее необходимо послать этот дескриптор. Так вот вопрос: хост отвечает ACK на каждый байт принятый от устройства или только на весь дескриптор? Т.е. получил я от хоста 00 00 80 06 00 01 00 00 40, что по байтам мне ему послать, т.е. сразу начать посылку элементов дескриптора? Изменено 25 июля, 2013 пользователем Kruftin Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Serg_Sm 0 25 июля, 2013 Опубликовано 25 июля, 2013 · Жалоба Здравствуйте! Не подскажете как должно происходить подтверждение данных отправленных device устройством на хост. Т.е. хост прислал запрос на дескриптор устройства, далее необходимо послать этот дескриптор. Так вот вопрос: хост отвечает ACK на каждый байт принятый от устройства или только на весь дескриптор? Т.е. получил я от хоста 00 00 80 06 00 01 00 00 40, что по байтам мне ему послать, т.е. сразу начать посылку элементов дескриптора? Я думаю Вам более подробно следует изучить стандарт USB. Много книг на эту тему, если нет желания первоисточник читать. Хост отвечает ACK на правильно принятый пакет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Kruftin 0 25 июля, 2013 Опубликовано 25 июля, 2013 · Жалоба Я Агурова итак читаю. В процессоре имеется регистр передачи конечной точки, который вмещает один байт и глубиной 64 байта. Т.е. под пакетом как я понимаю и подразумевается посылка одного байта. Все данные передаются через нулевую конечную точку. И ещё вопрос должен ли USB сниффер ловить все передачи с устройства? Распишу подробнее алгоритм: 1)включил usb контроллер 2)выставил в каждой конечной точке включение и готовность конечной точки к ответу на запрос 3)глобально разрешил работы конечных точек, задал скорость 1,5 Мбит/с 4)дождался выставления бита завершения транзакции, считал последовательно байты от хоста после каждого чтения дожидаясь выставления бита завершения транзакции. 5)после получения запроса - конфигурационного пакета начинаю посылать данные к хосту, пробовал послать и по 1 байту и несколько - безрезультатно. Подскажите кто пользовался процессорами с USB какой там порядок посылки ответного дескриптора. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Serg_Sm 0 26 июля, 2013 Опубликовано 26 июля, 2013 · Жалоба Я Агурова итак читаю. В процессоре имеется регистр передачи конечной точки, который вмещает один байт и глубиной 64 байта. Т.е. под пакетом как я понимаю и подразумевается посылка одного байта. Все данные передаются через нулевую конечную точку. И ещё вопрос должен ли USB сниффер ловить все передачи с устройства? Распишу подробнее алгоритм: 1)включил usb контроллер 2)выставил в каждой конечной точке включение и готовность конечной точки к ответу на запрос 3)глобально разрешил работы конечных точек, задал скорость 1,5 Мбит/с 4)дождался выставления бита завершения транзакции, считал последовательно байты от хоста после каждого чтения дожидаясь выставления бита завершения транзакции. 5)после получения запроса - конфигурационного пакета начинаю посылать данные к хосту, пробовал послать и по 1 байту и несколько - безрезультатно. Подскажите кто пользовался процессорами с USB какой там порядок посылки ответного дескриптора. Для начала в каком "процессоре" имеется регистр передачи конечной точки? Нулевой эндпойнт размером от 8/64 байта обычно. Загрузка данных в очередь может происходить последовательно, но вот выдаются они на шину USB все разом. По снифферу - они разные есть. Обычно ловят далеко не всё. Если много возни с USB устройствами желательно иметь аппаратный анализатор - включается в разрыв шины и ловит всё. По алгоритму - данные хосту передаются только с запроса самого хоста. Хост всегда мастер (on the go и прочие надстройки не рассматриваем). Сначала, в процеесе энумерации, нужно правильно передать хосту все дескрипторы, а потом уже хостом требовать или посылать данные устройству. Причем посылать устройством нужно определенный размер данных (всё прописывается на этапе энумерации), иначе хост их проигнорирует. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Kruftin 0 26 июля, 2013 Опубликовано 26 июля, 2013 · Жалоба Т.е. получил я от хоста 00 00 80 06 00 01 00 00 40 этим хост запрашивает GET_DESCRIPTOR_DEVICE и указывает что хост хочет увидеть 0x40, т.е. 64 байта дескриптора. Дескриптор устройства + Дескриптор Конфигурации + Дескриптор строки не дадут 64 байта, хотя может это максимальный размер. Ну т.е по логике после запроса хоста я просто сразу же кидаю ему все дескрипторы и после этого анализирую завершение транзакции и всё жду когда он определит моё устройство как флешку. Аппаратный анализатор наверно дорого стоит. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Serg_Sm 0 31 июля, 2013 Опубликовано 31 июля, 2013 · Жалоба Т.е. получил я от хоста 00 00 80 06 00 01 00 00 40 этим хост запрашивает GET_DESCRIPTOR_DEVICE и указывает что хост хочет увидеть 0x40, т.е. 64 байта дескриптора. Дескриптор устройства + Дескриптор Конфигурации + Дескриптор строки не дадут 64 байта, хотя может это максимальный размер. Ну т.е по логике после запроса хоста я просто сразу же кидаю ему все дескрипторы и после этого анализирую завершение транзакции и всё жду когда он определит моё устройство как флешку. Аппаратный анализатор наверно дорого стоит. Скорее хост передает 80 06 00 01 00 00 40 00. Он запрашивает только дескриптор устройства. Если control endpoint поддерживает 64-байтные пакеты, то устройство передает полностью пакет DESCRIPTOR_DEVICE (лишние байты в "0"). Если поддерживаются только 8-байтные пакеты, то после приема первых 8 байт хост знает размер дескриптора, рвет прием и заново запрашивает дескриптор уже нужного размера. На каждый дескриптор хост будет посылать запрос. Аппаратные анализаторы стоят от нескольких сотен до десятков тысяч $. PS: Советую посмотреть примеры обмена по USB - многие вопросы отпадут. Либо поискать описание обмена так, либо скачать прогу для аппаратного анализатора и посмотреть примеры (для этого железка не нужна). Например тут. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
gasga 0 28 сентября, 2013 Опубликовано 28 сентября, 2013 (изменено) · Жалоба 1. Хост подает команду сброса на порт, к которому подключено устройство. 2. Хост запрашивает дескриптор устройства, причем в запросе задает размер дескриптора 64 байта. 3. Хост принимает первые 8 байт дескриптора устройства, после чего подает команду сброса порта еще раз. 4. Хост присваивает устройству адрес с помощью запроса Set Address. 5. Хост снова считывает дескриптор устройства, причем в запросе указывается «правильный» размер дескриптора — 18 байт. 6. Хост запрашивает дескриптор конфигурации устройства, задавая в запросе размер дескриптора 9 байт, и извлекает из него значение полного размера списка дескрипторов. 7. Хост повторно запрашивает дескриптор конфигурации устройства и все сопутствующие ему дескрипторы, используя полученный размер списка. 8. Хост запрашивает дескрипторы строк, если они определены. Если какое-либо из устройств, подключенных к порту, является хабом, хост продолжает процесс настройки системы, поочередно опрашивая каждый порт хаба. Каждому найденному устройству хост присваивает адрес и задает конфигурацию по описанной выше схеме. Процесс конфигурирования продолжается, пока не будут настроены все хабы и подсоединенные к ним периферийные устройства с включенным питанием (выключенные устройства на запросы не отвечают, поэтому хост их «не видит»), В процессе работы некоторые устройства могут быть отсоединены от шины или подсоединены к ней. Хост должен периодически контролировать состояние собственных портов и портов хабов (путем опроса по прерываниям), чтобы контролировать изменения на шине USB. Каждому вновь подключенному устройству должен быть присвоен номер и задана конфигурация. Изменено 28 сентября, 2013 пользователем gasga Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться