ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
18 июля
8072 Топик полностью
misyachniy (02.03.2004 15:38, просмотров: 1) ответил Antimouse на Гнал 400МБ на полной скорости. Проблем никаких.
"Украина не Россия" USB не RS232 (C) Л.Д.К. Отправлено Илья Гаврилов 28 февраля 2002 г. 16:07 В ответ на: Ответ: Из собственного опыта отправлено John 28 февраля 2002 г. 14:08 Не забывайте, что USB - это не RS-232, приходится делить время на шине между разными устройствами, каковых может быть до 127. Этим занимается входящий в состав операционки драйвер USBD - слой, лежащий непосредственно поверх драйвера хардвера. К USBD стекаются запросы на прием и передачу от драйверов разных устройств. Когда к USBD приходит запрос, он выделяет время на шине для передачи данных. Время на шине USB 1.1 поделено на фреймы по 1 мс. Как правило, если запрос пришел в время фрейма N, время в текущем фрейме для него не выделяется, даже если шина ничем не занята, а выделяется начиная с фрейма N+1. Пусть для определенности нам нужно принять 4К через bulk in. Если наш драйвер будет давать USBD запрос на прием 64 байт (максимальный размер пакета для bulk), ждать, пока USBD вернет данные, и только после этого давать новый запрос, то как раз и получится один пакет в фрейме. Этого можно избежать двумя способами: ставить в очередь новые запросы, не дожидаясь выполнения предыдущих, либо еще проще - дать запрос на все 4К разом. USBD это позволяет, он сам разобьет его на нужное количество пакетов, и если нет других запросов, будет передавать в каждом фрейме столько, сколько успеет.