Несколько месяцев назад лаборатория IC Book, приступая к работе над проектом «Железо» поставила перед собой задачу — освоить разработку графических 64-битных приложений под UEFI. Настало время инвентаризации сделанного. Первой ласточкой стала утилита измеряющая скорость записи в видео память и выводящая информацию о графических возможностях видео системы и сведения об архитектуре процессора.

Сегодня мы предлагаем вниманию аудитории инженерный релиз программы UEFImark v0.9. Как и в любом подобном проекте предстоит длительный процесс эволюции, расширения возможностей и, конечно, работа над ошибками…

UPD. Последние версии утилиты UEFImark доступны в разделе исходных кодов.

Графические возможности UEFImark

Основной графической технологией в среде UEFI является Graphics Output Protocol (GOP). Именно его задействует UEFImark для получения базового адреса и размера диапазона доступа к видео памяти, а также информации о форматировании данного диапазона. Построение графических объектов выполняется операциями записи в видео память со стороны центрального процессора. В дальнейшем планируется использовать продвинутые возможности протокола GOP, в частности, операцию BLT (Block Transfer), позволяющую подключить аппаратную 2D акселерацию.

Состав выводимой информации

Состав данных, визуализируемых утилитой UEFImark, рассматривается и комментируется в статье «О чем информирует UEFImark?»

Использование UEFI-протоколов

При запуске до переключения в графический режим утилита UEFImark инициализирует и использует следующие UEFI-протоколы для обеспечения своей дальнейшей работы:

  • EFI Simple Text Output Protocol – вывод текстовых сообщений;
  • EFI Simple Text Input Protocol – обслуживание клавиатуры;
  • EFI Simple File Protocol – использование файловых операций.

Конфигурирование UEFImark

Текущая версия утилиты UEFImark поддерживает размещение файла конфигурации только в корневом каталоге текущего диска, отформатированного в соответствии с требованиями UEFI для работы с файловой системой FAT32. Конфигурационный файл создается при первом запуске утилиты и может подвергаться правкам, вплоть до удаления, в любой момент по желанию пользователя.

Параметры целевого видео режима загружаются из текстового файла в ASCII-кодировке с зарезервированным именем uefimark.cfg:

  • Xsize = разрешение по горизонтали;
  • Ysize = разрешение по вертикали.

При указании несуществующего видео режима, устанавливается режим с ближайшим значением Xsize.

Скриншоты и текстовые рапорты

Графический образ экрана и текстовый файл отчета создаются в процессе работы UEFImark по нажатию клавиш:

  • F9 – текстовый рапорт в ASCII-кодировке;
  • F10 – скриншот в виде неупакованного BMP-файла.

Состав текстового рапорта можно проиллюстрировать следующим примером:

UEFImark v0.9. (C)IC Book Labs.
http://jelezo.com.ua/
September, 02 2013 Monday 16:06:37

Intel(R) Xeon(R) CPU E3-1270 v3 @ 3.50GHz
TSC: 3498.0 MHz iEM64T MMX SSE SSE2 SSE3 SSSE3 SSE4.1 SSE4.2 AVX
GOP video mode 7, X=1600, Y=1200, BPP=32
Video memory writes (MB/S): 303.2 (SSE), 74.1 (386)

Скорость записи в видеопамять, измеренная в мегабайтах в секунду, дается для 128-битных SSE-операций и стандартных 32-битных строковых пересылок раздельно. Это значение может быть опущено, если в процессе измерения выполнение UEFImark прерывается клавишей F9. В этом случае последняя строка рапорта будет выглядеть так:

Video memory writes (MB/S): (benchmarks interrupted by user)

Скриншот утилиты UEFImark в разрешении 800х600 пикселей

Скриншот утилиты UEFImark в разрешении 800х600 пикселей

Рис1. Скриншот утилиты UEFImark в разрешении 800х600 пикселей

Текстовый рапорт сохраняется в корневом каталоге с уникальным именем TEXTxxxx.TXT, где xxxx — цифровая часть имени в диапазоне 0000…9999, которая формируется с инкрементом. Скриншот сохраняется в файл PICTxxxx.BMP аналогичным образом.

Средства разработки и отладки UEFImark

Трансляция программы и генерация кода 64-битного UEFI-приложения выполнена в среде FASM 1.69.50.

Для трассирования кода UEFImark в процессе отладки используются контрольные точки. Их значения выводятся в диагностический порт 80h. Мониторинг отладочных кодов осуществляется POST-контроллером IC80 v5.0 производства IC Book Labs. Перечень контрольных точек приводится в документе UEFImark-Port80.pdf.

Листинги утилиты UEFImark

UEFImark — программный продукт с открытым исходным кодом. Все его листинги доступны в нашей библиотеке.

Послесловие

Разработка проекта велась на платформе ASUS Z87-K, построенной на основе системной логики Intel Z87 для процессоров Socket 1150. В силу того, что имеющийся в нашем распоряжении процессор Intel(R) Xeon(R) CPU E3-1270 v3 @ 3.50GHz не содержит графического ядра, эксперименты проводились с несколькими моделями видео адаптеров от NVIDIA и ATI/AMD. Основные работы выполнены на Sapphire X1950PRO и HD5570 (ATI/AMD).


20.01.2018