VFR là gì?
VFR là source mô tả form, question, condition và VarStore trước khi compile thành IFR.
VFR, viết tắt của Visual Forms Representation, là ngôn ngữ mô tả BIOS Setup form ở mức source. Developer viết form, question, điều kiện hiển thị và mapping tới VarStore trong VFR; build tool sẽ compile nó thành IFR để Setup Browser đọc.
Nói đơn giản: VFR là source code của Setup UI.
Luồng file thường gặp trong một HII driver
MySetupDxe/
├─ MySetupDxe.inf
├─ MySetupDxe.c
├─ MySetup.vfr # form/question/condition
├─ MySetup.uni # string token đa ngôn ngữ
└─ MySetup.h # struct SETUP_DATA, varstore layout VFR thường chứa gì?
| Mục | Giá trị | Ghi chú |
|---|---|---|
| formset | Nhóm form thuộc cùng một feature/module | Có GUID riêng, thường là entry point của Setup page. |
| form | Một trang hoặc một màn hình Setup | Có formid để Browser điều hướng. |
| varstore | Khai báo dữ liệu backing cho question | Có thể map tới struct hoặc EFI variable. |
| oneof / checkbox / numeric | Các element người dùng thao tác | Mỗi element thường có QuestionId và varid. |
| suppressif / grayoutif | Điều kiện ẩn hoặc khóa option | Rất hay gây bug option biến mất. |
Ví dụ rút gọn
varstore SETUP_DATA,
varid = Setup,
name = Setup,
guid = SETUP_GUID;
form formid = FORM_BOOT,
title = STRING_TOKEN(STR_BOOT_FORM);
oneof varid = Setup.BootMode,
prompt = STRING_TOKEN(STR_BOOT_MODE),
help = STRING_TOKEN(STR_BOOT_MODE_HELP),
questionid = QUESTION_ID_BOOT_MODE;
option text = STRING_TOKEN(STR_UEFI), value = 1, flags = DEFAULT;
option text = STRING_TOKEN(STR_LEGACY), value = 0;
endoneof;
endform;
Điểm cần nhìn không chỉ là oneof. Quan trọng hơn là Setup.BootMode map tới offset nào trong struct, giá trị default là gì, và module nào sẽ đọc field đó sau khi boot.
Pitfall thường gặp
- Sửa struct
SETUP_DATAnhưng quên update VFR varid/offset. - Question hiển thị đúng nhưng string token sai nên prompt/help bị nhầm.
- Dùng
suppressifquá rộng làm option biến mất ở một số platform. - VFR compile pass nhưng Browser callback không được register nên setting động không hoạt động.
Khi thêm một Setup option mới
Bài liên quan
Nguồn tham khảo public
Thấy nội dung này hữu ích?
Lưu lại hoặc chia sẻ cho người cũng đang học firmware, BIOS/UEFI và embedded systems.
Nội dung liên quan
Một số bài viết, ghi chú hoặc project có liên quan đến nội dung bạn vừa đọc.
HII Architecture Overview
Knowledge map tổng quan về HII, VFR, IFR, VarStore, callback và flow lưu BIOS Setup.
HII Save, Callback và Reset Flow
Giải thích cách Setup Browser gọi callback, route config, lưu NVRAM và áp dụng sau reset.
HII VFR Element Cheat Sheet
Bảng tổng hợp các element VFR như checkbox, oneof, numeric, string, date, time và ordered list.
Biến note thành bài viết hoàn chỉnh
Notes là nơi ghi nhanh khái niệm.