Обзор UEFI BIOS материнской платы ASUS Z87-K

13 Июн 2013

Обзор UEFI BIOS материнской платы ASUS Z87-K

Исследование архитектуры персональной платформы логично начать с из­учения BIOS и встроенной утилиты Setup. Объектом нашего ис­сле­до­ва­ния сегодня будет плата ASUS Z87-K на основе системной логики Intel Z87 для процессоров Socket 1150, интригующая размером микросхемы BIOS — 8 мегабайт (Winbond W25Q64FV). Посмотрим, какие возможности реализовал разработчик платформы, имея в своем рас­поряжении такой гигантский, по меркам firmware, объем.

Процесс познания пойдет легче, если мы объясним себе и читателям, что в качестве UEFI BIOS на плате ASUS Z87-K используется не самая новая разработка компании American Megatrends:программный код Aptio четвертой версии. По этой причине не стоит выискивать новизну там, где ее нет. Проще ознакомиться с анонсом Aptio V еще до чтения этого ма­те­ри­а­ла :)

Режим Flash Descriptor Mode. Хакеру на заметку

Одним из этапов исследования BIOS было считывание двоичного образа микросхемы с помощью программатора. Как и ожидалось, 32-битное слово по смещению 10h равно 0FF0A55Ah, что индицирует поддержку режима Flash Descriptor Mode. Системная логика Intel, начиная с южных мостов ICH8, входящих в состав набора 965, позволяет разработчику платформы использовать этот режим опционально. Для PCH, начиная с серии P55, использование этого режима, защищающего firmware платформы от несанкционированного доступа, стало обязательным.

Как же работает режим Flash Descriptor? Его смысл сводится к тому, чтобы SPI-контроллер, входящий в состав чипсета и обеспечивающий доступ к микросхеме BIOS, перестал быть послушным исполнителем команд чтения и записи, формируемых центральным процессором и другими системными ресурсами.

Посмотрим на таблицу 5-60 на стр. 289 документа «Intel 8 Series / C220 Series Chipset Family Platform Controller Hub (PCH)». Мы видим матрицу, в которой по X расположены ресурсы платформы (Processor, Intel Management Engine, Gigabit Ethernet Controller), а по Y – регионы Flash ROM. Матрица информирует о дисциплине управления доступом ресурса X к региону Y. Отметим наличие зарезервированных регионов, к которым запрещен доступ центральному процессору, например Platform Data Region.

Если перейти от теории к практике, то наилучшее представление о Flash Descriptor Mode можно получить ис­поль­зуя Flash Image Tools. (Обзор этого весьма полезного инструментария приведен в статье «Редактируем BIOS»).

Регион CPU/BIOS в разделе Master Access Section для ASUS Z87-KРегион Manageability Engine в разделе Master Access Section для ASUS Z87-KРегион GbE LAN в разделе Master Access Section для ASUS Z87-K
Рис 1. Раздел Master Access Section в образе Flash BIOS от материнской платы ASUS Z87-K.
(Click to enlarge!)

Режим Flash Descriptor Mode отображается с помощью утилиты FITC.exe из образа ROM в раздел Master Access Section, где он представлен тремя регионами:  CPU/BIOS, Manageability Engine и GbE LAN.

Чип Flash ROM. Сервисному инженеру на заметку

Как сказано в предисловии, UEFI BIOS материнской платы ASUS Z87-K хранится в чипе Winbond 25Q64FV. На сегодня это не единственный носитель, пригодный к использованию на данной платформе. Кроме него в таблице VSCC Table есть еще одна строка: Flash Device 2 опи­сы­ва­ет микросхему GD25Q64B, изготовленную компанией Gigadevice (Vendor ID = C8h).

Регион W25Q64FV в разделе VSCC Table для ASUS Z87-KРегион Flash ROM от Apple Computer в разделе VSCC Table для ASUS Z87-K
Рис 2. Содержимое таблицы VSCC: список поддерживаемых Flash ROM
(Click to enlarge!)

Микросхеме же Winbond 25Q64FV соответствует запись, содержащая код ее производителя (Vendor ID = EFh) и тип (Device ID = 4017h). Если сервисному инженеру понадобится на этой платформе использовать флеш-память другого производителя, данная информация поможет дополнить список поддерживаемых чипов «культурным способом», не прибегая к хакерским уловкам и трюкам.

Командный процессор UEFI BIOS и все что с ним связано

Запускаем UEFI Shell

Нам не удалось обнаружить UEFI Shell, встроенный в BIOS, предположительно на данной платформе он отсутствует. Поэтому мы пошли на некоторую хитрость и использовали внешний UEFI Shell, поместив его по зарезерви­ро­ван­но­му пути на загрузочном устройстве: \EFI\BOOT\BOOTX64.EFI.

Первый опыт программирования для UEFI

После его запуска, мы отладили ряд собственных 64-битных UEFI приложений, написанных на ассемблере. Была обнаружена следующая особенность: некоторые сервисные функции UEFI, в частности, Get Time (получение системного времени и даты) искажают стек вызывающей процедуры. Оказалось, что эти функции при выполнении операции Parameters Shadow (копирование в стековый фрейм входных параметров, полученных через регистры процессора) используют большее количество 64-битных слов, чем следует из количества параметров. Увеличение размера стекового фрейма решило проблему.

Поясним, что в 64-битном коде UEFI передача параметров происходит несколько своеобразно. При вызове подпрограммы с аргументами от одного до четырех используются специально предназначенные для этого регистры процессора – RCX, RDX, R8 и R9. Большее количество параметров передается через стек, но даже при передаче параметров через регистры, вызывающая процедура должна создать для них стековый фрейм. В этот фрейм вызываемая процедура копирует параметры. Эта операция называется Parameters Shadow. Обнаруженный нами сбой в работе механизма Parameters Shadow состоит в том, что копируется больше 64-битных слов, чем следует из количества параметров. Самый простой обходной маневр состоит в том, чтобы увеличить размер фрейма.

UEFI BIOS Setup

Главный экран визуализирует основные параметры функционирования платформы и поддерживает удобный инструмент, позволяющий быстро находить оптимальный компромисс по критериям:

  • Performance – производительность.
  • Quiet – бесшумность.
  • Energy Saving – экономия электроэнергии.

Главный экран настроек UEFI BIOS платы ASUS Z87-K

После перехода в Advanced Mode по клавише F7, нам доступны «продвинутые» возможности платформы.

Продвинутые настройки UEFI BIOS платы ASUS Z87-K доступны по клавише F7

Любителям разгона предоставляется широкий набор возможностей по управлению частотами и питающими напряжениями. Технология «узаконенного разгона» Intel Turbo Boost позволяет повышать тактовую частоту процессора с 3.5 GHz до 3.9 GHz.

Управление частотами и напряжениями на плате ASUS Z87-K

Это меню обеспечивает доступ к настройкам различных компонентов платформы.

Доступ к настройкам UEFI BIOS платы ASUS Z87-K

Экран конфигурации процессора содержит небольшую информационную утилиту, отображающую основные параметры,  набор поддерживаемых технологий и энергосберегающих состояний.

Конфигурирование параметров процессора в UEFI BIOS на плате ASUS Z87-K

Экран аппаратного мониторинга, традиционно сообщает о температурах, питающих напряжениях и скоростях вращения вентиляторов. Доступны опции, обеспечивающие бесшумное функционирование компьютера.

Аппаратный мониторинг в UEFI BIOS на плате ASUS Z87-K

Возможности UEFI в действии — утилита обновления BIOS обнаруживает подключенные дисковые устройства и позволяет выполнить загрузку файла без использования операционной системы.

Утилита обновления UEFI BIOS доступна для выполнения с USB-накопителя

Этот набор настроек будет полезен для обеспечения совместимости новейшего UEFI BIOS с существующей номенклатурой операционных систем, а также различными PCI и PCI Express адаптерами, использующих модули расширения BIOS на борту.

Compatibility Support Module полезен при загрузке ОС для совместимости с PCI-адаптерами

Порадовало наличие встроенной утилиты для просмотра информации о модулях оперативной памяти DIMM. Очевидно, используется информация SPD. Напомним, что каждый модуль DIMM содержит постоянное запоминающее устройство размером 256 байт, в котором хранятся  параметры модуля. Это устройство называется SPD или Serial Presence Detect. Микросхему EPROM легко обнаружить по характерному 8-контактному корпусу, расположенному в центре модуля или у края. 

Утилита UEFI BIOS от платы ASUS Z87-K подробно информирует об установенных DIMM-модулях

Резюме

Одним из отличий архитектуры UEFI от Legacy BIOS является поддержка файловой системы на уровне firmware платформы. Напомним, что Legacy BIOS, работает исключительно на уровне секторов, используя процедуры дискового сервиса, доступные посредством прерывания INT 13h. Преимущество архитектуры UEFI мы ощутили с первых шагов, начав сохранение снимков экрана Setup. Подключенный для сохранения снимков Flash диск, приобрел статус FS0: (File System 0), его файловая система доступна для просмотра. Справедливости ради заметим, что подобная функциональность в свое время появилась в BIOS ряда платформ, не поддерживающих UEFI, но ее реализация в рамках современных стандартов способствует улучшению совместимости с устройствами внешней памяти различных типов и моделей.

Отметим и другую тенденцию — начало процесса интеграции информационно-диагностических утилит во встроенное программное обеспечение персональной платформы.