ACPI Hardware Overview
Knowledge map về cách firmware mô tả phần cứng cho OS bằng ACPI, SMBIOS, GPIO, EC, PCIe và power state.
Sau DXE, firmware không chỉ boot OS rồi biến mất. Nó còn phải để lại một bản mô tả platform đủ tin cậy để OS hiểu: CPU nào tồn tại, memory nằm ở đâu, PCI root bridge có resource nào, EC giao tiếp ra sao, GPIO nào dùng cho wake, thiết bị nào có power state nào.
ACPI và SMBIOS chính là hai lớp dữ liệu lớn nhất trong phần này. SMBIOS trả lời “máy này là máy gì”, còn ACPI trả lời “OS phải điều khiển phần cứng này như thế nào”.
Platform Policy
Setup option, board config, SKU, GPIO table, memory map.
Generate Tables
DXE module tạo ACPI table, SMBIOS record hoặc patch SSDT.
Install ACPI/SMBIOS
Table được publish qua EFI_ACPI_TABLE_PROTOCOL hoặc SMBIOS protocol.
OS Parse
Kernel đọc DSDT/SSDT/FADT/MADT/SMBIOS và tạo device model.
Control Hardware
OS gọi _STA/_CRS/_PSx/_DSM, truy cập EC/GPIO OperationRegion.
Bản đồ kiến thức
ACPI / Hardware knowledge map
ACPI Hardware
├─ ACPI Table Types: DSDT, SSDT, FADT, MADT, MCFG, DBG2
├─ AML / Namespace / Method
│ ├─ Device, Scope, Name, Method
│ ├─ _HID, _CID, _STA, _CRS
│ └─ _DSM, _PS0/_PS3, _PRW
├─ Hardware Control
│ ├─ EC handshake
│ ├─ GPIO OperationRegion
│ └─ Power sequence / Power state
├─ Bus Description
│ ├─ PCIe enumeration
│ └─ USB init in DXE
└─ Inventory
└─ SMBIOS Type 0-4, 17, 19-20 ACPI khác PCI/SMBIOS ở đâu?
| Mục | Giá trị | Ghi chú |
|---|---|---|
| PCI | Khám phá device qua config space | Firmware scan BDF, cấp BAR, tạo handle. |
| ACPI | Mô tả platform-specific device và control method | OS gọi AML để lấy resource, power state, wake, EC/GPIO. |
| SMBIOS | Inventory tĩnh của hệ thống | BIOS version, CPU, DIMM, memory range, chassis. |
| UEFI Variable | Policy/config lưu trong NVRAM | Setup option có thể quyết định ACPI table expose gì. |
Debug diary: OS không nhận phần cứng
Một lỗi rất dễ gặp là firmware nhìn thấy thiết bị trong DXE, nhưng OS lại không tạo driver node đúng. Lúc đó đừng chỉ nhìn một tầng.
DXE PCI scan OK
↓
ACPI _CRS sai hoặc thiếu
↓
OS không cấp resource đúng
↓
Driver không bind hoặc device bị disable
Ví dụ thực tế: PCIe device có BAR hợp lệ trong firmware, nhưng ACPI root bridge _CRS không expose đúng MMIO window. OS sẽ nghĩ resource không hợp lệ dù thiết bị thật sự vẫn tồn tại.
Checklist khi ACPI/Hardware mismatch
Dùng khi firmware thấy device nhưng OS không hoạt động đúng.
Blog seeds
- ACPI không chỉ là table: nó là hợp đồng giữa firmware và OS.
- Vì sao firmware thấy device nhưng Windows/Linux không thấy?
- DSDT/SSDT/SMBIOS/PCI phối hợp với nhau như thế nào?
Bài liên quan
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.
GPIO trong platform firmware là gì?
Quicknote giải thích GPIO từ góc nhìn BIOS/platform firmware.
EC & BIOS Handshake là gì?
Quicknote giải thích giao tiếp giữa BIOS và Embedded Controller ở mức concept.
SMBIOS Type 0-4 là gì?
Quicknote giải thích các SMBIOS type 0 đến 4 thường gặp.
Biến note thành bài viết hoàn chỉnh
Notes là nơi ghi nhanh khái niệm.