Linux ACPI服務DSDT: DSDT 稱做 Differentiated Definition Block,存在於 BIOS 中並與當前的硬體平台相容的,提供了系統的硬體特性例如某些裝置的內部寄存器和儲存空間)的應用策略和配置,在系統初始化的時候,DSDT 被當前系統啟動時初始化到名字空間中。
Linux ACPI服務FADT:
FADT 中包含了 ACPI 的硬體寄存器組GPE)的應用和配置包含它們的硬體地址)也包括DSDT表的硬體地址。
ACPI Namespace:
對於ACPI層來說,記憶體維持了一個目錄形式的指向每個裝置,以及 GPE 的名字空間,這個名字樹是通過初始化的時候由 DSDT 建立的,名字樹可以通過 loadtable 方法從 BIOS 中載入 DSDT 改變,而每個裝置在 ACPI 層中都被描述成一個對象,包含有對這個裝置特性和操作策略的描述列表,系統所有類型裝置都是儲存在同一個名字樹下。在 ACPI OS 層上調用 _ADR 來獲得 Namesapce 的裝置名稱,Namespace 的例子見例 1-1:
Linux ACPI服務OSPM(OS-directed Power Management):
OSPM 作業系統支援 ACPI 的一個部分,作業系統 OS)可以從作業系統下驅動程式的角度控制 ACPI 子模組,同時支援 ACPI 包括 SCI 中斷,裝置事件,系統事件模式,這些事件模式可以充分支援 Hot-plug 方式。
Linux ACPI服務SCI 中斷:
(System Control Interrupt) 系統控制中斷,SCI 中斷是一種源自 ACPI 相容晶片系統中斷,系統映射不同的 ACPI 事件中斷向量以便共用此中斷,當底層硬體產生 SCI 中斷的時候例如裝置插入事件引發中斷),根據通知 OSPM 層處理相對應的 ACPI 事件,OSPM 層會調用預先安裝的中斷控制代碼。
Linux ACPI服務GPE Block Device 和 GPE 事件:
GPE Block Device 是平台設計者可按照 FADT(Fixed ACPI Descriptor Table) 描述表中響應 GPE 的寄存器組,GPE 的輸入腳。作為 GPE 裝置描述塊中的地址存在於 FADT 中,每個 GPE Block Device 可以容納 128 個 GPE 事件,ACPI 層上提供兩個一般目標寄存器組--GPE0_BLK 和 GPE1_BLK,也就是說可以響應 256 個 GPE 事件)每個寄存器組中包含兩個等長度的寄存器 GPEx_STS,GPEx_EN,他們的系統地址硬體地址)都儲存在 FADT 中,作為 GPE Blocks 的行為或者是操作)描述部分存在於 ACPI 名字空間中;用於指示當前的裝置的事件,例如裝置插入/拔除事件發生的時候,相關的狀態位GPEx_STS中的位,這個是在硬體設計的時候相關裝置的事件訊號會串連到這些狀態位)會被外部的事件所置位,產生 SCI,讓 OSPM 層運行相關的控製程方法通知 ACPI 層;GPEx_EN 表示每個事件的使能位,一般說來在南橋ICH4)中有這幾個寄存器,它們的硬體地址儲存在 FADT 中。
GPE 事件就是通過 GPE 寄存器組引發 SCI 中斷後,通告 OSPM 層有關裝置的事件,例如下面介紹 Hot-Plug 的時候會詳細或者簡略地介紹到匯流排枚舉,裝置檢查,裝置喚醒,裝置彈出幾個事件。
ACPI Source Language(ASL):ASL 語言是 ACPI 層用於描述特定的 ACPI 對象的 ACPI 專用語言,並且包括了 ACPI 對象的控制方法Control method),OEM 廠商和 BIOS 設計者在 BIOS 中使用 ASL 定義所有的裝置為 ACPI 對象,並且可以產生 ASL 格式的專門的控制方法,1-1 例就是關於 ASL 的例子:
ASL 的文法規參看 ACPI Specification Revision 2.0AML 和 AML 分析器:AML 是 ACPI 控制方法的虛擬
文章轉載自網管網:http://www.bitscn.com/plus/view.php?aid=7150