ASUS поддерживает унифицированный подход к обновлению UEFI

06 Окт 2017

ASUS поддерживает унифицированный подход к обновлению UEFI

В ходе исследования ноутбука Asus ROG Strix GL702ZC с помощью ин­фор­ма­ци­он­но-диагностической утилиты Read Universal можно об­на­ру­жить на­ли­чие таблицы EFI System Resource Table в списке системных объ­ек­тов UEFI. Отметим, что данная таблица была определена в спе­ци­фи­ка­ции рас­ши­ря­е­мо­го интерфейса еще два года назад и ее появление в ноутбуке GL702ZC мож­но считать сюр­при­зом с большой натяжкой, так как ESRT пред­наз­на­че­на для описания всех устройств, содержащих firm­ware. Событие от ASUS (а если учесть, что платформа оснащена Aptio V, то правильнее го­во­рить о за­слу­ге American Megatrends) состоит в низ­ко­уров­не­вой поддержке NVMe-на­ко­пи­те­лей про­грам­мным продуктом, ка­ко­вым и является UEFI. Что ожидать от этой новинки и какие пре­и­му­ще­ства сулит она поль­зо­ва­те­лям?

Таблица ESRT в списке системных объектов UEFI ноутбука Asus ROG Strix GL702ZC (скриншот утилиты Read Universal)
Рис 1Таблица ESRT в списке системных объектов UEFI ноутбука Asus ROG Strix GL702ZC
(скрин-шот утилиты
Read Universal)

AMI унифицирует обновление микрокодов NVMe-устройств

Разобраться в ситуации помог пресс-релиз компании American Megatrends, в котором прозвучало заявление о но­вых подходах в методе обновления микрокодов NVMe-накопителей. Инициатива основана на использовании упо­мя­нутой выше таблицы EFI System Resource Table, ранее документированной в спецификации UEFI. Ее со­дер­жи­мое теперь дополняется записями, декларирующими программные особенности уста­нов­лен­ных NVMe-уст­ройств и процедур Firmware Management Protocol. Последние нужны для обслуживания до­ступа к фи­зи­че­ским но­си­те­лям встроенного программного обеспечения. Не забыта и эргономика: обновление мо­жет быть вы­пол­не­но в гра­фи­че­ской оболочке Aptio V UEFI BIOS setup либо при очередной перезагрузке.

Низкоуровневое UEFI-обеспечение Aptio V от компании American Megatrends на игровой платформе ASUS ROG Strix GL702ZC
Рис 2. Головной экран страницы UEFI-установок ноутбука Asus ROG Strix GL702ZC

Фактор унификации

Если характеризовать инициативу AMI одним словом, то это будет слово «унификация». В силу исторических при­чин (и mass storage устройства не исключение) процесс обновления UEFI платформы или ее компонентов ASUS, как и многие другие, выполняет проприетарными утилитами, взаимодействующими с проприетарными ап­па­рат­ными ресурсами. Стоимость такой разработки и ее последующего сопровождения не соответствуют современным требованиям. Сегодня в цене стандартный интерфейс, определенный в UEFI Specification. Рассмотрим два сис­тем­ных объекта, его ре­а­ли­зу­ю­щих: EFI System Resource Table (ESRT) и Firmware Management Protocol (FMP).

EFI System Resource Table

Таблица EFI System Resource Table декларирует список системных ресурсов, каждый из которых располагает встро­ен­ным программным обеспечением и допускает его обновление. Проще говоря, это список компонентов, по­тен­ци­аль­ных кан­ди­да­тов на «перешивку». Под компонентом здесь может подразумеваться как физически об­осо­б­лен­ный объект (UEFI BIOS системной платы или PCI ROM периферийного устройства), так и логическая единица (UEFI-драйвер).

Определение ESRT согласно UEFI Specification 2.7
Рис 3. Определение ESRT согласно UEFI Specification 2.7

Заголовок таблицы ESRT определяет текущее и максимальное количество записей, а также номер версии.

Формат таблицы ESRT согласно UEFI Specification 2.7
Рис 4. Формат таблицы ESRT согласно UEFI Specification 2.7

Далее, располагается последовательность записей, каждая из которых декларирует компонент, допускающий обновление.

Формат одной записи в таблице ESRT согласно UEFI Specification 2.7
Рис 5. Формат одной записи в таблице ESRT согласно UEFI Specification 2.7

Рассмотрим свойства обновляемого компонента:

  • FwClass содержит идентификатор компонента в виде 128-битного числа EFI_GUID.
  • FwType определяет тип компонента: firmware системной платы, firmware периферийного устройства, UEFI-драйвер. Нестандартные компоненты могут использовать вариант Type Unknown.
  • FwVersion идентифицирует версию установленного компонента.
  • LowestSupportedFwVersion ограничивает минимально допустимый номер версии. Ограничение может быть использовано в целях предотвращения «отката» на устаревшие версии,  не обеспечивающие заданный уро­вень безопасности.
  • CapsuleFlags содержит набор флагов, управляющих интерпретацией файлов обновления firmware.
  • LastAttemptVersion идентифицирует версию ранее загруженного обновления. Заметим, что версия об­нов­ле­ния может не совпадать с версией установленного компонента если имела место ошибка либо процесс пе­ре­за­пи­си Flash ROM не завершен.
  • LastAttemptStatus отражает результат обновления а также позволяет идентифицировать ошибки, при­чи­на­ми которых могут быть аппаратный сбой, несоответствие версии или формата, ограниченный ресурс ак­ку­му­ля­тор­ной батареи мобильного устройства и т. п.

Firmware Management Protocol

Сервисные подпрограммы, реализованные в составе Firmware Management Protocol обеспечивают получение сис­тем­ной информации, включая атрибуты установленных компонентов встроенного ПО и загруженных обновлений, чтение и перезапись компонентов а также управление версиями. В соответствии с номенклатурой ус­та­нов­лен­ных уст­ройств, в системе может присутствовать более одного экземпляра FMP.

Определение FMP согласно UEFI Specification 2.7
Рис 6. Определение FMP согласно UEFI Specification 2.7

Управляющий блок Firmware Management Protocol содержит указатели на точки входа в процедуры, реализующие функциональность протокола.

Формат управляющего блока FMP согласно UEFI Specification 2.7
Рис 7. Формат управляющего блока FMP согласно UEFI Specification 2.7

Рассмотрим некоторые API-функции, доступные приложениям:

  • GetImageInfo возвращает информацию о текущем установленном firmware, функция может быть полезной не только для утилит обновления firmware, но и для получения данных о платформе и периферийных ус­т­рой­ст­вах.
  • GetImage позволяет прочитать двоичный образ установленного firmware, может применяться для создания резервной копии перед обновлением.
  • SetImage обновляет firmware, эта функция осуществляет физическую перезапись содержимого Flash ROM, после ряда предварительных проверок.
  • CheckImage позволяет проверить соответствие заданного двоичного файла обновления заданному ус­т­рой­ству без выполнения перезаписи.

Выводы

Периферийное устройство, снабженное встроенным ПО, определяет низкоуровневые методы его обновления. Та­кие методы всегда специфичны для данного класса устройств, а в большинстве случаев, имеют особенности ре­а­ли­за­ции, характерные для конкретного производителя и даже модели. Не является исключением команда Firm­ware Image Download, определенная в архитектуре NVMe, стандартные параметры которой управляют только ад­ре­са­ци­ей и длиной загружаемого блока, оставляя детали реализации в статусе Implementation-Specific.

Описание параметров команды Firmware Image Download согласно NVMe Specification 1.3
Рис 8. Описание параметров команды Firmware Image Download согласно NVMe Specification 1.3

При наличии в устройстве Option ROM, в нем могут быть размещены подпрограммы, реализующие поддержку не­стан­дарт­ных особенностей архитектуры, либо новых классов оборудования, не обслуживаемых UEFI платформы, но при этом обеспечивающие унифицированный интерфейс согласно Firmware Management Protocol. При старте платформы, UEFI детектирует такие устройства и составляет их список, каковым является таблица EFI System Resource Table.

В идеале, приложение, управляющее обновлением встроенного ПО, может реализовать свою функциональность, взаимодействуя исключительно с унифицированными объектами ESRT и FMP и не обращаясь к Implementation-Specific аппаратным ресурсам. Действует классический принцип инкапсуляции.

Вместо послесловия

Словосочетание «обновление прошивки» сегодня на слуху не только  технических специалистов, но и рядовых поль­зо­ва­те­лей. Законы рынка заставляют производителей сокращать сроки разработки и верификации, в ре­зуль­та­те, приобретая очередную новинку, потребитель нередко получает инженерный релиз продукта. Тестирование, устранение ошибок и расширение функциональности происходит уже во время эксплуатации. Впрочем, это об­сто­я­тель­ство никогда не смущало энтузиастов: редактирование встроенного программного обеспечения сис­тем­ных плат и периферийных устройств давно стало объектом «спортивного интереса», а значит, упрощение обновления firmware NVMe-накопителей позитивно как с технической, так и с маркетинговой точек зрения.

Теги: