Суть проблемы: есть stm32f105, работает в режиме FS device, используется библиотека от st. stm32 должен передавать данные в писюк со скоростью до 500кб/сек.
Протестировал bulk in обмен с libusb-1.0 под линуксом. Желаемая скорость достигается, но нужно передавать блоки размером не менее килобайта, причем обязательно без разывов (если в середине будет выдан NAK - отдыхаем до следующего фрейма).
Чтобы это обеспечить нужно завести не менее двух буферов (один передается по усб, другой в это время накапливает поступающие данные), причем буферов лучше иметь более двух. Налицо двойная буферизация а это плохо - увеличивается латентность, кроме того в моем случае данные поступают в рваном темпе, может быть то 1% от максимального объема а может быть все 100%.
Есть ли какие нибудь способы избежать двойной буферизации ?