|
AT91SAM7S256 USB, Нет запроса GetConfiguration |
|
|
|
Apr 13 2007, 15:27
|
Знающий
   
Группа: Свой
Сообщений: 601
Регистрация: 22-09-05
Из: Kharkov
Пользователь №: 8 847

|
Подключаю к хосту, получаю запрос на device descriptor, отсылаю, получаю адрес, подтверждаю и устанавливаю. Если я правильно понял спецификацию, то должен прийти запрос GetConfiguration, но вместо него приходит запрос на device descriptor. Устройство его отсылает. И так семь раз. Потом хост ругается, на ошибку чтения конфигурации. Поскольку с SAM-BA в том же устройстве хост прекрасно работает, то ошибка в программе. Вопрос какая? Спецификацию перечитал несколько раз, проверял программу, сравнивал с AT91 USB Framework - Core 1.01 + CDC 1.0. Дескриптор: Код static const struct device_descriptor dev_descr = { .bLength = sizeof(struct device_descriptor), .bDescriptorType = USB_DESC_DEVICE, .bcdUSB = 0x0200, .bDeviseClass = 0x02, .bDeviceSubClass = 0, .bDeviceProtocol = 0, .bMaxPacketSize0 = 8, .idVendor = 0x1111, .idProduct = 0x2222, .bcdDevice = VERSION_CODE, .iManufacturer = 1, .iProduct = 2, .iSerialNumber = 3, .bNumConfigurations = 1 }; Setup пакеты: Код 1. 80 06 00 01 00 00 40 00 2. Пакет SetAddress не приводится 3. 80 06 00 01 00 00 12 00 4. 80 06 00 01 00 00 12 00 5. 80 06 00 01 00 00 12 00 6. 80 06 00 01 00 00 12 00 7. 80 06 00 01 00 00 12 00 8. 80 06 00 01 00 00 12 00 9. 80 06 00 01 00 00 12 00 Лог хоста (Linux): Код new full speed USB device using uhci_hcd and address 32 usb 4-1: unable to read config index 0 descriptor/start usb 4-1: chopping to 0 config(s) PM: Adding info for usb:4-1 PM: Adding info for No Bus:usbdev4.32_ep00 usb 4-1: no configuration chosen from 0 choices В Windows ситуация отличается только количеством запросов. Чего я не учел?
--------------------
- А мораль отсюда такова: всякому овощу свое время. Или, хочешь, я это сформулирую попроще: никогда не думай, что ты иная, чем могла бы быть иначе, чем будучи иной в тех случаях, когда иначе нельзя не быть. © Lewis Carroll. Alice's adventures in wonderland.
|
|
|
|
|
 |
Ответов
(1 - 6)
|
Apr 13 2007, 19:08
|
Знающий
   
Группа: Свой
Сообщений: 601
Регистрация: 22-09-05
Из: Kharkov
Пользователь №: 8 847

|
Цитата(ivstech @ Apr 13 2007, 18:19)  Первое, что приходит в голову - размер пакета равен размеру конечной точки. В этом случае нужно отсылать также пакет нулевой длины. В примерах от атмела это не делается Я про это знаю, но тут случай другой. Размер EP = 8, размер дескриптора = 18, первый запрос на 64, а последующие на 18.
Сообщение отредактировал amw - Apr 13 2007, 19:10
--------------------
- А мораль отсюда такова: всякому овощу свое время. Или, хочешь, я это сформулирую попроще: никогда не думай, что ты иная, чем могла бы быть иначе, чем будучи иной в тех случаях, когда иначе нельзя не быть. © Lewis Carroll. Alice's adventures in wonderland.
|
|
|
|
|
Apr 16 2007, 17:30
|
Знающий
   
Группа: Свой
Сообщений: 601
Регистрация: 22-09-05
Из: Kharkov
Пользователь №: 8 847

|
Цитата(Dron_Gus @ Apr 16 2007, 14:58)  некоторое уточнение к посту ivstech. Посылать пакет нулевой длинны надо не только когда пакет = конечной точке, но и когда кратен, т.е. 16, 32,... Да, знаю. Но приходится посылать нулевые пакеты при любой, в том числе не кратной длине пакета. Например для дескриптора длина пакета == 18, а размер конечной точки == 8. Таким образом посылаются пакеты длиной 8, 8, 2. А приходится посылать четыре пакета с длинами 8, 8, 2, 0.
--------------------
- А мораль отсюда такова: всякому овощу свое время. Или, хочешь, я это сформулирую попроще: никогда не думай, что ты иная, чем могла бы быть иначе, чем будучи иной в тех случаях, когда иначе нельзя не быть. © Lewis Carroll. Alice's adventures in wonderland.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|