Прощай, POST-карта!

15 Июн 2013

Прощай, POST-карта!

При детальном рассмотрении контроллера xHCI, разработанного для под­держки USB 3.0, очевидно, что повышение скорости обмена до 5 гигабит в секунду является лишь малой частью свершившихся перемен. В част­нос­ти, радикально переработан подход к организации Debug Port, пред­наз­на­чен­ного для отладки программного обеспечения, включая вы­да­чу ди­а­гно­стических POST-кодов при выполнении процедур BIOS или UEFI Plat­form 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 в условиях недоступности оперативной памяти на ранних этапах ини­ци­а­ли­за­ции платформы. Напомним, проблема состоит в том, что контроллер 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), удобный для проверки сигнальных цепей контроллера.