
При детальном рассмотрении контроллера xHCI, разработанного для поддержки USB 3.0, очевидно, что повышение скорости обмена до 5 гигабит в секунду является лишь малой частью свершившихся перемен. В частности, радикально переработан подход к организации Debug Port, предназначенного для отладки программного обеспечения, включая выдачу диагностических POST-кодов при выполнении процедур BIOS или UEFI Platform Initialization.
Что это означает для той части компьютерной индустрии, на которую возложены обязанности по сервисной поддержке персональных платформ? Ведь купить ПК — это полдела, важно также обеспечить его безукоризненное обслуживание. Прогноз по сервису — отказ от доминирующих сегодня диагностических POST-карт во всех конструктивах, кроме USB.
Два главных отличия
Главные отличия «старого» USB 2.0 EHCI Debug Port и «нового» USB 3.0 xHCI Debug Port затрагивают идеологию работы отладочного порта.
USB 2.0 Debug Port, несмотря на использование упрощенного протокола, сохраняет классическое распределение ролей между контроллером и подключенным устройством. Отлаживаемый компьютер является хостом. К его USB порту подключается специальное устройство — USB2 Debug Device, которое принимает диагностическую информацию, например, POST-коды.
USB 3.0 Debug Port, работает как дочернее устройство. Для его использования, необходим инструментальный компьютер, который является хостом, USB подсистема которого функционирует обычным образом. Инструментальный компьютер «видит» Debug Port отлаживаемого компьютера как дочернее USB устройство, для этого они соединяются специальным кабелем, согласно USB 3.0 Specification, пункт 5.5.2. Данная топология рассмотрена в спецификации USB3.0 в разделе Debugging Topologies ( пункт 7.6.1):
Рис 1. Пример использования USB 3.0 Debug-порта
Второе отличие существенно при использовании отладочного порта для вывода POST-кодов. Оно касается обеспечения функционирования контроллера USB 2.0 в условиях недоступности оперативной памяти на ранних этапах инициализации платформы. Напомним, проблема состоит в том, что контроллер USB является bus-master устройством и обменивается информацией с центральным процессором через оперативную память.
USB 2.0 Debug Port, использует упрощенный протокол, при котором размер блоков данных, передаваемых между контроллером и устройством ограничен значением 8 байт. Это позволяет размещать данные в специальном буфере, который является частью memory-mapped регистров контроллера EHCI, не используя оперативную память и режим bus-master.
Отладочный порт USB 3.0 использует оперативную память в режиме bus-master, не ограничивая этим свою функциональность. Для обеспечения работы такого устройства на ранних этапах инициализации платформы, допускается реализация небольшого собственного блока памяти в диапазоне memory-mapped регистров контроллера.
Преимущества программной модели
Регистровые поля, предназначенные для управления всеми опционально поддерживаемыми функциями, находятся в специальном диапазоне memory-mapped регистров, который называется xHCI Extended Capabilities List. К рассматриваемой предметной области относятся две структуры:
- Debug Capability Structure, управляет работой отладочного порта.
- xHCI Local Memory Capability Structure, позволяет предоставлять память для bus-master операций контроллера отладочного порта. Это необходимо в условиях недоступности оперативной памяти на ранних этапах инициализации платформы. При работе Debug Port в сеансе ОС такой необходимости нет, хотя использование собственной локальной памяти, сделает работу отладчика менее заметной для отлаживаемой программы.
Примеры реализации
Из устройств, доступных сегодня на рынке, поддержка диагностического USB3.0 порта присутствует в адаптерах производства ST Labs на основе xHCI-контроллеров uPD720201 и uPD720202 производства Renesas. Работа с локальной памятью в указанных устройствах не поддерживается, что делает данную функциональность применимой только для отладки в сеансе операционной системы.
Более консервативна политика корпорации Intel – чипсеты Intel 8-series, несмотря на поддержку USB3.0, обеспечивают только «старый» USB2.0 EHCI Debug Port.
Резюме
При наличии соответствующей программной поддержки, схема соединения Host-to-Host может найти весьма неожиданные применения. Так с ее помощью можно организовать небольшую локальную сеть по USB.
Другой пример — соединение в рамках одной персональной платформы двух USB-портов, один из которых будет принимать и обрабатывать данные в режиме Debug Port, а второй — передавать их. Так мы получим режим диагностической обратной связи (Loopback Mode), удобный для проверки сигнальных цепей контроллера.