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

 
 
 
Reply to this topicStart new topic
> Low Speed USB... Как получается 1,5 mbit per sec?, Все калькуляторы поломал
prottoss
сообщение Nov 6 2006, 17:01
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Всем доброго времени суток!

Объясните не разумному, как получается на Low Speed USB Device получить цифру в 1,5 мбит в секунду? Судя спецификации USB минимальная пауза между фреймами не может быть ниже 10 милисекунд. При этом максимальный размер полезных данных - 8 байт. Если я правильно считаю, то получается не более 100 пакетов по 8 байт - 800 байт в сек??? Или я чегойто не догоняю?

Сенькс)


--------------------
Go to the top of the page
 
+Quote Post
msn
сообщение Nov 8 2006, 00:34
Сообщение #2


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

Группа: Свой
Сообщений: 126
Регистрация: 1-01-06
Из: Украина, Киев
Пользователь №: 12 759



Цитата(prottoss @ Nov 6 2006, 19:01) *
Всем доброго времени суток!

Объясните не разумному, как получается на Low Speed USB Device получить цифру в 1,5 мбит в секунду? Судя спецификации USB минимальная пауза между фреймами не может быть ниже 10 милисекунд. При этом максимальный размер полезных данных - 8 байт. Если я правильно считаю, то получается не более 100 пакетов по 8 байт - 800 байт в сек??? Или я чегойто не догоняю?

Сенькс)

Для одной Pipe ни как.
LS потдерживает только Interupt 8 Байт (самое оно для мыши или клавиатуры).
Go to the top of the page
 
+Quote Post
prottoss
сообщение Nov 8 2006, 06:51
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Цитата(msn @ Nov 8 2006, 07:34) *
Для одной Pipe ни как.
LS потдерживает только Interupt 8 Байт (самое оно для мыши или клавиатуры).
Значится это просто скорость передачи пакетов и к объему перекачиваемых данных в секунду ни какого отношения не имеет... Мдя.

Ок, раз уж создал тему. Еще вопросик. Хочется вот мне, чтоб у меня девайс видился как два, или три, или четыре СОМ-порта (USB CDC класс). Для этого, я так понимаю, надо создать несколько интерфейсных дескрипторов, для каждого интерфейса свои pipe? Но как потом каждый порт в inf-файле описывать?


--------------------
Go to the top of the page
 
+Quote Post
Седой
сообщение Nov 8 2006, 09:51
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 244
Регистрация: 21-02-05
Из: Урал
Пользователь №: 2 806



Цитата
Еще вопросик. Хочется вот мне, чтоб у меня девайс видился как два, или три, или четыре СОМ-порта (USB CDC класс). Для этого, я так понимаю, надо создать несколько интерфейсных дескрипторов, для каждого интерфейса свои pipe? Но как потом каждый порт в inf-файле описывать?


Такое устройство - composite device.
( как с ним работать см.
http://msdn.microsoft.com/library/default.....asp?frame=true
)
Для composite device драйвер не нужен, и не нужно его прописывать в INF файле. Главное чтобы VID/PID вашего устройства не совпадал с уже зарегистрированными системой и устройство имело несколько интерфейсов. Драйвер поставится автоматически.

С интерфейсами поступать нужно так:

Если интерфейс вашего устройства реализует стандартный класс и его поддерживает система, то его прописывать в INF файле не нужно. Система поставит его сама.

Если интерфейс нестандартного класса, то его нужно прописать в секции [Models] INF файла:

%MydeviceDesc% = Mydevice, USB\VID_vvvv&PID_pppp\MI_mm

где vvvv - номер VID, pppp - номер PID, mm - номер интерфейса MyDevice, равный значению поля bInterfaceNumber дескриптора интерфейса.

Для уcтройств стандартных классов ( и не только), реализующих несколько интерфейсов, а таким является USB CDC в полной реализации, дело несколько сложнее - необходимо в устройстве создать Interface Association Descriptors (IAD) см.
http://msdn.microsoft.com/library/default....e130efc.xml.asp

PS. В последних версиях WDK появились дополнительные возможности, но я детально их не изучал.
Go to the top of the page
 
+Quote Post
prottoss
сообщение Nov 8 2006, 10:28
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Цитата(Седой @ Nov 8 2006, 16:51) *
Цитата
Еще вопросик. Хочется вот мне, чтоб у меня девайс видился как два, или три, или четыре СОМ-порта (USB CDC класс). Для этого, я так понимаю, надо создать несколько интерфейсных дескрипторов, для каждого интерфейса свои pipe? Но как потом каждый порт в inf-файле описывать?

Такое устройство - composite device.
Спасибо, буду пробовать. Расскажу здесь, что получилось...


--------------------
Go to the top of the page
 
+Quote Post
prottoss
сообщение Jan 14 2007, 09:51
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Цитата(Седой @ Nov 8 2006, 13:51) *
Цитата
Еще вопросик. Хочется вот мне, чтоб у меня девайс видился как два, или три, или четыре СОМ-порта (USB CDC класс). Для этого, я так понимаю, надо создать несколько интерфейсных дескрипторов, для каждого интерфейса свои pipe? Но как потом каждый порт в inf-файле описывать?


Такое устройство - composite device.
( как с ним работать см.
http://msdn.microsoft.com/library/default.....asp?frame=true
)
...

Для уcтройств стандартных классов ( и не только), реализующих несколько интерфейсов, а таким является USB CDC в полной реализации, дело несколько сложнее - необходимо в устройстве создать Interface Association Descriptors (IAD) см.
http://msdn.microsoft.com/library/default....e130efc.xml.asp

PS. В последних версиях WDK появились дополнительные возможности, но я детально их не изучал.
Что то ни как не получается сделать правильный дескриптор, то четыре устройства видятся, то два, но второе не работает. Вот что получается...

Для USB CDC ACM класса необходимо определить два интерфейса. Правильно? Что я и делаю. Перед определением интерфейсов ставлю IAD для первой функции, в нем прписываю номер первого интерфейса 0, кол. интерфейсов 2, далее идет все как для USB CDC ACM. Далее ставлю второй IAD, где номер первого интерфейса 2, кол. интерфейсов 2. Далее опять стьандартный для USB CDC ACM набор. Перед все этим венегретом идет, естественно конфиг дескриптор, в котором я указываю количество интерфейсов. А вот тут траблы, мне пока не понятные.

Если ставлю колю интерфейсов 4 (но их же так и есть???), то ОС видит 4 -е устройства, еслди ставлю 2 (может теперь по кол. IADов???), то винда видит два, как мне и хочется, но второй устанавливается с ошибкой, и в добавок, и первый не работает!!!

В чем траблы???

Спасибо!


--------------------
Go to the top of the page
 
+Quote Post
prottoss
сообщение Jan 14 2007, 14:20
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Немного разобрался с проблемой. Убрал IADы, сделал два интерфейса, и в абстрактные интерфейсы запихал нумпоинты от дата-интерфесов, а дата и нтерфейсы убрал совсем. Заработало!!!. Но, только первое устройство. Второе Виндовс забраковало. Дело в том, что я использую в своих опытах PDIUSBD12, у которой фактически три конечные точки. Так вот, в обоих виртуальных точках я использую одни и те же, может быть в этом проблема.

Подскажите, кто знает


--------------------
Go to the top of the page
 
+Quote Post

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

 


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


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