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.

Cập nhật 3 phút đọc
ACPI / Hardware Terms cover

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

01 Policy

Platform Policy

Setup option, board config, SKU, GPIO table, memory map.

02 Build

Generate Tables

DXE module tạo ACPI table, SMBIOS record hoặc patch SSDT.

03 Publish

Install ACPI/SMBIOS

Table được publish qua EFI_ACPI_TABLE_PROTOCOL hoặc SMBIOS protocol.

04 OS

OS Parse

Kernel đọc DSDT/SSDT/FADT/MADT/SMBIOS và tạo device model.

05 Runtime

Control Hardware

OS gọi _STA/_CRS/_PSx/_DSM, truy cập EC/GPIO OperationRegion.

Từ policy trong firmware tới phần cứng mà OS nhìn thấy.

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.

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

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