Применение шины USB
Хост
Архитектура USB допускает четыре базовых типа передачи данных.
♦ Управляющие посылки (control transfers) используются для конфигурирования устройств во время их подключения и для управления устройствами в процессе работы. Протокол обеспечивает гарантированную доставку данных.
♦ Передачи массивов данных (bulk data transfers) — это передачи без обязательств по задержке доставки и скорости передачи. Передачи массивов могут занимать всю полосу пропускания шины. Приоритет этих передач самый низкий, они могут приостанавливаться при большой загрузке шины. При случайной ошибке - выполняется повтор. Передачи массивов используются для обмена данными с принтерами, сканерами, устройствами хранения и т. п.
♦ Прерывания (interrupt) — короткие передачи, которые имеют спонтанный характер. Предел времени обслуживания устанавливается в диапазоне 10-255 мс для низкой, 1-255 мс для полной скорости, для высокой скорости - 125 мкс. При случайных ошибках обмена выполняется повтор. Прерывания используются, при вводе символов с клавиатуры или для передачи сообщения о перемещении мыши.
♦ Изохронные передачи (isochronous transfers) — непрерывные передачи в реальном времени, занимающие предварительно согласованную часть пропускной способности шины с гарантированным временем задержки доставки. Позволяют на полной скорости организовать канал с полосой 1,023 Мбайт/с (или два по 0,5 Мбайт/с), заняв 70 % доступной полосы (остаток можно заполнить и менее емкими каналами). На высокой скорости конечная точка может получить канал до 24 Мбайт/с (192 Мбит/с). В случае обнаружения ошибки изохронные данные не повторяются — недействительные пакеты игнорируются.
Изохронные передачи нужны для потоковых устройств: видеокамер, цифровых аудиоустройств (колонки USB, микрофон), устройств воспроизведения и записи аудио- и видеоданных (CD и DVD). Видеопоток (без компрессии) шина
USB способна передавать только на высокой скорости.
У каждой шины USB должен быть один (и только один!) хост — компьютер с контроллером USB.
Хост делится на три основных уровня.
♦ Интерфейс шины USB обеспечивает физический интерфейс и протокол шины.
Интерфейс шины реализуется хост-контроллером, имеющим встроенный
корневой хаб, обеспечивающий точки физического подключения к шине (гнезда USB типа «А»). Хост-контроллер отвечает за генерацию (микро) кадров. На аппаратном уровне хост-контроллер обменивается информацией с основной памятью компьютера, используя прямое управление шиной (bus-mastering) с целью минимизации нагрузки на центральный процессор.
♦ Система USB, используя хост-контроллер(ы), транслирует клиентское «видение» обмена данными с устройствами в транзакции, выполняемые с реальными устройствами шины. Система отвечает и за распределение ресурсов USB —полосы пропускания и мощности источников питания (для устройств, питающихся от шины). Система состоит из трех основных частей:
1) Драйвер хост-контроллера — HCD (Host Controller Driver) — модуль, привязанный к конкретной модели контроллера, обеспечивающий абстрагирование драйвера USB и позволяющий в одну систему включать несколько разнотипных контроллеров.
2) Драйвер USB — USBD (USB Driver) — обеспечивает основной интерфейс (USBDI) между клиентами и устройствами USB. Интерфейс HCDI (Host Controller Driver Interface) между USBD и HCD спецификацией USB не регламентируется. Он определяется разработчиками ОС и должен поддерживаться разработчиками хост-контроллеров,
Кроме того, USBD отвечает за некоторое абстрактное представление устройства USB клиенту, которое позволяет выполнять конфигурирование и управление состоянием устройств (включая и стандартное
управление). Реализация интерфейса USBDI
определяется операционной системой.
3) Программное обеспечение хоста реализует функции, необходимые для функционирования системы USB в целом: обнаружение подключения и отключения устройств, (загрузка требуемых драйверов), нумерацию устройств, распределение полосы пропускания и потребляемой мощности и т. п.
♦ Клиенты USB — программные элементы (приложения или системные компоненты), взаимодействующие с устройствами USB. Клиенты могут взаимодействовать с любыми устройствами, подключенными к системе USB. Однако система USB изолирует клиентов от непосредственного обмена с какими-либо портами (в пространстве ввода-вывода) или ячейками памяти, представляющими интерфейсную часть контроллера USB.
Уровни хоста имеют следующие возможности:
♦ обнаружение подключения и отсоединения устройств USB;
♦ манипулирование потоками управления между устройствами и хостом;
♦ манипулирование потоками данных;
♦ сбор статистики активности и состояний устройств;
♦ управление электрическим интерфейсом между хост-контроллером и устройствами USB, включая управление электропитанием.
Хост-контроллер является аппаратным посредником между устройствами USB и хостом. Программная часть хоста в полном объеме реализуется операционной системой.
USB поддерживает динамическое подключение и отключение устройств. Нумерация (перенумерация) устройств шины идет постоянно, отслеживая изменения физической топологии.
Все устройства подключаются через порты хабов. Хабы определяют подключение и отключение устройств к своим портам и сообщают состояние портов при запросе от контроллера. Хост разрешает работу порта и адресуется к устройству через канал управления.
Хост определяет, является новое подключенное устройство хабом или функцией, и назначает ему уникальный адрес USB.
Хост создает канал управления (control pipe) с этим устройством, используя назначенный адрес и нулевой номер точки назначения.
Если новое устройство является хабом, хост определяет подключенные к нему устройства, назначает им адреса и устанавливает каналы. Если новое устройство является функцией, уведомление о подключении передается диспетчером USB заинтересованному ПО.
Когда устройство отключается, хаб автоматически запрещает соответствующий порт и сообщает об отключении контроллеру, который удаляет сведения о данном устройстве из всех структур данных. Если отключается хаб, процесс удаления выполняется для всех подключенных к нему устройств. Если отключается функция, уведомление посылается заинтересованному ПО.
Благодаря своей универсальности и способности эффективно передавать разнородный трафик, шина USB применяется для подключения к PC самых разнообразных устройств. Она должна заменить традиционные порты СОМ и LPT, шины АТА и SCSI.
Удобна возможность подключения/отключения устройств на ходу и их использование сразу, без перезагрузки ОС. Удобна и возможность подключения большого количества (до 127) устройств к одной шине, ( при наличии хабов). Хост-контроллер интегрирован в большинство современных системных плат. Выпускаются и карты расширения с контроллерами USB (обычно для шины PCI). Но применение USB сдерживается недостаточной активностью разработчиков ПО (производителей оборудования). Для того чтобы система USB работала, необходимо, чтобы были загружены драйверы хост-контроллера.