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

Размер внутреннего буфера USB Хоста драйвера

Специалисты подскажите, пожалуйста, новичку.

 

Суть проблемы такая:

Пишу софт для непрерывной передачи в компьютер потока 800-900 KB/s. В качестве функции использую Cygnal C8051F32x, одна EP (64+64) с двойной буферизацией передачи типа Bulk на Full Speed в сторону Хоста. Между запросами к драйверу DeviceIoContro(,,,,,0x10000,,) в Win XP есть существенные задержки (2-3 мс) только между блоками по 64K, которые убираются ‘хитрым’ программным FIFO (именно в конце блока начинается буферизация, т.е. перед самой большой задержкой). Но в Win98 SE для Хоста Intel 82371 AB / EB есть еще существенные задержки (до 1 мс) между блоками 4К, хотя используется тоже самый драйвер, что и в Win XP и замер буфера в DeviceIoContro тот же самый – 64К. Складывается такое ощущение, что это ограничение вносит именно драйвер Хоста USBD.sys в Win 98 SE (хотя в этом не уверен). Подскажите, пожалуйста, как программно определить размер внутреннего буфера USB Хоста драйвера? Можно ли его как-то увеличить или обновить?

 

Спасибо.

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


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

На мой взгляд не верен подход к решению задачи. Если используешь Bulk - придется смирится с возможными задержками и проектировать систему учитывая их (представь что в этот же хаб воткнули принтер и веб камеру - пошла печать и у тебя на время печати прокачка упадет в двое, включили камеру и прокачка упадет на время работы камеры на непрогнозируеммый уровень). Если нужна гарантированная полоса пропускания - используй изохронный режим, правда Сигнал тут не катит - FIFO слишком мало (макс. 256 байт пр двойной буферизации).

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


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

Да Вы правы, подход не совсем правильный. Но только Bulk может обеспечить 1 МБ/сек. Предполагается что к компу ни чего не будет подключено кроме этой железяки.

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


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

Специалисты подскажите, пожалуйста, новичку.

 

в Win XP есть существенные задержки (2-3 мс) только между блоками по 64K, которые убираются ‘хитрым’ программным FIFO (именно в конце блока начинается буферизация, т.е. перед самой большой задержкой). Но в Win98 SE для Хоста Intel 82371 AB / EB есть еще существенные задержки (до 1 мс) между блоками 4К, хотя используется тоже самый драйвер, что и в Win XP и замер буфера в DeviceIoContro тот же самый – 64К. Складывается такое ощущение, что это ограничение вносит именно драйвер Хоста USBD.sys в Win 98 SE (хотя в этом не уверен). Подскажите, пожалуйста, как программно определить размер внутреннего буфера USB Хоста драйвера? Можно ли его как-то увеличить или обновить?

 

Спасибо.

 

Есть подозрение, что виноват не драйвер USB, а драйвер DMA. В свое время я ковырял LPT под Win98, там тоже были задержки между блоками по 4К. С задержками либо надо смириться, либо перейти на другой процессор и ISO-transfer (на full-speed максимум 1023 байта/мс, на hi - 1024 за 125 мкс). Чем Cypress FX2 не устраивает?

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


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

Как вариант могу предложить перейти на High SPeed USB на FX2 от Cypress т.к. эта дорога уже пройдена многими. Fullspeed щас годится наверно только для мышей и прочей живности.

Виновата скорее всего система синхронизации задач в форточках.

Мне ситуация представляется следующем образом:

Кванты времени не резиновые если выделена 1мс потоку передачи данных драйвера то он может передать/принять за эту 1 мс либо 64 кб либо 512, либо N*512. Не забывайте что кадр в USB FullSpeed 1 мс.

Так как передача идёт под управлением хоста а не самоходом

то размера буфера драйвера ИМХО не причём.

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


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

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

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

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

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

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

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

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

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

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