FDF trong EDK II là gì?
Quicknote giải thích file FDF trong EDK II.
FDF là Flash 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.
Module mô tả chính nó
Source, entry point, library, PCD.
Platform build module
Module được đưa vào [Components].
Module được đóng vào FV
INF xuất hiện trong firmware volume phù hợp.
Dispatcher load module
DEPEX thỏa và driver entry point được gọi.
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.
EDK II Platform là gì?
Quicknote giải thích platform trong EDK II.
Firmware Volume và FFS là gì?
Firmware Volume là container chứa FFS file trong firmware image. Hiểu FV/FFS giúp debug khi driver build pass nhưng không chạy vì thiếu trong FV.
PCD trong EDK II là gì?
Quicknote giải thích Platform Configuration Database trong EDK II.
Biến note thành bài viết hoàn chỉnh
Notes là nơi ghi nhanh khái niệm.