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