В отличие от синтетических тестов визуализация системных ресурсов (регистров, полей, таблиц, переменных и т.п.) строго определена архитектурой платформы. Тем интереснее прикоснуться к ней на самом раннем этапе. Выбирать из перечня программных средств, способных работать с UEFI-интерфейсом, особо не приходится. На сегодня доступны два продукта:

  • Read Universal, разработанный Джеймсом Вангом — программистом из тайваньского филиала American Megatrends;
  • Debug Utility, Rev.19 от Хуан Бохань (Huang Bohan) — заброшенный проект китайского энтузиаста.

Из последнего набора программных средств заслуживает внимания семейство BDUEFI в первую очередь тем, что в нем реализован механизм сохранения скриншотов, чего никак не сделает Джеймс Ванг, хотя по функциональности этот сет утилит является подмножеством RU32/RU64.

О системных ресурсах

В нашем случае стоит анализировать конфигурационное пространство PCI-шины с помощью 32-битной BDUx32 v1.1.5. Всего утилита детектирует 9 агентов на PCI-шине. Для каждого из них мы сохраняем скриншот, публикуя, правда, только один из них, чтобы не перегружать текст иллюстрациями:

Полный листинг устройств, полученных с помощью агрессивного сканирования PCI-шины

Полный листинг устройств, полученных с помощью BDUx32, выглядит следующим образом:

  • 0f00, Atom Processor Z3735F Transaction Register, Bus:0, Device:0, Func:0
  • 0f08, Atom Processor Z3735F PWM Controller, Bus:0, Device:30, Func:1
  • 0f09, Atom Processor Z3735F PWM Controller, Bus:0, Device:30, Func:2
  • 0f16, Atom Processor Z3735F SDIO Controller, Bus:0, Device:18, Func:0
  • 0f18, Atom Processor Z3735F Trusted Execution Engine, Bus:0, Device:26, Func:0
  • 0f31, Atom Processor Z3735F Graphics & Display, Bus:0, Device:2, Func:0
  • 0f34, Atom Processor Z3735F USB EHCI, Bus:0, Device:29, Func:0
  • 0f50, Atom Processor Z3735F eMMC 4.5 Controller, Bus:0, Device:23, Func:0
  • 0f1c, Atom Processor Z3735F Power Control Unit, Bus:0, Device:31, Func:0

Особых неожиданностей нет: отсутствие WiFi-контроллера вполне согласуется с полученными ранее результатами (см. «На что способен беспроводный адаптер?»). Три PCI-устройства (в т.ч. два широтно-импульсных модулятора) ответственны за питание системы и ее компонентов. Их обязанности – сотрудничество с контроллером питания AXP288D от X-Powers. Не обнаружен звуковой чип; в такой комплектации с аудио-контролером Realtek ALC5640 выпускается пока только стик-компьютер MeeGoPad T02.

Кто нарушил спецификацию PCI?

Вернемся к диагностике PCI-шины, но уже с помощью утилиты RU32 от Джеймса Ванга.

Классическое сканирование PCI-шины находит меньше устройств, чем при агрессивном сканировании

Очевидно, что количество обнаруженных PCI-устройств существенно меньше, чем в предыдущем эксперименте: оба PWM-контроллера (выделено красным) отсутствуют в списке. Почему? Давайте разбираться.

В списке отсутствуют две функции, принадлежащие многофункциональному Serial IO устройству с координатами Bus:0, Device:30. Джеймс Ванг, как сотрудник American Megatrends (во всяком случае, он это утверждает), пользуется типовым с точки зрения спецификации алгоритмом сканирования PCI-шины. Этот алгоритм совершенно законно предполагает наличие у этого устройства Func:0, и если данная функция не обнаружена, дальнейшее сканирование функций со старшими номерами не выполняет.

Действия программиста совершенно оправданы, так как ситуация с нумерацией PWM-контроллеров незаконна с точки зрения PCI-спецификации:

Как спецификация PCI-шины описывает процедуру сканирования устройств

Хуан Бохань в своей Debug Utility пользуется агрессивным сканированием, в результате чего получается более полный список обнаруженных устройств.

Но кто же нарушил спецификацию? Как ни смешно, но виновата в большей степени компания American Megatrends, в которой работает Джеймс. Ведь это AMI Aptio инициализировал процессор Z3735F таким образом, что Func:0 оказалась запрещенной при доступных функциях Func:1 и Func:2. Их видимость в конфигурационном пространстве настраивается программно. Другое дело, что приемка со стороны Intel упустила сей момент. Как это отразится на диагностике платформы в среде операционных систем, мы попытаемся узнать в следующий раз.

Окончание.
Начало см. в статье «Наставления по UEFI-диагностике»


20.01.2018