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