DEPEX là gì?

Quicknote giải thích Dependency Expression trong EDK II/UEFI.

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

DEPEXDependency 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.

01 FDF

Module nằm trong FV

Image có chứa module.

02 Dispatcher

Đọc DEPEX

Kiểm tra PPI/Protocol dependency.

03 Dependency

Chờ dependency thỏa

PPI/Protocol cần thiết đã publish chưa?

04 Entry

Gọi EntryPoint

Module bắt đầu chạy.

DEPEX nằm giữa việc module có trong image và việc entry point thật sự được gọi.

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:

  1. Tìm [Depex] trong INF.
  2. Xác định từng GUID là Protocol hay PPI.
  3. Search module nào install GUID đó.
  4. Kiểm tra module install có nằm trong image và chạy trước không.
  5. 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.

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

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