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

 
 
> ПРОВЕДЕНИЕ СТАНДАРТНЫХ ЗАПРОСОВ USB, ПОМОГИТЕ КТО МОЖЕТ!!!!!!!!!!&#
PAB
сообщение Jul 5 2006, 09:02
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 86
Регистрация: 3-05-06
Пользователь №: 16 717



При отладке USB хост-контроллера возникает следующая проблема: при проведении запроса GetDescriptor устройство отвечает NAK (причем не в начале запроса, а после того как хост отсылает token IN пакет, после которого устройство должно бы прислать свой дескриптор в качестве пакета данных). Запрос SetAddress проходит нормально (хотя не с первого раза), некоторые другие запросы также завершаются успешно. В чем может быть причина такого странного поведения? ПОМОГИТЕ КТО МОЖЕТ!!!!!!!!!!!!!!!! help.gif
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
PAB
сообщение Jul 8 2006, 09:25
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 86
Регистрация: 3-05-06
Пользователь №: 16 717



В качестве девайса использую флэшку Transcend JetFlash, которая вроде бы как относится к USB Mass Storage Class Bulk-Only Transport.

После RESET'а проходят запросы: SetAddress, GetDeviceDescriptor, ещё раз GetDeviceDescriptor (но с другим значением в поле wLength), GetConfigurationDescriptor, ещё раз GetConfigurationDescriptor (но с другим значением в поле wLength), SetConfiguration, GetStringDescriptor(с индексом 0, т.е. запрос массива кодов LANGID). Все эти запросы вроде проходят нормально, т.е. сосдержимое полей пакетов соответствует спецификации. Только все эти запросы почему-то проходят не с первого раза, а с 3-го, 4-го. То есть последовательность прохождения запроса получается такая:

token setup пакет со стороны хоста
data пакет со стороны хоста (в котором и содержится информация о запросе)
handshake пакет со стороны устройства (ACK)

token IN пакет со стороны хоста
NACK со стороны устройства
token IN пакет со стороны хоста
NACK со стороны устройства
.
.
. так несколько раз
.
.
token IN пакет со стороны хоста
data пакет со стороны устройства (в этом пакете вобщем и содержится дескриптор устройства)
handshake со стоорны хоста (ACK)

Далее, после того, как все вышеуказанные запросы проходят, хост посылает запрос GetStringDescriptor(с индексом 1). Этот запрос никак не может пройти и заканчивается таймаутом. Далее запрос GetStringDescriptor(с индексом 2) - тоже таймаут. и так далее...

P.S. Расписывать все запросы по пакетам с точностью до байта ОЧЕНЬ долго
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 19th August 2025 - 05:59
Рейтинг@Mail.ru


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