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
Доклады
О ReactOSARWINSSЧеЗа
Информация Новости Выпуски новостейПереводы блоговНовости проектаВидеоReactOS на ХабреUSB от Вадима Галянта
Разработка Руководство по программированиюОтсутствующая функциональностьВетви разработкиКомпоненты системыReactOS и WineПлан работRoadmap ядра by VgalРазработчикиСовместимость с dll WindowsНаиболее значимые изменения за годИспользуемые проектыGoogle Summer of CodeИзвестные проблемы
Порты AMD64ARMXboxPowerPC
Компоненты Файловые системыРежим совместимостиОтчеты об ошибкахПечатьUSBЯдро
Загрузчик Восстановление MBRЗагрузка из GRUBПараметры загрузки
Прочее ARWINSSПриложения в ReactOSОформление ReactOSКоординаторы"Пасхальные яйца"Монетизация
Другое Типы ядерFreeWin95
Помощь
RAM-диск ReactOS по PXEс жесткого диска
Разработка Стиль написания кодаСтандарты RC-файловРабота с документациейВенгерская нотацияGNU Indent • [ Subversion : ветвислияниеиспользование TortoiseSVN ] • Основы переводаОтправка патчей
Репорты Отладка в VirtualBoxОтладка на экранДобавление программы в менеджер приложенийОтправка отчетов
Отладка Com0comGDBKdbgRossym.gdbRoswin.gdbWinDBGРуководство по WinDBGВключение трассировки ядраКоды DPRINTУдалённый отладчик ReactOS
Сборка CMakeRBuildФайлы RBuildАвтоматическое копирование файловСборка MINGW-w64Сборка модулейСреда сборки
Тестирование VirtualBoxVMwareQEMUHyper-VНеобходимый объём дискаПеренос файлов на виртуальный дискУстановка ReactOSУстановка драйверов
Сеть Общие папкиSambaNFS
Игры Установка DirectPlay
Обновление ReactOSЗагрузочная флешкаЧем можно помочь проектуСоздание нового пользователяЗвук и сеть в VirtualBoxСъемка и публикация видеоIRC-каналСторонние компонентыFAQReactOS как рабочая станцияReactOS и UEFI
Обзоры ОболочкаNTVDMWOWCommunity EditionИстория сайтаReactOS ServerКриптографияПО времен XP