Linux ACPI服務ACPI 驅動體系簡介
這個體系主要目的在于讓操作系統和當前的 ACPI 硬件隔離開,讓 Linux 中通過一系列的接口來訪問 ACPI 層。下面列出 ACPI CA 的接口,例如電源管理和配置,熱拔插等等。
在 Linux ACPI服務規范中將 ACPI 體系分割成 ACPI 核心層(Core subsystem),用于提供基本的 Linux ACPI服務(AML 翻譯和名字空間管理);OS 服務層(OS service)提供針對不同的操作系統的和 ACPI 單元接口服務,下面將詳細介紹它們。
a. Linux ACPI服務ACPI 核心層:
ACPI 核心層分成幾個相互關聯的邏輯模塊,每個模塊之間包含一些相關的 ACPI API,當用戶在編寫相關的含有 ACPI 服務的驅動程序的時候,會調用這些相關模塊的接口。
1. AML Interpreter: 從上可知AML(后面將詳細介紹)分析器是基礎,負責分析和運行從本地計算機 BIOS 提供的 AML 文件流,一般說來 AML 翻譯器為其他的 ACPI 服務模塊提供方法節點運行和獲得名字空間中某個方法節點的對象服務。
2. ACPI Table Management 是一個負責載入,管理,分析,校驗 ACPI 模塊中所使用的各種來自系統 BIOS 的一些特殊的支持 ACPI 服務的表格,例如:RSDT,FSDT,FACS,DSDT等等,這些表在操作系統進行初始化的時候被載入內存。
3. Namespace Management 在 AML 翻譯器之上提供名字空間服務,它負責創建和管理內部的名字空間。
4. Resource Management:資源管理提供建立在名字空間資源的配置和獲取,其中包括了 PCI的設備的地址區間,中斷等重要參數。它所提供的服務包括:獲取和設定當前的資源,獲取設備上可能存在的地址區間以及 PCI 設備的中斷路由表(IRQ Routing Tables),獲取當前設備的電源支持能力(例如是否支持 S1-S5 狀態)。
***CPI H/W Management:該模塊用于控制對橋芯片上 ACPI 寄存器和時鐘以及其他 ACPI 關聯硬件的訪問,例如 ACPI GPE 狀態寄存器和使能寄存器,系統狀態獲得。 Event handling:事件管理模塊是用于管理系統控制中斷(SCI)的發生和 GPE 事件的響應,SCI 包括 ACPI 時鐘中斷,以及 GPE 事件管理。這個單元負責"分發"地址空間和操作空間(OperationRegion)的事件到當前的操作系統層,并負責調用相關的句柄來進行處理。
b.Linux ACPI服務OS 服務層:
ACPI OS 服務層(OSL)可以讓 ACPI 邏輯模塊在本地操作系統上運行。OS 服務層通過可在主機操作系統中使用的接口,設備驅動程序,將從 ACP 核心的服務轉換成本地操作系統的訪問和調用;而操作系統層通過 OSL 向 ACPI 核心層發出呼叫;OSL 層對 ACPI 核心層實現了一系列完成操作系統獨立功能的標準接口(例如存儲分配和硬件訪問)。 OSL 的組成模塊介紹:
1.OS 引導服務:
在 OS 載入過程中引導服務是一些初始化的功能,在大多數其它的操作系統初始化之前執行。這些服務包括 ACPI 子系統的初始化。
2.設備驅動載入服務:
對于出現在 ACPI 名字空間中的設備節點,操作系統必須有一個模塊用以探測到它們并載入驅動,讀入配置空間,設備驅動載入服務提供這項裝置。
3.操作系統運行服務:
運行服務包括大部分 ACPI 系統和 OS 交互的外圍接口,用于當前內核的進程/線程操作,以及提供和當前操作系統接口的互斥,信號,進程隊列,休眠,暫停等,以及事件日志及電源管理功能。
4.異步服務
異步功能包括中斷服務(系統控制中斷),事件處理和分配(既定事件,GPE 事件,通知事件和操作區訪問事件),以及錯誤處理。
文章轉載自網管網:http://www.bitscn.com/plus/view.php?aid=7150
【編輯推薦】