Jump to content

    
Sign in to follow this  
msn

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

Recommended Posts

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

 

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

Пишу софт для непрерывной передачи в компьютер потока 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 Хоста драйвера? Можно ли его как-то увеличить или обновить?

 

Спасибо.

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites
Специалисты подскажите, пожалуйста, новичку.

 

в 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 не устраивает?

Share this post


Link to post
Share on other sites

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

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

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

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

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

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

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