ROS USB
Содержание
USB-стек в ReactOS
Данная статья частично является переводом официальной вики. Последнее обновление 08-12-2015
Стек USB обеспечивает взаимодействие между USB-устройствами и соответствующими драйверами и приложениями. Он состоит из нескольких файлов, каждый из которых выполняет свою функцию. На данный момент, реализация USB-стека выполнена не полностью.
ПРИМЕЧАНИЕ: Существует проблема при загрузке ReactOS с жесткого диска/LiveCD при подключенной флешке. Любое подключенное USB-устройство может вызвать критическую ошибку. Во избежание этого отключите все USB-устройства при загрузке системы.
Обзор
Основной целью является написание USB-стека, который будет:
- использовать стандарт USB v1.1-2.0
- использовать API WDM (NT 5)
- совместим со всеми USB-устройствами и драйверами (которые придерживаются стандарта)
Цели
- Первая цель: USB HID (human input devices) и поддержка USB-накопителей.
- Вторая цель: поддержка аудио-устройств и др.
- После: тестирование и отладка.
Из-за сложности и размера работы, точная дата завершения неизвестна.
Статус
USB Core
- Есть две спецификации стандарта USB 1.1. Их используют мыши, клавиатуры и др.:
- OHCI (Open Host Controller Interface Standard) - Все типы передачи реализованы (основная, iso, управления, прерывания)
- UHCI (Universal Host Controller Interface Standard) - полностью отсутствует. Вполне реализуема, если использовать OHCI-драйвер в качестве основы и драйвер Haiku.
- EHCI (Enhanced Host Controller Interface) (USB 2.0)- Реализованы два типа передачи: основной и управления. Прерывания и изохронные переводы не осуществляются.
- USBHUB - драйвер для управления портом и концентраторами. Статус реализации неизвестен. Из-за нереализованных типов передачи, устройства, которые используют эти типы будут недоступны.
Поддержка USB-накопителей
Поддержка USB-накопителей реализована в драйвере USBSTOR и полностью работает. Драйвер проверен в WinXP + USBEHCI + USBSTOR. Поддержка USB-накопителей требует контроля передачи информации, осуществляемой в USBEHCI.
Поддержка HID
Фреймворк HID состоит из пяти драйверов:
- HIDUSB - драйвер интерфейса для шины USB. В настоящее время поддерживаются USB-мыши. Так же реализована базовая поддержка USB-клавиатур.
- HIDCLASS - драйвер класса для HIDUSB и др. Поддержка мышей и клавиатур будет реализована позже.
- MOUHID - драйвер мыши для USB HID Standard. Полностью реализован и работает.
- KBDHID - драйвер клавиатуры для USB HID Standard. Реализован на 90%.
- HIDPARSE - драйвер для анализа отчетов дескрипторов. Реализован для мышей, для клавиатуры необходима реализация HidParser_TranslateUsage для работы Caps Lock, Num Lock и Scroll Lock.
Что уже работает
- Поддержка мыши была протестирована в Windows XP с ReactOS-драйверами USBOHCI + HIDUSB + HIDCLASS + MOUHID + HIDPARSE. Стек USB + HID также работает в ReactOS.
- Базовая поддержка клавиатуры почти реализована.
- Для поддержки USB Накопителей необходима доработка драйверов mountmgr/partmgr. Так же необходимы mountvol и многие другие компоненты, отсутствующие в PnP.
Отсутствующая поддержка
- поддержка USB Audio – будет реализована в драйвере usbaudio.sys
- поддержка USB Printing – будет реализована в драйвере usbprint.sys
- поддержка USB Serial – будет реализована в драйвере usbser.sys