FDF trong EDK II là gì?

Quicknote giải thích file FDF trong EDK II.

3 phút đọc
Đọc bằng Tiếng Việt English 日本語
EDK II Terms cover

FDFFlash Description File. Nó mô tả firmware image cuối cùng được đóng gói như thế nào: firmware volume nào tồn tại, module nào được đặt vào FV nào, region flash nào chứa FV nào.

Nếu DSC quyết định “build gì”, thì FDF quyết định “đưa gì vào image”.

Ý tưởng đơn giản của FDF

Flash Image
├─ FVMAIN_COMPACT
│  ├─ DxeCore
│  ├─ MyDxeDriver
│  └─ BdsDxe
├─ FVRECOVERY
│  └─ Recovery modules
└─ NV_VARIABLE_STORE
   └─ UEFI variables / NVRAM template

Vì sao FDF rất quan trọng khi debug?

Một lỗi kinh điển:

Module build thành công.
Không có link error.
Nhưng serial log không bao giờ vào EntryPoint.

Lúc này không nên debug C code ngay. Hãy hỏi:

  • Module có nằm trong DSC chưa?
  • Module có được đưa vào FDF/FV chưa?
  • Firmware image đang flash có đúng bản vừa build không?
  • Driver có DEPEX chưa thỏa không?

Ví dụ FDF tối giản

[FV.FvMain]
  FvNameGuid         = 44444444-5555-6666-7777-888888888888
  BlockSize          = 0x1000
  NumBlocks          = 0x100

  INF  MdeModulePkg/Core/Dxe/DxeMain.inf
  INF  MyPkg/Drivers/MyDxe/MyDxe.inf
  INF  MdeModulePkg/Universal/BdsDxe/BdsDxe.inf

Nếu MyDxe.inf chỉ có trong DSC mà không có trong FDF, module có thể được build ra file .efi/.depex, nhưng không nằm trong firmware volume bạn flash.

01 INF

Module mô tả chính nó

Source, entry point, library, PCD.

02 DSC

Platform build module

Module được đưa vào [Components].

03 FDF

Module được đóng vào FV

INF xuất hiện trong firmware volume phù hợp.

04 Runtime

Dispatcher load module

DEPEX thỏa và driver entry point được gọi.

Một module cần đi qua cả build và image packaging.

FDF và NVRAM

Trong nhiều platform, FDF cũng mô tả vùng variable store template hoặc flash layout liên quan đến NVRAM. Đây là cầu nối giữa EDK II build system và những gì bạn thấy khi dump SPI flash.

BIOS Region
├─ Firmware Volumes
└─ Variable Store / Fault Tolerant Write / Spare area

Vì vậy khi sửa boot option hoặc Secure Boot variable mà thấy hành vi không như mong đợi, đôi khi cần phân biệt:

  • variable store runtime trên máy thật;
  • default variable template trong firmware image;
  • reset/clear CMOS có ảnh hưởng variable store hay không.
Mục Giá trị Ghi chú
DSC Build module Không đảm bảo module nằm trong ROM.
FDF Pack module vào FV Quyết định image thực tế chứa gì.
FV Firmware Volume Container chứa PEI/DXE/SMM module.
FD Flash Device image Layout tổng thể của flash image.

Checklist khi driver không chạy dù build pass

Ghi nhớ nhanh

FDF là nơi source code trở thành firmware image. Khi build pass nhưng module không xuất hiện trong runtime, FDF là nơi phải kiểm tra trước khi sửa logic driver.

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.