Перейти к содержанию
    

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

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

 

Подскажите, пожалуйста, как для конечной точки (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, и при необходимости записывает новую порцию данных?

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

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

 

Спасибо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...