Низкоуровневое исследование UEFI BIOS ноутбука ASUS T100T

10 Дек 2014

Низкоуровневое исследование UEFI BIOS ноутбука ASUS T100T

Известно, что попытка сделать несколько дел одновременно обычно дает негативный результат. Тем не менее, мы решили совместить низкоуровневое исследование UEFI BIOS ноутбука ASUS T100T, оказавшегося в нашей тестовой лаборатории с процессом отладки и тестирования нашего нового программного продукта UEFImark EBC Edition, ведь работая на уровне регистров, ячеек памяти и ассемблерного кода можно увидеть много такого, о чем не говорится на презентациях…

 

 

Эксперимент с обновлением firmware

Согласно сложившейся традиции, работу с устройством начинаем с обновления firmware. Мы заменили прошивку с версии 2.14 на 2.23. Что изменилось?

  1. Ноутбук приобрел способность обнаруживать и запускать UEFI-загрузчик с внешнего USB-накопителя по стандартному пути \EFI\BOOT\bootia32.efi (см. "В ноутбуках ASUS уже нет Legacy-загрузки?").
  2. С помощью утилиты BIOS Implementation Test Suite обнаружено, что устранена ошибка, приводившая к увеличению погрешности установки (или измерения) тактовой частоты процессора в тесте ACPI. Данный тест состоит в установке различных Power Management состояний процессора с последующим измерением тактовой частоты для каждого состояния.
  3. Также благодаря BIOSBITS мы определили, что устранена ошибка, приводившая к некорректным результатам в тесте, измеряющем временные соотношения при обработке SMI (System Management Interrupt) и время нахождения процессора в состоянии SMM (System Management Mode). Заметим, что одним из следствий этой ошибки могут быть сбои оборудования, связанные с недопустимым увеличением латентности при обработке внешних аппаратных прерываний.

32 или 64 бита?

Не обошлось без недоразумений. Ранее по сети разошлась информация, ноутбук снабжен 32-битным процессором. А по информации на сайте Intel, процессор Intel Atom CPU Z3740 поддерживает технологию Intel 64 (см. "Особенности реализации USB-подсистемы ноутбука ASUS T100T"). Но результаты наших последовательных попыток запуска 32-битного и 64-битного вариантов UEFI Shell с внешнего USB-накопителя, однозначно говорят о наличии только IA32 UEFI firmware. Итак, для прояснения ситуации, запускаем UEFImark EBC Edition и получаем такой результат:
 

Результат работы утилиты UEFImark EBC Edition

Строка Native width, bits: 32 означает, что UEFI firmware использует 32-битный режим работы процессора, а также, что для адресации системных объектов в пространстве адресуемой памяти используются 32-битные указатели и размер адресного пространства равен 4 Гигабайта или «2 в степени 32» байт.

Строка CPU features: iEM64T… означает, что процессор поддерживает 64-битный режим, но его включение возможно только после передачи контроля над платформой от UEFI к 64-битной операционной системе. 

Вывод: у нас 64-битный процессор, на котором запущен 32-битный UEFI. Получение системной информации непосредственно «из железа» гарантирует ее достоверность.

Резюме

Около двух лет назад из целого ряда независимых источников можно было услышать мнение о том, что реализация UEFI для IA32 является «вчерашним днем» и все выпускаемые PC-совместимые системы будут комплектоваться x64 UEFI firmware. И вот, в нашей тестовой лаборатории оказался новейший ноутбук от ASUS, снабженный 32-битной «прошивкой», несмотря на поддержку 64-битного режима процессором. Разумеется, приложения для x64 UEFI на нем запустить нельзя. Как разработчику системного программного обеспечения минимизировать риски в непредсказуемом и быстро меняющемся мире? Ответ на этот вопрос дает использование технологии EBC или EFI Byte Code, основанной на реализации в рамках UEFI виртуальной машины регистрового типа, архитектура которой не зависит от аппаратной реализации платформы. А чтобы окончательно потерять способность чему-либо удивляться, осталось только увидеть ноутбук на основе Itanium, и конечно, запустить на нем EBC-приложение…

Теги: