VFR là gì?

VFR là source mô tả form, question, condition và VarStore trước khi compile thành IFR.

3 phút đọc
Đọc bằng Tiếng Việt English 日本語
HII / BIOS Setup Terms cover

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_DATA như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 suppressif quá 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.

Biến note thành bài viết hoàn chỉnh

Notes là nơi ghi nhanh khái niệm.