[an error occurred while processing this directive]
драйвер USB для W2000
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено amink 17 октября 2002 г. 15:19

Проблема вот какая. Нарисовал я драйвер под USB девайс. Особо не оригинальничал - взял из NTDDK драйверок bulkusb, переделал под свои нужды. А именно, поскольку в моем контроллере нет иных конечных точек кроме CONTROL, то я во всех операциях чтения-записи поменял все, что было связано с BulkOrInterrupt соответственно на Control.
Инициализацию не менял, поскольку понял, что используемые в этом примере функции инициализации универсальны.
В итоге получил, что действительно, драйвер встал как надо, обе конечные точки типа CONTROL определились правильно. Теперь я начал пытаться записывать в одну из них, предназначенную для записи, данные (из клиентского приложения вызываю WriteFile). По дампу дебаггера определил, что нужная функция вызывается, более того, обращаюсь именно к нужному каналу (PIPE). Но в результате операции записи получаю код 0xC000005 (USB_STATUS_DEV_NOT_RESPONDING, как удалдось выяснить из NTDDK). Вторая аналогичная попытка возвращает код 0xC0000030 (USBD_STATUS_ENDPOINT_HALTED).
Контроллер, как выяснили, получает при попытке записи некий Setup-пакет, которорый, согласно спецификации USB, игнорирует. Мои же данные же до него не доходят!

Вопрос:
Есть подозрение, что перед отправкой я должен инициализировать поле URB SetupPacket. Так ли это, и если да, то как его инициализировать при выполнении операции записи в endpoint?

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru