Chapter 25. Устройства USB

Table of Contents
25.1. Введение
25.2. Хост-контроллеры
25.3. Информация об устройстве USB
25.4. Распознавание и подключение устройств
25.5. Информация о протоколах драйверов USB

Эту главу написал Nick Hibma . Изменения для Руководства внес Murray Stokely .

25.1. Введение

Универсальная Последовательная Шина (Universal Serial Bus - USB) является новым способом подключения устройств к персональным компьютерам. Среди возможностей архитектуры шины имеется двунаправленный обмен данными и это было разработано в качестве ответа на то, что устройства становятся все более сложными и требуют большего взаимодействия с хостом. Поддержка USB включена во все современные наборы микросхем для PC и поэтому имеется во всех недавно выпущенных PC. Выпуск компанией Apple компьютера iMac только с USB стал большим знаком для производителей оборудования на создание USB-версий своих устройств. Спецификации будущие PC задают, что все устаревшие разъемы на PC должны быть заменены на один или несколько разъемов USB, что дает всеобщие возможности технологии plug and play. Поддержка оборудования USB имелась в начальном объеме в NetBSD и была разработана Леннартом Ангустссоном (Lennart Augustsson) для проекта NetBSD. Код был перенесен во FreeBSD и в настоящее время мы поддерживаем общий код. Для реадизации подсистемы USB важны несколько возможностей USB.

Lennart Augustsson сделал большую часть работы в реализации поддержки USB для проекта NetBSD. Приносим много благодарностей за эту исключительную работу. ольшое спасибо также Арди (Ardy) и Дирку (Dirk) за их комментарии и выверку текста этого документа.

Разработка драйверов для подсистемы USB и устройств, к ней подключаемых, поддерживается разрабатываемыми спецификациями и спецификациями, которые будут разработаны. Эти спецификации общедоступны с домашних страниц USB. Apple сильно продвигает драйверы, основанные на стандартах, помещая в свободный доступ драйверы классов общего назначения для своей операционной системы MacOS и не рекомендует использование отдельных драйверов для каждого нового устройства. В этой главе делается попытка собрать информацию, достаточную для общего понимания текущей реализации набора драйверов USB для FreeBSD/NetBSD. Но все же рекомендуется дополнительно прочитать и соответствующие спецификации, упоминаемые ниже.

25.1.1. Структура стека USB

Поддержка USB во FreeBSD может быть разделена на три слоя. Самый нижний слой содержит дравер контроллера хоста, который дает общий интерфейс к оборудованию и его возможностям по управлению. Он поддерживает инициализацию оборудования, управление передачами и обработку полных и/или прерванных передач. Любой драйвер контроллера хоста реализует виртуальный разветвитель, который дает независимый от оборудования доступ к регистрам, контролирующим корневые порты на задней панели машины.

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

Верхний уровень содержит отдельные драйверы, поддерживающие специфичные (классы) устройств. Эти драйверы реализуют протокол, который используется в каналах, отличающихся от используемых по умолчанию. Они также реализуют дополнительную функциональность, которая делает устройство доступным другим частям ядра или пользовательской части. Они используют интерфейс драйвера USB (USBDI), используемый слоем сервисов.