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

 
 
> AT91SAM7S256 USB, Нет запроса GetConfiguration
amw
сообщение Apr 13 2007, 15:27
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 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.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 6)
ivstech
сообщение Apr 13 2007, 18:19
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 204
Регистрация: 5-01-06
Пользователь №: 12 860



Первое, что приходит в голову - размер пакета равен размеру конечной точки. В этом случае нужно отсылать также пакет нулевой длины. В примерах от атмела это не делается
Go to the top of the page
 
+Quote Post
amw
сообщение Apr 13 2007, 19:08
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 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.
Go to the top of the page
 
+Quote Post
amw
сообщение Apr 16 2007, 11:10
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 601
Регистрация: 22-09-05
Из: Kharkov
Пользователь №: 8 847



Покопался детальнее в принимаемых и отсылаемых пакетах.
Появились новые вопросы.
Как я понимаю, конец передачи/приема - это получение пакета с длиной, меньше размера конечной точки. Это так? Это единственный признак?
После отсылки дескриптора при подключении получаю от хоста пакет нулевой длины. Это подтверждение от хоста (ACK пакет)? Пакет приходит не как SETUP.
Присвоение адреса подтверждаю пакетом нулевой длины.
Получаю от хоста SETUP пакет нулевой длины. Это как объяснить?


--------------------
- А мораль отсюда такова: всякому овощу свое время. Или, хочешь, я это сформулирую попроще: никогда не думай, что ты иная, чем могла бы быть иначе, чем будучи иной в тех случаях, когда иначе нельзя не быть.
© Lewis Carroll. Alice's adventures in wonderland.
Go to the top of the page
 
+Quote Post
amw
сообщение Apr 16 2007, 13:11
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 601
Регистрация: 22-09-05
Из: Kharkov
Пользователь №: 8 847



Проблема устранилась путем отсылки пакета нулевой длины после каждого отсылаемого пакета. Независимо от длины пакета.
По моему это не нормально! Но пока работает. Что-бы это значило???


--------------------
- А мораль отсюда такова: всякому овощу свое время. Или, хочешь, я это сформулирую попроще: никогда не думай, что ты иная, чем могла бы быть иначе, чем будучи иной в тех случаях, когда иначе нельзя не быть.
© Lewis Carroll. Alice's adventures in wonderland.
Go to the top of the page
 
+Quote Post
Dron_Gus
сообщение Apr 16 2007, 14:58
Сообщение #6


Профессионал
*****

Группа: Свой
Сообщений: 1 202
Регистрация: 9-01-05
Из: Санкт-Петербург
Пользователь №: 1 861



некоторое уточнение к посту ivstech. Посылать пакет нулевой длинны надо не только когда пакет = конечной точке, но и когда кратен, т.е. 16, 32,...


--------------------
Если сверху смотреть, то сбоку кажется, что снизу ничего не видно.
Go to the top of the page
 
+Quote Post
amw
сообщение Apr 16 2007, 17:30
Сообщение #7


Знающий
****

Группа: Свой
Сообщений: 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.
Go to the top of the page
 
+Quote Post

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

 


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


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