|
|
Компьютеры - USB core - Принцип работы28 апреля 2011
Оглавление: 1. USB core 2. Принцип работы 3. Список стандартных прикладных интерфейсов 4. Модели USB API
Внутри ядра драйверы основной ОС обращаются к прикладным интерфейсам USB Core. Существует два типа публичных прикладных интерфейса USB Core, нацеленных на два различных уровня драйвера USB: драйверы общего назначения, доступные через фреймворки драйвера, как например блок, символ или сетевое устройство, и драйверы являющиеся частью ядра, участвующие в управлении шиной USB. Такие драйверы ядра включают в себя драйвер хаба, управляющего деревом USB-устройств, а также несколько различных типов драйверов хост-контроллера, который контролирует отдельные шины.
Метод определения оптимального способа работы драйверов с USB-устройством довольно сложный:
- USB поддерживает 4 способа передачи данных. Два типа из них используют всю доступную пропускную способность, тогда как остальные два должны обеспечивать заданную пропускную способность.
- Модель описания устройства включает в себя одну или более «конфигураций» для каждого устройства, причем активной в любой момент времени может быть только одна из них. Устройства стандарта «high speed» должны поддерживать и конфигурации для работы со стандартом «full speed», а также возможна поддержка конфигураций и для других стандартов/скоростей.
- Конфигурации имеют один или более «интерфейсов», каждый из которых может содержать различные параметры/настройки. Такие интерфейсы могут соответствовать стандарту USB, а могут быть специфичными лишь для определенного производителя/устройства. И именно к интерфейсам и привязаны драйверы USB-устройств, а не к устройству непосредственно.
- Интерфейсы имеют одну или более «конечных точек», каждая из которых поддерживает один тип и направление передачи данных. Полная конфигурация может иметь до шестнадцати конечных точек в каждом направлении.
- Передача данных по USB осуществляется пакетами, причем каждая точка имеет запись о максимальном размере пакета.
- Прикладной интерфейс USB в Linux поддерживает синхронные вызовы для передачи сообщений типа control и bulk. Также поддерживаются асинхронные вызовы для всех видов передачи данных путем использования специальных структур запроса, называемых «блоками запроса USB».
Единственными драйверов хостовой ОС, которые реально обращаются к устройству, это драйверы хост-контроллера. В теории все драйверы хост-контроллера поддерживают схожий функционал за счет использования единого прикладного интерфейса. На практике же это начало поддерживаться лишь в версии ядра 2.5, но при этом есть различия в обработке ошибок.
Просмотров: 3807
|