DEPEX là gì?
Quicknote giải thích Dependency Expression trong EDK II/UEFI.
DEPEX là Dependency Expression. Nó quyết định khi nào một PEIM hoặc DXE driver đủ điều kiện để dispatcher gọi entry point.
Nói thực tế: module có thể đã nằm trong firmware image, build hoàn toàn pass, nhưng vẫn không chạy vì DEPEX chưa thỏa.
Module nằm trong FV
Image có chứa module.
Đọc DEPEX
Kiểm tra PPI/Protocol dependency.
Chờ dependency thỏa
PPI/Protocol cần thiết đã publish chưa?
Gọi EntryPoint
Module bắt đầu chạy.
Ví dụ DXE DEPEX
[Depex]
gEfiPciIoProtocolGuid AND gEfiDevicePathProtocolGuid
Driver này chỉ chạy khi cả PCI I/O Protocol và Device Path Protocol đã tồn tại. Nếu bạn không thấy log entry point, đây là một trong những nơi cần kiểm tra đầu tiên.
Ví dụ PEI DEPEX
[Depex]
gEfiPeiMemoryDiscoveredPpiGuid
PEIM chỉ chạy sau khi memory discovered PPI được install. Điều này hợp lý với module cần permanent memory.
Lỗi thực tế
Bạn thêm một driver để scan PCI device. Driver có trong DSC/FDF, build pass, nhưng log không xuất hiện. Nếu INF có:
[Depex]
gMyBoardReadyProtocolGuid
mà không module nào install gMyBoardReadyProtocolGuid, driver sẽ không dispatch.
| Mục | Giá trị | Ghi chú |
|---|---|---|
| Build pass | Chỉ chứng minh source build được | Không chứng minh module được dispatch. |
| Có trong FDF | Module nằm trong image | Nhưng có thể vẫn chờ DEPEX. |
| DEPEX false | EntryPoint chưa được gọi | Serial log trong EntryPoint sẽ không xuất hiện. |
| Protocol/PPI publish trễ | Driver chạy muộn hơn mong đợi | Có thể ảnh hưởng boot timing hoặc init order. |
Cách debug
Nếu nghi DEPEX:
- Tìm
[Depex]trong INF. - Xác định từng GUID là Protocol hay PPI.
- Search module nào install GUID đó.
- Kiểm tra module install có nằm trong image và chạy trước không.
- Bật log dispatcher nếu platform hỗ trợ.
Checklist DEPEX
Ghi nhớ nhanh
DEPEX là cổng vào runtime của module. Khi module build pass nhưng không chạy, hãy nghĩ tới DSC/FDF trước, rồi tới DEPEX, trước khi sửa logic C.
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.
DXE Driver trong EDK II là gì?
Quicknote giải thích DXE Driver trong EDK II.
DXE Dispatcher là gì?
DXE Dispatcher load và chạy DXE driver theo DEPEX, dựa trên protocol dependency trong handle database. Hiểu dispatch loop giúp debug driver không chạy dù build pass.
DXE Dispatcher là gì?
Giải thích DXE Dispatcher, DEPEX và cách debug khi DXE driver được build nhưng không chạy.
Biến note thành bài viết hoàn chỉnh
Notes là nơi ghi nhanh khái niệm.