Jump to content

    
Sign in to follow this  
msn

Максимальная скорость обмена EP Bulk Full Speed?

Recommended Posts

Здравствуйте специалисты!

 

Подскажите, пожалуйста, как для конечной точки (EP) размером 64 Байт (максимум для Bulk Full Speed) получается скорость обмена почти 1 МБайт/сек, если 64 Байта / 1 мс будет всего 64 КБ / сек.

Ни где не нашел в спецификации, что за один фрейм одна и та же EP может получать несколько транзакций с запросом на передачу данных в сторону Хоста (IN) и соответственно выполнять несколько передач блоков максимальной длины.

 

Может ли быть такое: Host Application хочет прочитать, например 645 байт из Bulk EP, оно просто передает IRP драйверу с размером буфера в 645 байт и в течении TimeOut ждет данные. Драйвер разбивает этот IRP на 11 транзакций IN и передает их в шину?

 

И тогда в течении 1 фрейма может, будет:

[ IN Token 0] {Data 0-63} [ACK]

[ IN Token 9] {Data 576-639} [ACK]

[ IN Token 10] {Data 640-644} [ACK]

 

А Firmware просто опрашивает например флаг опустошения EP, и при необходимости записывает новую порцию данных?

 

Спасибо за ответ.

Share this post


Link to post
Share on other sites

Так и будет, если шина в данный момент свободна. В моем случае при использовании в устройстве двойной буферизации и при пересылке блоков данных размером в десятки мегабайт прокачка достигала 920 - 960 Кб/с. Скорость ограничивается еще тем, что за один IRP запрос нельзя переслать больше 64Кб.

Share this post


Link to post
Share on other sites

Спасибо за ответ.

 

А, вы не подскажите где об этом написано, или можно прочитать. Может я плохо читал спецификацию USB, но так, к сожалению и не нашел, что за 1 фрейм может передаваться несколько транзакций для EP в режиме Bulk. Еще хотел уточнить для изохронных EP и по прерываниям в одном фрейме для одной и той же EP может быть несколько транзакций? В спецификации есть таблицы для каждого типа передач, один из столбцов называется Max Transfers, не подскажите, что он определяет: теоретически возможное количество транзакция для всей шины (несколько устройств, несколько EP), или для возможное количество транзакция для одного устройства с одной EP.

 

Спасибо.

Share this post


Link to post
Share on other sites

В общем то я сам спецификацию читал по диагонали ;). Все больше на собственных ошибках опыта набираюсь. Про изохронные ЕР - одна транзакция за фрейм, буфера при двойной буферизации переключаются у тех камней с которыми работал, по SOF. Max Transfer определяет теоретический предел пропускной способности шины вобщем. Но в каждом конкретном случае надо разбираться отдельно. Например ISO trans max size - 1023 byte/ms. Это значит что одно устройство может само их передавать, могут два устройства поделить между собой но уже меньшее количество (накладные расходы на передачу служебной информации в этом случае увеличиваются). При этом 10% останется для Control Transfer и возможно Bulk. Многое зависит еще и от софта на хосте. Винда иногда, как мне кажется не совсем корректно обрабатывает скользкие ситуации. В общем - большое поле для экспериментов.

Share this post


Link to post
Share on other sites

В спецификации USB естественно прямо не указано, что чере один EP за фрейм может передаваться более одного пакета. Но реально это так - Bulk передача занимает все свободное время шины, и если других активных устройств нет, то при отсутствии задержек на обработки запроса на передачу, можно достигнуть 900 кБ/сек на USB 1.1.

Изохронные транзакции от Bulk практически не отличаются, тут зависит от драйверов хоста. В Windows я не нашел поддержки interrupt-канала, работал с ним как с bulk.

По изохронному каждый фрейм идет запрос на передачу, но реально пакет может и не передаваться. За фрейм от одного ЕР передается только один пакет, длиной не более максимальной установленной для данного ЕР.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this