Автор: ТоварищЪ , 16 января 2008
Содержимое данного поля является приватным и не предназначено для показа.

BBCode

  • HTML-теги не обрабатываются и показываются как обычный текст
  • You may use the following BBCode tags:
    • [align]
    • [b]
    • [code]
    • [color]
    • [font]
    • [hr]
    • [i]
    • [img]
    • [list]
    • [quote]
    • [s]
    • [size]
    • [spoiler]
    • [sub]
    • [sup]
    • [table]
    • [u]
    • [url]
  • Адреса веб-страниц и email-адреса преобразовываются в ссылки автоматически.
Решил записать процесс разработки 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 - бинарный файл.