ACPI Table 基本知識
ACPI Table基本知識(BIOS觀點):
1.包在BIOS ROM中 的 ASL Code 就是ACPI Table,而ACPI Table有分成不同類型的Table(RSDT/FADT/DSDT...etc.)。
2.像是我們比較常使用的DSDT Table就是放了一些event code,簡單說就是當某個H/W event 發生後,系統OS會去依照描述在這個DSDT Table中的ASL Code去執行,而這些Acpi Table包在BIOS ROM中的形式是AML Code (類似機器碼)。
3.BIOS在開機過程中會把包在BIOS ROM中的Acpi Table 載入到RAM 中,然後留下一些資訊給OS來找到他們,最簡單的例子就是RSDP Table會放在1M以下的某個位址(一般都是在E0000h~FFFFFh),然後OS就可以透過搜尋\"Signature\"(某個標記字)的方式來找到其他的Acpi Table entry point。
[勘誤] 應該是RSDP Structure 不是 RSDP Table ,打錯了 >.< ,感謝糾正! 這個Struct內的RSD PTR欄位會指向RSDT Table ,而如何找這個Struct的方式就是在1M以下的地方找\"RSD PTR\",有興趣的自己用Debug.com 找看看吧 ^^。
4. OS 需要有一個 AML 翻譯器去翻譯這些AML Code,然後執行他們。 5. 每個Platform 的Host Controller 的暫存器位址會不同,所以BIOS需要透過ACPI Table來告知OS這些暫存器的位址,這樣子做的好處是OS不需要知道你是在什麼Platform,因為他只單純看BIOS所提供的H/W 資訊。 6. ACPI Table還可以用來當作OS 啟動金鑰,例如SLIC Table就是一個例子,OS透過檢查包在BIOS ROM中的ACPI Table的內容來
決定是不是一個台OEM 電腦。 其他詳細介紹請參閱ACPI Spec 3.0b 以及微軟網站介
紹,下圖為參考微軟文件說明:
因篇幅问题不能全部显示,请点此查看更多更全内容