Board.KolibriOS.org

Official KolibriOS board
It is currently Wed Nov 13, 2019 2:29 am

All times are UTC+03:00




Post new topic  Reply to topic  [ 4 posts ] 
Author Message
PostPosted: Wed Oct 19, 2016 11:15 am 
Offline

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

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

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


Top
   
PostPosted: Wed Oct 19, 2016 5:45 pm 
Offline
Kernel Developer
User avatar

Joined: Thu Sep 03, 2009 1:52 pm
Posts: 1621
Контроллеры называются *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.

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


Top
   
PostPosted: Thu Oct 20, 2016 4:51 pm 
Offline

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


Attachments:
Безымянный.png
Безымянный.png [ 72.46 KiB | Viewed 2271 times ]
Top
   
PostPosted: Thu Oct 20, 2016 5:48 pm 
Offline
Kernel Developer
User avatar

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

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


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 4 posts ] 

All times are UTC+03:00


Who is online

Users browsing this forum: No registered users and 0 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Limited