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

 
 
> Разная длина конфигурационного дскриптора., Видеокамера к LM3S9B95
misyachniy
сообщение Feb 19 2010, 11:15
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 716
Регистрация: 27-05-05
Из: Kyiv
Пользователь №: 5 454



Отлаживаю плату с USB хостом (LM3S9B95)
Устройство видеокамера

Дескриптор устройства считывается одинаково как на PC так и на плате.

12 01 00 02 EF 02 01 40 45 0C C0 62 00 01 02 01 00 01

Последняя цифра говорит что только одна конфигурация.

Запрос о конфигурации отрабатывется по разному

USBSnoop
Запрос: не виден
Ответ: 09 02 31 02 02 01 00 80 31

USBTrace
запрос: 80 06 00 02 00 00 39 02
Ответ: 09 02 39 02 02 01 00 80 31

В устройстве (LM3S9B95)
Запрос: 80 06 00 02 00 00 2A 02
Ответ: 09 02 2A 02 02 01 00 80 31

Во всех трех случаях длина данных конфигурации разная.

0231
0239
022A


Понятно что программы пишут разные программисты но непонятно почему так по разному ;-)
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 5)
Владивольт
сообщение Feb 19 2010, 12:35
Сообщение #2


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

Группа: Участник
Сообщений: 168
Регистрация: 14-02-10
Пользователь №: 55 490



взглянем на строки "запрос" случаев 2 и 3.
Мне вспоминается, что при Input Request поле wLength задает максимальную длину данных, ожидаемых хостом в ответе от устройства.
Так вот в ответах ровно столько, сколько хост установил в качестве предела.


--------------------
#define TRUE (4==(2*2))
Go to the top of the page
 
+Quote Post
misyachniy
сообщение Feb 19 2010, 13:12
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 716
Регистрация: 27-05-05
Из: Kyiv
Пользователь №: 5 454



Цитата(Владивольт @ Feb 19 2010, 14:35) *
взглянем на строки "запрос" случаев 2 и 3.
Мне вспоминается, что при Input Request поле wLength задает максимальную длину данных, ожидаемых хостом в ответе от устройства.
Так вот в ответах ровно столько, сколько хост установил в качестве предела.


Устройство должно отдавать дескриптор конфигурации без изменений.
Меняется только количество байт в ответе.
В начале обычно запрашивают 9 байт и смотрят сколько нужно всего.
Затем полный дескриптор.
Go to the top of the page
 
+Quote Post
Владивольт
сообщение Feb 19 2010, 14:25
Сообщение #4


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

Группа: Участник
Сообщений: 168
Регистрация: 14-02-10
Пользователь №: 55 490



Мда, давно это было...
Сейчас сподвигнут перечесть Главу 9 и просмотреть дампы своих отладок.

А что отвечает, когда спрашивают 9 байт?

P.S. А в строках "Ответ: 09 02 2A 02 02 01 00 80 31" исходного поста жирным шрифтом следовало выделить четвертое слева число 02. Второй байт, сразу после 09 -- это bDescriptorType


--------------------
#define TRUE (4==(2*2))
Go to the top of the page
 
+Quote Post
misyachniy
сообщение Feb 19 2010, 16:44
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 716
Регистрация: 27-05-05
Из: Kyiv
Пользователь №: 5 454



Цитата(Владивольт @ Feb 19 2010, 16:25) *
Мда, давно это было...
Сейчас сподвигнут перечесть Главу 9 и просмотреть дампы своих отладок.

А что отвечает, когда спрашивают 9 байт?

P.S. А в строках "Ответ: 09 02 2A 02 02 01 00 80 31" исходного поста жирным шрифтом следовало выделить четвертое слева число 02. Второй байт, сразу после 09 -- это bDescriptorType


Ну да на всех дескрипторах нужно было на байт сдвинутся.
Go to the top of the page
 
+Quote Post
misyachniy
сообщение Feb 22 2010, 14:04
Сообщение #6


Знающий
****

Группа: Свой
Сообщений: 716
Регистрация: 27-05-05
Из: Kyiv
Пользователь №: 5 454



Сравнил посылки которые показали USBSnoop/USBTrace

USBSnoop
09 02 31 02 02 01 00 80 31
09 04 00 00 01 0e 01 00 01
0d 24 01 00 01 67 00 c0 e1 e4 00 01 01
09 24 03 02 01 01 00 05 00
1a 24 06 04 70 33 f0 28 11 63 2e 4a ba 2c 68 90 eb 33 40 16 08 01 03 01 0f 00


USBTrace
09 02 39 02 02 01 00 80 31
08 0B 00 02 0E 03 00 01
09 04 00 00 01 0E 01 00 01
0D 24 01 00 01 67 00 C0 E1 E4 00 01 01
09 24 03 02 01 01 00 05 00
1A 24 06 04 70 33 F0 28 11 63 2E 4A BA 2C 68 90 EB 33 40 16 08 01 03 01 0F 00


В дескрипторе отсутствует Standard Video Interface Collection IAD

По примеру из стандарта для видеоустройств 1.1 разобрал так ответ

Table 2-3 Standard Video Interface Collection IAD

08 bLength
0B - INTERFACE ASSOCIATION Descriptor
00 - bFirstInterface Interface number of the VideoControl interface that is associated with this function
02 - bInterfaceCount - два потоковых видео в этой функции
0E - bFunctionClass = CC_VIDEO
03 - bFunctionSubClass = SC_VIDEO_INTERFACE_COLLECTION
00 - bFunctionProtocol Not used. Must be set to PC_PROTOCOL_UNDEFINED
01 - Index to string descriptor that contains the string <Your Product Name> in Unicode.
Have to match iInterface field in Standard VC Interface Descriptor


Получается, что дескриптор может менятся в зависимости от состояния в котором находиться устройство?

По поводу того, что в при опросе из LM3SB95 устройстве дескриптор имеет длину 0х022A, следующие соображения:

Пересмотрел в дескрипторе конфигурации "хвост".
В длинных 231/239 дескрипторах есть 6 различных длин посылок конечной точки с какими может работать видеокамера.
По команде Set Interface можно выбрать эту длину в байтах 128/256/512/800/2848/4896/5120/

В дескрипторе длиной 22A максимальная длина конечной точки 128/256/512/600/800/956.

По стандарту длина посылки для FULL SPEED режима в USB максимум 1023 байта.
Очевидно в зависимости от скорости по шине и конфигурацию устройство показывает разную.

Так что остановлюсь на длине 22A и буду с ней работать.
Go to the top of the page
 
+Quote Post

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

 


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


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