ROS USB

Материал из Русский WINE
Перейти к: навигация, поиск

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

Работа над USB

См. также

ReactOS
Search.png
Доклады
О ReactOS • ARWINSS • ЧеЗа
Информация Новости Выпуски новостей • Переводы блогов • Новости проекта • Видео • ReactOS на Хабре • USB от Вадима Галянта
Разработка Руководство по программированию • Отсутствующая функциональность • Ветви разработки • Компоненты системы • ReactOS и Wine • План работ • Roadmap ядра by Vgal • Разработчики • Совместимость с dll Windows • Наиболее значимые изменения за год • Используемые проекты • Google Summer of Code • Известные проблемы
Порты AMD64 • ARM • Xbox • PowerPC
Компоненты Файловые системы • Режим совместимости • Отчеты об ошибках • Печать • USB • Ядро
Загрузчик Восстановление MBR • Загрузка из GRUB • Параметры загрузки
Прочее ARWINSS • Приложения в ReactOS • Оформление ReactOS • Координаторы • "Пасхальные яйца" • Монетизация
Другое Типы ядер • FreeWin95
Помощь
RAM-диск ReactOS по PXE • с жесткого диска
Разработка Стиль написания кода • Стандарты RC-файлов • Работа с документацией • Венгерская нотация • GNU Indent • [ Subversion : ветви • слияние • использование TortoiseSVN ] • Основы перевода • Отправка патчей
Репорты Отладка в VirtualBox • Отладка на экран • Добавление программы в менеджер приложений • Отправка отчетов
Отладка Com0com • GDB • Kdbg • Rossym.gdb • Roswin.gdb • WinDBG • Руководство по WinDBG • Включение трассировки ядра • Коды DPRINT • Удалённый отладчик ReactOS
Сборка CMake • RBuild • Файлы RBuild • Автоматическое копирование файлов • Сборка MINGW-w64 • Сборка модулей • Среда сборки
Тестирование VirtualBox • VMware • QEMU • Hyper-V • Необходимый объём диска • Перенос файлов на виртуальный диск • Установка ReactOS • Установка драйверов
Сеть Общие папки • Samba • NFS
Игры Установка DirectPlay
Обновление ReactOS • Загрузочная флешка • Чем можно помочь проекту • Создание нового пользователя • Звук и сеть в VirtualBox • Съемка и публикация видео • IRC-канал • Сторонние компоненты • FAQ • ReactOS как рабочая станция • ReactOS и UEFI
Обзоры Оболочка • NTVDM • WOW • Community Edition • История сайта • ReactOS Server • Криптография • ПО времен XP