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

 
 
> Обработка vendor-запросов в USB устройстве на базе ISP1583
ArkZel
сообщение Mar 7 2009, 07:32
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 29
Регистрация: 15-12-08
Из: Томск
Пользователь №: 42 479



На стороне хоста использую функцию UsbBuiltVendorRequest(&urb, URB_FUNCTION_VENDOR_DEVICE, sizeof(struct _URB_CONTROL_VENDOR_OR_CLASS_REQUEST), 0, 0, 0x0C, 0, 0, &buf, NULL, 4, NULL)
для посылки устройству 4-х байтового значения. Устройство получает пакет SETUP в 8-байтный буфер (set-up token).
Никаких прерываний по EP0RX не получаю. Где должны находится отправленные данные? Как корректно обрабатывать SETUP запросы, содержащие данные (в направлении OUT).
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Alex11
сообщение Mar 8 2009, 21:26
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 106
Регистрация: 23-10-04
Из: С-Петербург
Пользователь №: 965



Не знаю, как для 1583, но у меня в 1581 сделано так (и все работает): считывается setup-пакет, затем в endpoint index ставится 0, далее дожидаемся, пока в регистре длины не окажется нужное число байт (пришедшее в setup'e или 64, что меньше). Затем считываем пришедшие данные. Если их было больше 64, остальное принимаем по прерываниям. Я уже не помню за давностию лет, почему так сделано, но работает.
PS. В драйвере запрос правильный. Единственно, я бы вместо URB_FUNCTION_VENDOR_DEVICE поставил URB_FUNCTION_VENDOR_INTERFACE и изменил, соответственно, разборку в устройстве.
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 20th July 2025 - 02:53
Рейтинг@Mail.ru


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