這裏顯示兩個版本的差異處。
| Both sides previous revision 前次修改 下次修改 | 前次修改 | ||
|
acpi_code_study [2024/05/23 14:31] don |
acpi_code_study [2024/05/23 15:29] (目前版本) don |
||
|---|---|---|---|
| 行 3: | 行 3: | ||
| ACPI(Advanced Configuration and Power Interface)是一種用於配置和管理現代電腦硬體的標準。它提供了一種統一的機制來描述系統的硬體資源,並允許作業系統與這些資源進行交互。 | ACPI(Advanced Configuration and Power Interface)是一種用於配置和管理現代電腦硬體的標準。它提供了一種統一的機制來描述系統的硬體資源,並允許作業系統與這些資源進行交互。 | ||
| + | |||
| + | |||
| + | ===== ACPI table 尋找方式 ===== | ||
| + | |||
| + | 在記憶體 E000 中搜尋 “RSD PTR ” (Notice that this signature must contain a trailing | ||
| + | blank character.) | ||
| + | |||
| + | {{: | ||
| + | |||
| + | {{: | ||
| + | |||
| + | < | ||
| + | #include < | ||
| + | |||
| + | typedef struct __RSDP_SIGNATURE { | ||
| + | uint8_t signature[4]; | ||
| + | uint8_t checksum; | ||
| + | uint8_t oem_id[6]; | ||
| + | uint8_t reserved[2]; | ||
| + | uint32_t length; | ||
| + | uint64_t rsdp_address; | ||
| + | } __RSDP_SIGNATURE; | ||
| + | |||
| + | __RSDP_SIGNATURE* find_rsdp() { | ||
| + | __RSDP_SIGNATURE* rsdp = (__RSDP_SIGNATURE*)0x000E0000; | ||
| + | while (rsdp-> | ||
| + | | ||
| + | | ||
| + | | ||
| + | rsdp++; | ||
| + | if (rsdp > (__RSDP_SIGNATURE*)0x000FFFFF) { | ||
| + | return nullptr; | ||
| + | } | ||
| + | } | ||
| + | |||
| + | if (rsdp-> | ||
| + | return nullptr; | ||
| + | } | ||
| + | |||
| + | return rsdp; | ||
| + | } | ||
| + | </ | ||
| + | |||
| RSDT(Root System Description Table)和 XSDT(Extended System Description Table) | RSDT(Root System Description Table)和 XSDT(Extended System Description Table) | ||
| 行 21: | 行 64: | ||
| * 設備管理:Windows 使用 ACPI 來管理系統的設備。例如,當您插入新設備時,Windows 會使用 ACPI 來配置設備並使其可用於作業系統。 | * 設備管理:Windows 使用 ACPI 來管理系統的設備。例如,當您插入新設備時,Windows 會使用 ACPI 來配置設備並使其可用於作業系統。 | ||
| + | |||
| + | {{: | ||
| + | |||
| + | |||
| ACPI 對 Windows 操作系統至關重要。它允許 Windows 配置和管理系統的硬體資源,並提供電源管理和設備管理功能。 | ACPI 對 Windows 操作系統至關重要。它允許 Windows 配置和管理系統的硬體資源,並提供電源管理和設備管理功能。 | ||
| 行 26: | 行 73: | ||
| 以下是一些有關 Windows 操作系統如何使用 ACPI 的附加細節: | 以下是一些有關 Windows 操作系統如何使用 ACPI 的附加細節: | ||
| - | Windows 使用 ACPI 驅動程式來與 ACPI 資料表進行交互。這些驅動程式由硬體製造商提供,並允許 Windows 訪問系統的硬體資源。 | + | * Windows 使用 ACPI 驅動程式來與 ACPI 資料表進行交互。這些驅動程式由硬體製造商提供,並允許 Windows 訪問系統的硬體資源。 |
| - | Windows 使用 ACPI 事件來監控系統狀態。這些事件用於通知 Windows 系統狀態的變化,例如當設備插入或拔出時。 | + | |
| - | Windows 使用 ACPI 方法來控制系統的硬體資源。這些方法用於配置設備、管理電源並執行其他任務。 | + | * Windows 使用 ACPI 事件來監控系統狀態。這些事件用於通知 Windows 系統狀態的變化,例如當設備插入或拔出時。 |
| + | |||
| + | * Windows 使用 ACPI 方法來控制系統的硬體資源。這些方法用於配置設備、管理電源並執行其他任務。 | ||
| + | |||
| + | |||
| + | ===== XSDT出現的時間點 ===== | ||
| + | |||
| + | |||
| + | XSDT(Extended System Description Table)是在 ACPI 3.0 規格中引入的。它是一種 64 位資料表,用於儲存指向其他 ACPI 資料表的指標。在 ACPI 3.0 之前,使用 RSDT(Root System Description Table)來儲存這些指標。RSDT 是一種 32 位資料表,因此它只能儲存有限數量的 ACPI 資料表指標。 | ||
| + | |||
| + | XSDT 的引入允許在 ACPI 系統中使用更多 ACPI 資料表。這對於現代電腦系統來說很重要,因為它們通常包含比舊電腦系統更多更複雜的硬體。 | ||
| + | |||
| + | 以下是 ACPI 規格中引入 XSDT 的一些詳細資訊: | ||
| + | |||
| + | ACPI 3.0 規格於 2009 年 3 月 31 日發佈。 | ||
| + | XSDT 在 ACPI 3.0 規格的第 4.1.3 節中定義。 | ||
| + | RSDT 在 ACPI 3.0 規格的第 4.1.2 節中定義。 | ||
| + | 以下是一些使用 XSDT 的 ACPI 系統的示例: | ||
| + | |||
| + | Windows 8 及更高版本 | ||
| + | Linux 3.10 及更高版本 | ||
| + | macOS X 10.8 及更高版本 | ||
| + | |||
| + | ===== ACPI POWER STATE ===== | ||
| + | |||
| + | |||
| + | {{: | ||
| + | {{: | ||