使用者工具

網站工具


acpi_code_study

差異處

這裏顯示兩個版本的差異處。

連向這個比對檢視

Both sides previous revision 前次修改
下次修改
前次修改
acpi_code_study [2024/05/23 14:27]
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.) 
 +
 +{{:acpi_d11.png|}}
 +
 +{{:acpi_d12.png|}}
 +
 +<code>
 +#include <stdint.h>
 +
 +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->signature[0] != 'R' ||
 +         rsdp->signature[1] != 'S' ||
 +         rsdp->signature[2] != 'D' ||
 +         rsdp->signature[3] != 'P') {
 +    rsdp++;
 +    if (rsdp > (__RSDP_SIGNATURE*)0x000FFFFF) {
 +      return nullptr;
 +    }
 +  }
 +
 +  if (rsdp->checksum != 0) {
 +    return nullptr;
 +  }
 +
 +  return rsdp;
 +}
 +</code>
 +
  
 RSDT(Root System Description Table)和 XSDT(Extended System Description Table) RSDT(Root System Description Table)和 XSDT(Extended System Description Table)
行 12: 行 55:
   * ACPI 資料表使用簽名來識別它們。簽名是一個四個字元的字符串,用於唯一識別資料表。   * ACPI 資料表使用簽名來識別它們。簽名是一個四個字元的字符串,用於唯一識別資料表。
  
-  + Windows 操作系統使用 ACPI 來配置和管理系統的硬體資源。它使用 ACPI 資料表來獲取有關系統硬體的資訊,例如 CPU、記憶體、儲存、匯流排和設備。Windows 還使用 ACPI 來控制系統的電源管理功能,例如睡眠和休眠。 
 + 
 +以下是 Windows 操作系統如何使用 ACPI 的一些詳細資訊: 
 + 
 +  * 啟動時:在 Windows 啟動時,它會使用 ACPI 資料表來獲取有關系統硬體的資訊。這些資訊用於初始化硬體並準備好作業系統。 
 + 
 +  * 電源管理:Windows 使用 ACPI 來控制系統的電源管理功能。例如,當您關閉電腦時,Windows 會使用 ACPI 將系統置於睡眠或休眠狀態。 
 + 
 +  * 設備管理:Windows 使用 ACPI 來管理系統的設備。例如,當您插入新設備時,Windows 會使用 ACPI 來配置設備並使其可用於作業系統。 
 + 
 +{{:acpi_d13.png|}} 
 + 
 + 
 + 
 +ACPI 對 Windows 操作系統至關重要。它允許 Windows 配置和管理系統的硬體資源,並提供電源管理和設備管理功能。 
 + 
 +以下是一些有關 Windows 操作系統如何使用 ACPI 的附加細節: 
 + 
 +  * Windows 使用 ACPI 驅動程式來與 ACPI 資料表進行交互。這些驅動程式由硬體製造商提供,並允許 Windows 訪問系統的硬體資源。 
 + 
 +  * 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 ===== 
 + 
 + 
 +{{:acpi_d14.png|}}
  
 +{{:acpi_d15.png|}}
    
acpi_code_study.1716445662.txt.gz · 上一次變更: 2024/05/23 14:27 由 don