Особенности AMI UEFI firmware

в 8:55, , рубрики: EHCI, RMH, xHCI, интерфейсы, метки: , ,

В одной из предыдущих публикаций[1] мы затронули такой, казалось бы, очевидный вопрос: «Как убедиться в том, что флешка работает в USB 3.0?» Голоса в обсуждении сначала ехидно отметили, что той статье не хватает тэга «садомазо», а затем как бы испугавшись собственного эго, вычеркнули эту мысль из нашего сознания.

Но эта мысль уже ранила неокрепшие умы экспериментаторов. Появилось желание проверить доступность USB 3.0 для любого подключенного устройства еще на этапе старта (например, в UEFI Shell) до запуска операционной системы. Для начала была написана небольшая утилита CheckUSB (которая, правда, пока рассчитана только на работу с некоторыми реализациями 8-й версии чипсетов Intel).

image
Рис 1. Эксперименты с утилитой CheckUSB на ноутбуке ASUS T300LA

В подходе к мобильной платформе оказалось, что в ряде случаев, при перезагрузке, UEFI firmware ноутбука инициализирует USB-подсистему не полностью, оставляя часть работы операционной системе.

Опция xHCI Pre-Boot Mode в установках UEFI firmware
Рис 2. Опция xHCI Pre-Boot Mode в установках UEFI firmware ноутбуке ASUS T300LA

Например, если в CMOS Setup исходное состояние опции xHCI Pre-Boot Mode установлено Disable, заменяем на Smart Auto, и не загружая операционную систему запускаем утилиту CheckUSB, то видим, что список устройств, подключенных к контроллеру xHCI пуст. Это означает, что для обслуживания подключенных USB-устройств используется контроллер EHCI.
USB Routing to EHCI
Рис 3. Подключение USB-устройств к Enhanced Host Controller Interface на ноутбуке ASUS N750JK до запуска Windows

Итак, если сразу после включения загрузиться в UEFI, не запуская Windows, то получаем:

  • USB 2.0 Port Routing = 0, 14 соединений USB2 подключены к EHCI
  • USB 3.0 Port SuperSpeed Enable = 0, 4 соединения USB3 отключены

При этом значения масок показывают, что операционная система имеет право переключить соединения на обслуживание xHCI:

  • USB 2.0 Port Routing Mask = 00003FFFh
  • USB 3.0 Port Routing Mask = 0000000Fh

Список устройств пуст, поскольку мы отображаем только регистры xHCI, а устройства переведены на обслуживание EHCI с использованием RMH. Описание битовых полей доступно в статье «Диагностическая утилита CheckUSB»[2], [3].

Если перезагрузку повторить после старта операционной системы, все устройства оказываются корректно подключенными к контроллеру xHCI.
USB Routing to xHCI
Рис 4. Подключение USB-устройств к eXtensible Host Controller Interface на ноутбуке ASUS N750JK при загрузке после Windows

Логика управления доступом к портам «помнит» состояние, имевшее место до перезагрузки:

  • USB 2.0 Port Routing = 03FFFh, 14 соединений USB2 подключены к USB2-подсистеме xHCI
  • USB 3.0 Port SuperSpeed Enable = 0Fh, 4 соединения USB3 могут использовать режим SuperSpeed

.
Напомним, что количество внешних USB3-портов на исследуемой платформе ASUS N750JK равно 4.

Ссылки

  1. Как убедиться, что флешка работает в USB 3.0?
  2. Диагностическая утилита CheckUSB
  3. Как проверить режим USB3?

Автор: icbook

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js