Меню БИОСа и VFR compiler

Решил записать процесс разработки GUI Setup BIOS пока не забыл.
VFR compiler придумал Интел. Я не совсем точно понимаю зачем нужен VFR если есть XML, но менюшки сетапа БИОСа разрабатываются именно на нем. Как это примерно выглядит можно посмотреть в TIANO EDK:
www.rom.by/efi/EFI_Toolkit_1.10.14.62.zip


www.rom.by/efi/tianocore_EFI_Toolkit_2_01.zip

Каждое меню пишется в виде отдельного файла, например:
main. vfr
advanced. vfr
security. vfr
power. vfr
boot. vfr
exit. vfr

Строковые константы записываются в файле Strings.uni

/=#
#langdef eng "English"
#langdef fra "Français"
#langdef spa "Español"

#string STR_NULL_STRING #language eng ""
#string STR_ENABLED #language eng "Enabled"
#string STR_DISABLED #language eng "Disabled"

// строки могут быть на любых языках
// UNI файлы оьраьатывает утилита StrGather.exe

Переменные и константы сетапа описывают в отдельном файле, например: Config.h

// GUID генерятся утилитой guidgen.exe
#define FORMSET_GUID { 0x11afbab1, 0x11b, 0x112d, 0x83, 0x3f, 0x43, 0x77, 0xe0, 0x77, 0x89, 0x3f }

#define EFI_DISK_DEVICE_CLASS 0x01

// тут все настройки БИОСа
// после выхода из сетапа, эти переменные сохранются в NVRAM
typedef struct _SYSTEM_CONFIGURATION {
...
UINT8 HyperThreading;
...
} SYSTEM_CONFIGURATION;

Каждый VFR файл, обычно, начинается с

#include config.h

formset
guid = FORMSET_GUID,
title = STRING_TOKEN(STR_FORM_SET_TITLE),
help = STRING_TOKEN(STR_FORM_SET_TITLE_HELP),
class = 1,
subclass = 0,

form formid = FILE_ROOT_FORM_ID,

title = STRING_TOKEN(STR_FILE_TITLE);
....
endform;

// тут описываются элементы данного меню , например:
// этот элемент меняет значение переменной HyperThreading
oneof varid = SYSTEM_CONFIGURATION.HyperThreading,
prompt = STRING_TOKEN(STR_HT_EANBLE),
help = STRING_TOKEN(STR_HT_EANBLE_HELP),
option text = STRING_TOKEN(STR_DISABLE), value=0, flags= 0 | RESET_REQUIRED;
option text = STRING_TOKEN(STR_ENABLE), value=1, flags=DEFAULT | RESET_REQUIRED;
endoneof;

// примеры почти всех элементов можно посмотреть в файле VFR.VFR из TIANO EDK
...

endformset;

После обработки VFR compiler выдает файл IFR - бинарный файл.

Если данная информация оказалась полезной/интересной - плюсаните, пожалуйста:

Отправить комментарий

Содержание этого поля является приватным и не предназначено к показу.
  • Разрешённые HTML-теги: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <img>
  • You can use BBCode tags in the text. URLs will automatically be converted to links.

Подробнее о форматировании текста

Антибот - введите цифру.
Ленты новостей