WedX - журнал о программировании и компьютерных науках

Почему драйвер запрашивает USB-устройство для отправки дескрипторов USB?

Насколько я понимаю, USB-устройства представляют себя, отправляя дескриптор устройства на хост, который использует информацию, встроенную в дескриптор, для поиска и загрузки правильного драйвера / драйверов. Я не понимаю, зачем драйверам нужны дескрипторы конфигурации, интерфейса, конечной точки и строки с устройства. Я знаю, что дескрипторы описывают устройство в целом, например. количество конфигураций, интерфейсов, конечных точек, типов, размер пакетов, назначение каждого байта в пакете и т. д. Почему драйверы не могут включать эту информацию с самого начала? Почему USB-устройство хранит эту информацию?


Ответы:


1

Думаю, основная причина - в том, что он был разработан таким образом. Дизайнеры могли так же легко пойти другим путем, как вы говорите.

Возможно, более полезно, я могу придумать несколько причин, почему они приняли такое решение:

  • Рассмотрим контекст, в котором появился USB. Подключение периферийных устройств к ПК было ужасным. У вас были последовательные порты (UART), клавиатура и мышь PS / 2, параллельные порты в различных режимах (например, ECP и EPP), игровой порт и MIDI, различные варианты SCSI и т. Д. Большинство из них не позволяли использовать устройства с самоописанием. стандартным образом, требуя настраиваемых драйверов для каждого типа устройств и, в основном, вручную загружая драйверы. Сами по себе дескрипторы устройств в основном решают проблему выбора правильного драйвера, но не обязательно проблему необходимости настраиваемого драйвера для каждого устройства.
  • Различные стандартные спецификации классов устройств (например, HID, аудио) определяют свои собственные дескрипторы, зависящие от класса, для передачи вариантов устройства стандартному драйверу. Уже по этой причине полезен механизм обобщенного дескриптора.
  • Составные устройства в их нынешней форме были бы практически невозможны без стандартизованных дескрипторов интерфейсов. Предположительно, вам придется заставить каждое составное устройство действовать как концентратор с несколькими подключенными устройствами.
  • Многие (большинство?) Стандартных спецификаций классов устройств предписывают определенное минимальное количество конечных точек, в которых реализован стандартизованный протокол (например, массовое USB-хранилище только для массового использования определяет 1 конечную точку массового ввода и 1 массового вывода), в то время как устройства могут добавлять дополнительные для поставщика -специфические расширения или…
  • … Будущее расширение класса стандартных устройств или самого стандарта USB с сохранением обратной совместимости в обоих направлениях (старый драйвер / новое устройство, новый драйвер / старое устройство). Подумайте об устройствах UASP, которые возвращаются к обычному массовому хранению данных.

Хотя это не является строго необходимым для того, чтобы все эти вещи происходили, создание устройств с самоописанием таким образом, похоже, в целом было успешным.

05.09.2019
Новые материалы

Объяснение документов 02: BERT
BERT представил двухступенчатую структуру обучения: предварительное обучение и тонкая настройка. Во время предварительного обучения модель обучается на неразмеченных данных с помощью..

Как проанализировать работу вашего классификатора?
Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

Работа с цепями Маркова, часть 4 (Машинное обучение)
Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

Учебные заметки: создание моего первого пакета Node.js
Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..


Для любых предложений по сайту: [email protected]