EDK II Module là gì?
Quicknote giải thích module trong EDK II.
Một EDK II Module là đơn vị build cơ bản trong EDK II. Nó có source code, một file INF mô tả metadata, module type, entry point, dependency, library, package và PCD.
Khi đọc source BIOS, đừng chỉ mở .c. Hãy mở .inf trước hoặc song song, vì INF mới cho biết module này thật sự được build và link như thế nào.
| Mục | Giá trị | Ghi chú |
|---|---|---|
| BASE | Library/base module | Không tự chạy như driver/application. |
| PEIM | PEI module | Chạy trong PEI, thường publish/consume PPI, tạo HOB. |
| DXE_DRIVER | DXE driver | Chạy trong DXE, publish/consume Protocol. |
| UEFI_APPLICATION | UEFI app | Có thể chạy từ UEFI Shell hoặc boot manager. |
| DXE_SMM_DRIVER | SMM driver | Chạy trong SMM, cần cẩn thận về communication/security. |
Một module đi từ source tới runtime như thế nào?
INF mô tả module
Tên, GUID, type, entry point, source, library, package, PCD.
DSC chọn module để build
Platform đưa INF vào [Components] và map library instance.
FDF đưa module vào image
Module được đóng vào firmware volume phù hợp.
Dispatcher hoặc Shell load module
PEI/DXE dispatcher gọi entry point khi dependency thỏa; UEFI app chạy khi được load.
Ví dụ module không chạy
Bạn thêm MyDxe.c, build pass, flash BIOS, nhưng không thấy log:
DEBUG ((DEBUG_INFO, "MyDxe Entry\n"));
Hướng kiểm tra:
MyDxe.infcóENTRY_POINTđúng không?MyDxe.infcó trong DSC[Components]không?MyDxe.infcó trong FDF/FV không?DEBUGlevel có bị tắt bởiDebugLibhoặc PCD không?- DEPEX có đang chờ một protocol chưa bao giờ được install không?
Module dùng code của module khác
Trong EDK II, module không nên gọi trực tiếp C file của module khác như project C nhỏ. Nên tách phần dùng chung thành library, publish header qua DEC, rồi module consume khai báo library class trong INF.
Shared logic
↓
Library Instance
↓
Library Class
↓
Module INF consume
↓
DSC map implementation
Checklist khi tạo module mới
Ghi nhớ nhanh
EDK II Module là đơn vị build và dispatch. Muốn hiểu một module, hãy đọc theo cặp: .inf cho metadata, .c cho logic, rồi lần sang DSC/FDF để biết nó có thật sự được build và chạy không.
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.