EFI_MEMORY_TYPE là gì?
Quicknote EFI_MEMORY_TYPE là gì?
EFI_MEMORY_TYPE là enum phân loại vùng memory trong UEFI memory map, ví dụ LoaderCode, BootServicesData, RuntimeServicesCode, ConventionalMemory, ACPIReclaimMemory.
Vai trò chính
- Giải thích một concept nâng cao trong BIOS/UEFI.
- Hỗ trợ đọc source/log/spec dễ hơn.
- Làm nền cho các bài blog chuyên sâu sau này.
Ví dụ xử lý lỗi
Pattern thường thấy trong code UEFI:
Status = SomeUefiService(...);
if (EFI_ERROR(Status)) {
DEBUG ((DEBUG_ERROR, "SomeUefiService failed: %r\n", Status));
return Status;
}
Điểm quan trọng là không dùng output parameter nếu API đã trả lỗi.
Checklist nhanh
Ghi nhớ nhanh
Memory type là nhãn sở hữu/vòng đời của từng vùng memory.
Góc nhìn khi debug
Khi học EFI_MEMORY_TYPE, mình không muốn chỉ dừng ở định nghĩa. Mình thường tự hỏi ba câu: nó được tạo ra ở đâu, ai sẽ đọc nó, và nếu nó sai thì lỗi sẽ biểu hiện ở tầng nào. Cách nhìn này giúp biến một thuật ngữ khô khan thành một điểm kiểm tra cụ thể trong flow debug.
Ví dụ dễ gặp
Các lỗi memory trong firmware thường khó chịu vì chúng có thể xuất hiện muộn hơn thời điểm gây lỗi. Với EFI_MEMORY_TYPE, hãy chú ý ownership của vùng nhớ, thời điểm còn dùng Boot Services hay đã sang Runtime, và liệu OS có được cung cấp memory map đúng trước ExitBootServices() hay không.
Khi gặp trong thực tế
Với EFI_MEMORY_TYPE, đừng học theo kiểu thuộc định nghĩa. Hãy gắn nó với một flow cụ thể: ai tạo ra dữ liệu này, ai đọc nó, nó nằm trong RAM, NVRAM, flash hay protocol, và nếu sai thì người dùng nhìn thấy triệu chứng gì.
Cách học này chậm hơn một chút lúc đầu, nhưng khi debug BIOS/firmware thật, bạn sẽ có điểm bám thay vì chỉ nhớ một thuật ngữ rời rạc.
Bài liên quan
- SetVirtualAddressMap là gì?
- Memory Map Key là gì?
- EfiRuntimeServicesData là gì?
- EfiBootServicesData là gì?
- ConvertPointer là gì?
Nguồn tham khảo public
- UEFI Specification 2.11 - Boot Services / Memory
- UEFI Specification 2.11 - Runtime Services
- EDK II MdePkg UefiSpec.h
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.
Biến note thành bài viết hoàn chỉnh
Notes là nơi ghi nhanh khái niệm.