Особенности реализации USB-подсистемы ноутбука ASUS T100T

06 Дек 2014

Особенности реализации USB-подсистемы ноутбука ASUS T100T

Решения system-on-chip (SoC) все чаще встречаются в мобильных устройствах. В качестве примера можно привести процессоры Intel Atom семейств Z36xxx и Z37xxx, интегрирующие процессорные ядра, видео адаптер, контроллер оперативной памяти и набор периферийных интерфейсов в одной микросхеме. Таким образом, контроллер USB вошел в состав центрального процессора. Попробуем разобраться в сути произошедших изменений, изменилась ли архитектура контроллера или речь идет исключительно о перемещении данного узла из чипсета в процессор. Исследуем, например, ноутбук ASUS T100T, на основе процессора Intel Atom CPU Z3740.

Возможности CMOS Setup

Достаточно зайти в окно настройки подсистемы USB в CMOS Setup ноутбука, чтобы понять, что по сравнению с наборами системной логики Intel 8 Series, многое изменилось. Контроллеры USB 2.0 EHCI (Enhanced Host Controller Interface) и USB 3.0 xHCI (Extensible Host Controller Interface) по-прежнему присутствуют, но включить можно только один из них, выбирая между производительностью USB 3.0 и совместимостью USB 2.0. Для сравнения, вспомним, что для систем на основе Intel 8 Series Platform Controller Hub характерна конфигурация, при которой оба контроллера работают одновременно с использованием механизма Port Routing, обеспечивающего динамический программно-аппаратный арбитраж в сеансе ОС.

Контроллер USB 2.0 EHCI

Контроллер USB 2.0 совместно с концентратором Rate Matching Hub обеспечивает режимы передачи данных Low, Full, High-speed. Дополнительные опции – поддержка USB 2.0 Debug-порта и кэширование информации при доступе контроллера к оперативной памяти в режиме bus master, обеспечивающее минимизацию шинного трафика. Поддерживается до четырех портов, их количество дополнительно определяется разработчиком платформы.

Контроллер USB 3.0 xHCI

Контроллер USB 3.0 обеспечивает все существующие режимы передачи данных (Low, Full, High, Super-speed). Поддерживается до 7 портов, причем в режиме Super-Speed может работать только один порт. Количество задействованных портов дополнительно определяется разработчиком платформы.

В документации на Intel Atom Z36xx/Z37xx упоминается поддержка USB 3.0 Debug-порта. Регистровое поле xHCI Debug Capability-структуры можно обнаружить, просматривать дамп регистров контроллера с помощью утилиты RU32.efi. Объект поиска – Capability ID 0Ah.

О функциональности USB 3.0 Debug-порта сегодня можно говорить только с рядом оговорок: xHCI Debug Capability-структура находится в неинициализированном состоянии и есть основание полагать, что данное средство отладки платформы будет реализовано в будущем.

Топология подсистемы USB и дополнительные возможности


Рис.1Схема подключения контроллеров USB 2.0 EHCI и USB 3.0 xHCI в процессорах семейства Intel Atom Z36xxx / Z37xxx

Схема, приведенная на рис.1 обеспечивает два режима работы, выбор между которыми осуществляется посредством CMOS Setup: 

  1. Контроллер USB 3.0 xHCI включен, USB 2.0 EHCI выключен. В этой конфигурации доступно четыре порта USB 2.0, один порт USB 3.0 и два канала HSIC. Отметим, что технология HSIC (High Speed Inter Chip) позволяет использовать контроллер USB для организации связей между микросхемами на печатной плате. При этом применяется готовый протокол (USB) вместо разработки собственного метода взаимодействия компонентов устройства. Вместе с тем, физическая реализация такого канала существенно отличается от шины USB. Каналы HSIC можно использовать только в том случае, если включен контроллер xHCI, а поскольку в рассматриваемом ноутбуке существует возможность отключения xHCI, логично предположить, что HSIC не используется.
  2. Контроллер USB 2.0 EHCI включен, USB 3.0 xHCI выключен. В этой конфигурации доступно 4 порта USB 2.0. Порт USB 3.0 Super Speed не поддерживается, использование HSIC невозможно. Этот режим обеспечивает совместимость с устаревшим программным обеспечением ценой снижения производительности и функциональности.

Контроллеры USB в конфигурационном пространстве

Воспользовавшись UEFI-загрузкой и 32-битной версией утилиты RU32.EFI, проверим наличие контроллеров USB в конфигурационном пространстве.

  • В CMOS Setup, в экране управления подсистемой USB выбираем контроллер xHCI, загружаем 32-битный UEFI Shell, запускаем утилиту RU32.EFI, нажимаем F6 (List PCI Devices). По адресу Bus=0, Device=14h, Function=0 присутствует устройство с параметрами Vendor=8086h (Intel), Device=0F35h (контроллер USB 3.0 xHCI процессоров Intel Atom Z36xxx / Z37xxx).
  • В CMOS Setup, в экране управления подсистемой USB выбираем контроллер EHCI, загружаем 32-битный UEFI Shell, запускаем утилиту RU32.EFI, нажимаем F6 (List PCI Devices). По адресу Bus=0, Device=1Dh, Function=0 присутствует устройство с параметрами Vendor=8086h (Intel), Device=0F34h (контроллер USB 2.0 EHCI процессоров Intel Atom Z36xxx / Z37xxx).

Резюме

Как следует из документации, невозможность одновременного включения контроллеров USB 2.0 и USB 3.0 является архитектурной особенностью рассматриваемой системной логики, а не частным ограничением, связанным с работой firmware платформы. Отметим, что коммутаторы, обеспечивающие подключение заданного USB порта к заданному контроллеру по-прежнему присутствуют на блок-схеме подсистемы USB, но теперь операционная система не управляет ими динамически. Выбор одного из контроллеров (USB 2.0 или USB 3.0) выполняет процедура POST на основании установок CMOS Setup. Можно констатировать, что динамическое балансирование на грани производительности и совместимости с использованием совместно работающих контроллеров-компаньонов, обслуживающих различные режимы передачи уходит в прошлое…