Board.KolibriOS.org

Официальный форум KolibriOS
Текущее время: Пт дек 15, 2017 11:17 am

Часовой пояс: UTC+03:00




Начать новую тему  Ответить на тему  [ 4 сообщения ] 
Автор Сообщение
 Заголовок сообщения: Поиск USB устройства
СообщениеДобавлено: Ср окт 19, 2016 11:15 am 
Не в сети

Зарегистрирован: Ср окт 19, 2016 11:01 am
Сообщения: 2
Добрый день, я пытался разобраться со стандартом ECHI контроллера, но у меня остались некоторые вопросы и пробелы в знаниях. Хотя может что-то неправильно понял.

Как контроллер сообщает о новом устройстве на шине? Как определить какие устройства и на какой скорости подключены к данному ECHI контроллеру? Как я понял из стандарта при подключении устройства ему выдается номер на шине и проходит его установка через entry_point_0, все дальнейшее общение ложится на плечи драйвера устройства. А в случае когда я смотрю регистры контроллера в Windows через RWE где можно посмотреть эту информацию?

Я пытался смотреть в PORTSC из operational registers, но у меня данные не совпадают с реальностью, я подключил 3 устройства: 2 флешки и LS-мышь. А проходя по регистрам бит Current Connection Status стоит только у одного. И у всех портов сброшен 13 bit - Port Owner. Может ли влиять на эту ситуацию наличие xCHI контроллера?


Вернуться к началу
 Заголовок сообщения: Re: Поиск USB устройства
СообщениеДобавлено: Ср окт 19, 2016 5:45 pm 
Не в сети
Kernel Developer
Аватара пользователя

Зарегистрирован: Чт сен 03, 2009 1:52 pm
Сообщения: 1601
Контроллеры называются *HCI, не CHI.

Если в системе есть USB3-контроллер XHCI, то устройства, подключённые к его портам, он не отдаст другим контроллерам. Часто бывает так, что в системе некоторые из портов отведены под XHCI-контроллер, некоторые - под EHCI. В таком случае через EHCI будут в принципе видны только некоторые устройства - те, которые подключены к отведённым под него портам.

EHCI сам по себе умеет обрабатывать только устройства на скорости High-Speed, USB2. Устройства Low-Speed и Full-Speed он делегирует USB1-контроллерам-компаньонам UHCI либо OHCI. Бит Port Owner отвечает как раз за делегирование - если он 1, то устройство делегировано компаньону, EHCI-контроллер про него забыл.

Есть трюк, позволяющий избежать включения UHCI/OHCI-контроллеров в систему с EHCI: устройства подключены не напрямую к контроллеру, а через виртуальный хаб. Виртуальный хаб всегда работает на High-Speed, его делегировать не нужно, компаньоны не нужны. Этот трюк особенно любит Intel. Твоя конфигурация, похоже, именно такая - только один порт connected, на нём висит виртуальный хаб, всё остальное - не считая устройств, подключённых к XHCI-портам - висит на портах виртуального хаба. Которых ни в каких регистрах просто не видно.

По регистрам контроллера можно определить только базовые вещи - подключено устройство или нет, и на какой скорости оно подключено. Устройство, подключённое к EHCI, может работать только на High-Speed, в регистрах OHCI и UHCI есть отдельный бит Low-Speed. Вся информация о том, что это за устройство, хранится только в структурах операционной системы.

В винде иерархию подключённых USB-устройств показывает USBView из Debugging Tools. В линуксе - lsusb -t и lsusb -v.

_________________
Сделаем мир лучше!


Вернуться к началу
 Заголовок сообщения: Re: Поиск USB устройства
СообщениеДобавлено: Чт окт 20, 2016 4:51 pm 
Не в сети

Зарегистрирован: Ср окт 19, 2016 11:01 am
Сообщения: 2
С *CHI я что-то погорячился :roll:
В моем случае, видимо, XHCI ничего не забирает себе.
Тогда есть другой вопрос, если я сам сформирую QHead и QTD к какому либо устройству, допустим к мыши, и вставлю в периодическую очередь контроллера, имеет ли смысл делать их LS или FS? Или так как хаб HS-устройство, они все равно будут преобразованы в HS?


Вложения:
Безымянный.png
Безымянный.png [ 72.46 КБ | 778 просмотров ]
Вернуться к началу
 Заголовок сообщения: Re: Поиск USB устройства
СообщениеДобавлено: Чт окт 20, 2016 5:48 pm 
Не в сети
Kernel Developer
Аватара пользователя

Зарегистрирован: Чт сен 03, 2009 1:52 pm
Сообщения: 1601
В Queue Head у EHCI есть двухбитовое поле Endpoint Speed, его нужно заполнять в соответствии со скоростью конечного устройства. Для LS и FS-устройств нужно ещё заполнить адрес на шине последнего HS-хаба на пути к устройству и порт на этом хабе. Дальше контроллер с хабом сами разберутся.

_________________
Сделаем мир лучше!


Вернуться к началу
Показать сообщения за:  Поле сортировки  
Начать новую тему  Ответить на тему  [ 4 сообщения ] 

Часовой пояс: UTC+03:00


Кто сейчас на конференции

Сейчас этот форум просматривают: Bing [Bot] и 1 гость


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Limited
Русская поддержка phpBB