acpi 学习笔记
acpi是什么

acpi是什么ACPI是什么?ACPI是计算机领域中一种非常重要的标准,全称为高级配置与电源管理接口(Advanced Configuration and Power Interface)。
ACPI定义了一套与操作系统、BIOS以及硬件设备之间的接口标准,使得操作系统能够有效地管理计算机的资源和功耗。
ACPI的作用是什么?ACPI的主要作用是对计算机的电源管理进行控制。
通过ACPI,操作系统可以实现定制化的电源管理策略,以减少功耗、延长电池寿命,并且提供各种电源模式的切换,如待机、睡眠和关机。
此外,ACPI还允许操作系统对硬件设备进行控制和配置,包括CPU、内存、扩展插槽、USB、键盘、鼠标等。
ACPI的结构和组件有哪些?ACPI采用了一种层次化的结构,包括了如下几个主要组件:1. 电源管理设备(Power Management Device):负责提供电源管理相关的信息和控制。
它可以是一个物理设备,如电池或者供电系统,也可以是一个虚拟设备。
2. 电源资源(Power Resource):代表计算机中的电源元件,如电池、电源适配器、风扇等。
这些电源资源可以通过电源管理设备进行控制。
3. 电源管理接口(Power Management Interface):用于在计算机硬件和操作系统之间传递电源管理相关的信息,如电源状态、功耗需求等。
4. 系统固件(System Firmware):主要是指BIOS(BasicInput/Output System)。
系统固件提供了ACPI的实现和解释环境。
5. ACPI表(ACPI Tables):包含了ACPI实现所必需的固件信息,包括设备描述、电源管理信息等。
操作系统在启动时会加载这些表,并根据表的内容来进行相应的配置。
ACPI的工作原理是怎样的?ACPI的工作原理可以分为三个主要步骤:1. 启动阶段:当计算机启动时,操作系统会加载系统固件(BIOS)中的ACPI表,并将其解析为操作系统能够识别和使用的结构。
ACPI电源管理规范

ACPI电源管理规范ACPI(高级配置与电源管理接口)是一种电源管理规范,旨在提供一种标准的接口,使操作系统能够有效地管理计算机硬件的电源管理功能。
ACPI规范定义了一套标准的方法和接口,用于操作系统与计算机硬件之间的通信,以实现电源管理的各种功能。
本文将详细介绍ACPI电源管理规范的相关内容。
一、ACPI规范的背景和目的ACPI规范的制定是为了解决早期计算机系统在电源管理方面存在的问题。
在过去,计算机系统的电源管理主要由BIOS(基本输入输出系统)负责,但由于不同厂商的BIOS实现存在差异,导致操作系统在电源管理方面无法充分发挥作用。
ACPI规范的浮现,旨在提供一种标准的接口,使操作系统能够更好地控制和管理计算机硬件的电源管理功能,从而提高系统的性能和能耗效率。
二、ACPI规范的基本原理和架构ACPI规范的基本原理是通过在计算机硬件中引入ACPI表格来描述和定义硬件设备的电源管理特性和相关信息。
这些ACPI表格包括DSDT(差异化系统描述表)、FADT(固定ACPI描述表)、SSDT(二级系统描述表)等,它们提供了硬件设备的电源管理功能的描述和控制方法。
操作系统通过解析这些ACPI表格,可以获取硬件设备的电源管理信息,并根据需要进行相应的控制和管理。
ACPI规范的架构主要包括ACPI系统描述表(ASD)和ACPI操作系统(OS)之间的接口、ACPI系统描述表和ACPI硬件之间的接口以及ACPI操作系统之间的接口。
ACPI系统描述表和ACPI硬件之间的接口用于实现操作系统对硬件设备的电源管理控制,ACPI操作系统之间的接口用于实现操作系统之间的协作和通信。
三、ACPI规范的功能和特性ACPI规范提供了丰富的电源管理功能和特性,包括系统电源管理、设备电源管理、电源状态转换等。
1. 系统电源管理:ACPI规范定义了一套系统级的电源管理功能,包括系统的开关机控制、休眠和唤醒功能等。
操作系统可以通过ACPI接口向系统发送相应的命令,实现系统的开关机控制、休眠和唤醒功能。
ACPI电源管理规范

ACPI电源管理规范引言概述:ACPI(高级配置和电源接口)是一种电源管理规范,旨在提高计算机的能效和性能。
它定义了一套标准接口和方法,用于操作和管理计算机的硬件设备和电源。
一、ACPI的基本原理和作用1.1 ACPI的基本原理ACPI通过操作系统和计算机硬件之间的接口,实现对电源管理的控制。
它使用一种称为ACPI表的数据结构,描述计算机的硬件组件和其对电源管理的需求。
1.2 ACPI的作用ACPI规范定义了一系列的电源管理功能,包括电源状态管理、设备唤醒、功耗管理等。
通过ACPI,操作系统可以根据硬件设备的需求,动态地调整电源的使用,从而提高计算机的能效和性能。
1.3 ACPI的优势ACPI的优势在于其灵活性和可扩展性。
它可以适应不同类型的计算机硬件,并支持不同的操作系统。
此外,ACPI还提供了一套标准的接口和方法,使得开发人员可以更方便地实现电源管理功能。
二、ACPI的主要组成部分2.1 ACPI表ACPI表是ACPI规范中定义的一种数据结构,用于描述计算机的硬件设备和其对电源管理的需求。
ACPI表包括多个子表,每个子表描述了不同的硬件设备或功能。
2.2 ACPI命名空间ACPI命名空间是ACPI规范中定义的一种层次结构,用于组织和管理ACPI对象。
每个ACPI对象都有一个唯一的名称,可以通过名称来访问和操作该对象。
2.3 ACPI事件和方法ACPI事件是指计算机硬件设备状态的变化,如设备的插拔、电源状态的改变等。
ACPI方法是一种特殊的ACPI对象,用于处理ACPI事件和执行相应的操作。
三、ACPI的电源状态管理3.1 电源状态ACPI定义了多种电源状态,包括S0、S1、S2、S3、S4和S5等。
每种状态代表了计算机的不同工作状态,从全功耗状态到完全关闭状态。
3.2 电源状态的转换ACPI提供了一套标准的接口和方法,用于控制电源状态的转换。
操作系统可以根据硬件设备的需求,动态地将计算机从一个状态转换到另一个状态。
ACPI详解

ACPI电源管理模式详解1、ACPI的概念ACPI: Advanced Configuration and Power InterfaceACPI有以下几种模式:S0 正常。
S1 CPU停止工作。
S2 CPU关闭。
S3 除了内存外的部件都停止工作。
S4 内存信息写入硬盘,所有部件停止工作。
S5 关闭。
怎样才能使用ACPI的电源管理模式呢?简单地说是要求软硬件都可以完全支持ACPI功能。
Windows98是最常用的理想平台,如果还没有安装Win98,在安装时输入Setup/PJ。
如果已经安装了Win98,可以到Win98"系统"中的"设备管理器"然后再找到"系统设备"里的"高级电源管理"这一项,双击它选择"升级驱动程序",显示所有设备,选择ACPI,再按提示安装驱动程序,重新启动计算机就可以在Windows98使用ACPI了。
如果在使用中遇到问题,可以试着升级版本最新的Acpi.sys文件。
注意,FAT32格式的硬盘无法实现硬盘的挂起功能(STD),而FAT16格式是可以的。
此外,硬件对ACPI的支持是必需的。
机箱电源提供5伏电压给主板的同时,必须使电流稳定在720毫安以上,才能够使电脑在短时间里从"睡眠"状态醒来。
同时,像显卡等外设也必须完全支持ACPI和STR。
通过选择电源方案可以实现电源管理,电源方案就是计算机管理电源使用情况的一组设置。
Windows98提供了下列三种预置的电源管理方案(见下表),用户也可以自己设置计算机进入等待状态或关闭硬盘和监视器所需的等待时间。
2、ACPI与APM比较APM 1.0&1.1:由BIOS执行电源管理;APM 1.2:操作系统定义电源管理时间,由BIOS负责执行;ACPI:BIOS收集硬件信息,定义电源管理方案;由操作系统负责执行。
ACPI电源管理规范

ACPI电源管理规范ACPI(Advanced Configuration and Power Interface)是一种电源管理规范,旨在提供一种统一的方式来管理计算机硬件设备的电源和系统配置。
该规范定义了一组标准接口和方法,允许操作系统和硬件设备之间进行通信和协调,以实现高效的电源管理和系统配置。
ACPI电源管理规范的主要目标是优化计算机的能源利用,延长电池寿命,并提供更好的系统性能。
它通过以下几个方面来实现这些目标:1. 系统电源管理:ACPI规范定义了一组标准接口和方法,用于控制计算机的电源状态。
这些接口和方法允许操作系统控制硬件设备的电源状态,例如开启、关闭、休眠和唤醒。
2. 设备电源管理:ACPI规范还定义了一组标准接口和方法,用于控制硬件设备的电源状态。
这些接口和方法允许操作系统控制硬件设备的电源状态,例如开启、关闭、休眠和唤醒。
通过有效地管理设备的电源状态,可以降低系统功耗,延长电池寿命,并提高系统性能。
3. 系统配置管理:ACPI规范还定义了一组标准接口和方法,用于管理计算机的系统配置。
这些接口和方法允许操作系统获取和修改硬件设备的配置信息,例如中断分配、内存映射和设备资源分配。
通过有效地管理系统配置,可以优化系统性能,并提供更好的兼容性和可靠性。
ACPI电源管理规范的实施需要硬件设备和操作系统的支持。
硬件设备需要提供符合ACPI规范的固件和驱动程序,以支持操作系统对电源管理和系统配置的控制。
操作系统需要提供ACPI驱动程序和工具,以实现对硬件设备的电源管理和系统配置。
ACPI电源管理规范已经得到了广泛的应用和支持。
几乎所有现代的计算机硬件设备和操作系统都支持ACPI规范。
通过有效地实施ACPI规范,可以实现更好的能源利用和系统性能,提高计算机的可用性和可靠性。
总结起来,ACPI电源管理规范是一种电源管理规范,旨在提供一种统一的方式来管理计算机硬件设备的电源和系统配置。
通过优化能源利用、延长电池寿命和提供更好的系统性能,ACPI规范对于现代计算机的电源管理和系统配置至关重要。
linux-acpi

试试 kernel 参数”acpi=off”,如果此参数没有带来任何改变,那么这不是一个 ACPI bug。 反之,则这很可能是一个 ACPI bug。 确定了是一个 ACPI bug 后,我们还有其他一些参数来 更进一步的区分到底是 ACPI 哪个部分的 bug。
acpi=ht
这个参数和"acpi=off"几乎一样,它禁止了除多处理器配置相关的内容以外的所有 ACPI 功 能。如果 acpi=off 正常,但 acpi=ht 不正常, 则解析 ACPI 表或者 Linux SMP 的代码有 bug.
pci=noacpi
禁止使用 ACPI 来处理任何 PCI 相关的内容,包括 PCI root bus 的枚举和 PCI 设备中断路由。
acpi=noirq
禁止使用 ACPI 来处理 PCI 设备中断路由,和 pci=noacpi 的区别是它允许使用 ACPI 来枚举 PCI root bus.
pnpacpi=off
• AML 代码,一种类 C 的代码。由 BIOS 提供,OS 的 AML 解释器(在 Linux 中叫 ACPI CA) 解释执行这些代码。这是 ACPI 抽象层的关键,下面会详细介绍。
• 配置信息,ACPI 包含的配置信息很多,比如多处理器配置信息(MADT)、NUMA 配置信 息(SRAT、SLIT)、高精度定时器(HPET)等。
Method (_DIS, 0, NotSerialized) {
Or (\_SB.PCI0.LPC.PIRA, 0x80, \_SB.PCI0.LPC.PIRA) } }
比如我们想禁止 LNKA 设备,ACPI 规范定义了 OS 必须执行此设备的_DIS 函数。从硬件的角度 来讲,禁止 LNKA 设备需要将某个 PCI 设备的配置空间的寄存器 0×60 的最高位置上。OS 不 需要知道硬件的细节,它解释执行_DIS 函数即可。上面的代码就是 AML 代码,由 BIOS 提供, 语句‘Or (\_SB.PCI0.LPC.PIRA, 0×80, \_SB.PCI0.LPC.PIRA)’实际上就是给寄存器 \_SB.PCI0.LPC.PIRA 置上最高位, 而 PIRA 就是 PCI 设备 LPC 的配置空间的寄存器 0×60。 从此段代码我们可以明显的看出 BIOS 以 AML 代码的形式隐藏(抽象)了硬件的细节,从而使 得 OS 看到的是一个平台无关的硬件。
ACPI电源管理规范
ACPI电源管理规范ACPI电源管理规范是一种用于操作系统和计算机硬件之间的接口标准,旨在实现电源管理的统一和标准化。
ACPI是Advanced Configuration and Power Interface 的缩写,它定义了一套机制,使操作系统能够对计算机的电源和硬件进行有效管理和控制。
ACPI电源管理规范的主要目标是提高计算机的能效,并提供灵活的电源管理功能,以便根据实际需求调整系统的功耗。
这可以通过多种方式实现,例如调整处理器的频率和电压、关闭不使用的设备、进入低功耗模式等。
ACPI规范定义了一套统一的命令集,使操作系统能够与计算机的硬件进行通信。
这些命令可以用于获取和设置硬件的状态信息,以及控制硬件的电源管理。
操作系统可以根据需要发送这些命令,以实现不同的电源管理策略。
ACPI规范还定义了一套事件机制,使操作系统能够实时监测硬件状态的变化。
例如,当电池电量低于设定阈值时,操作系统可以自动执行一系列操作,如降低处理器频率、关闭不必要的设备等,以延长电池的使用时间。
ACPI规范还包括一些高级功能,如热插拔和热交换。
这些功能允许在计算机运行时添加或移除硬件设备,而无需重启系统。
操作系统可以通过ACPI命令与新添加的设备进行通信,并根据需要进行配置和管理。
ACPI电源管理规范的实施需要操作系统和计算机硬件的紧密配合。
操作系统需要正确解释和执行ACPI命令,并根据硬件的状态进行相应的管理和控制。
计算机硬件需要提供符合ACPI规范的接口和功能,以便操作系统能够正确地与其进行通信。
ACPI电源管理规范的实施可以带来多方面的好处。
首先,它可以提高计算机的能效,减少功耗和热量的产生。
其次,它可以延长电池的使用时间,提高移动设备的续航能力。
此外,ACPI规范还可以简化操作系统的开发和维护工作,提高系统的稳定性和兼容性。
总之,ACPI电源管理规范是一种重要的标准化接口,用于实现操作系统和计算机硬件之间的电源管理功能。
acpi原理
acpi原理ACPI原理ACPI,即高级配置与电源接口(Advanced Configuration and Power Interface),是一种由英特尔、微软和东芝联合开发的电源管理标准。
ACPI通过软件与硬件的结合,提供了一套统一的接口和机制,用于实现电源管理、设备管理和系统配置等功能。
本文将介绍ACPI的原理和工作机制。
1. ACPI的背景和目标ACPI的出现是为了解决传统BIOS在电源管理和设备管理方面的局限性和不足。
传统BIOS一般是由硬件制造商提供,其功能受限且不够灵活,无法满足现代操作系统对电源管理的要求。
ACPI的目标是提供一种统一的、可扩展的、独立于硬件的电源管理标准,使得操作系统能够更好地管理硬件设备和电源,实现更高效的能耗控制。
2. ACPI的工作原理ACPI的工作原理主要包括以下几个方面:2.1. ACPI表和命名空间ACPI使用了一种名为ACPI表的数据结构来描述硬件设备和资源配置信息。
ACPI表是通过固化在主板上的固件(如UEFI固件)提供给操作系统的。
ACPI表中包含了设备的描述信息、设备的资源需求和配置、设备的状态信息等。
这些信息都被组织在一个名为ACPI命名空间的层次结构中,操作系统可以通过访问ACPI命名空间来获取设备的信息和控制设备的行为。
2.2. ACPI事件和方法ACPI通过定义一组标准的ACPI事件和方法,实现了操作系统与硬件设备之间的通信和控制。
ACPI事件可以是硬件产生的中断信号,也可以是操作系统发起的请求。
而ACPI方法则是一段在ACPI表中定义的代码,用于处理ACPI事件。
当ACPI事件发生时,操作系统会调用对应的ACPI方法来处理事件。
2.3. 电源管理ACPI通过定义一组标准的电源管理对象和方法,实现了对电源的管理和控制。
操作系统可以通过调用ACPI方法来控制电源的开关、电源状态的查询和设置等操作。
同时,ACPI还定义了一组电源管理事件,用于通知操作系统有关电源状态的改变。
acpi 学习笔记
ACPI学习笔记- 不断修订中-last updated on Oct 15刚起步,3.0b规范还只看了一部分,本文档对别人应该没什么意义,只是记录我的学习过程而已。
肯定有大量误解,欢迎BUG FIXING。
/*** file : ACPI Notes with Linux.txt* AUTHOR :albcamus<******************>* Copyright : GNU FDL(Free Documentation License)* XXX : continuously correcting and improving*/TERMINOLOGY:===========I.) TABLES OF ACPISDTH : System Description Table Header(注意这个不是Table,它是每个Table都包含的头)RSDP : Root System Description Pointer('RSD PTR')RSDT : Root System Description Table(signature is 'RSDT')FADT : Fixed ACPI Description Table('FACP')FACS : Firmware ACPI Control Structure('FACS')DSDT : Differentiated System Description Table('DSDT')PSDT : Persistent System Description Table('PSDT'). 注意它是ACPI Spec-1.0定义的,早已被移除。
SSDT : Secondary System Description Table('SSDT')MADT : Multipile ACPI Description Table('APIC')SBST : Smart Battery Table('SBST')XSDT : Extended System Description Table('XSDT')ECDT : Embedded Conroller Boot Resources Table('ECDT')SLIT : System Locality Distance Information Table('SLIT')SRAT : System Resource Affinity Table('SRAT')MCFG : PCI-Memory Mapped Configuration table and sub-table ('MCFG')SPCR : Serial Port Console Redirection table('SPCR')BERT : Boot Error Record Table('BERT')SBFT : Simple Boot Flag Table('BOOT')CPET? : Corrected Platform Error Polling Table('CPEP')DBGT? : Debug Port Table('DBGP')DMAT? : DMA Remapping Table('DMAR')TCPT? : Trusted Computing Platform Alliance Table('TCPA')WDRT : Watchdog Resource Table('WDRT')ASFT? : Alert Standard Format Table('ASF!')具体见ACPI规范3.0b的Table 5-6. 这里只是一部分。
ACPI
ACPIPrepare by kary.pan大纲•ACPI 概念•ACPI 种类S0S1S3S4S5Hybrid sleepAway modeG1G0G2ACPI概念•ACPI概念全稱為﹕A dvanced C onfiguration andP ower I nterface。
特点﹕在电脑闲置的时候关闭周边设备,将自己进入休眠状态,使整体的耗电量降到最低;同时,又能够从休眠尽快恢复到原先的工作状态,起到类似于快速进入Windows的效果。
条件:BIOS支持,OS驱动程序支持(所以在用ACPI测试时,驱动一定要安装,尤其是显卡驱动).ACPI种类STR模式(Suspend to RAM,休眠到内存)S1STR模式S3Hybrid sleepSTD模式(Suspend to Disk,休眠到磁盘)S4(Hibernate)STD模式Hybrid sleepACPI种类•S0系统正常工作状态,所有设备都正常工作•S1这时除了通过CPU时钟控制器将CPU关闭之外,其他的部件仍然正常工作特点:CPU风扇还是在转;开机电源灯是一直亮着;显示器已经被关闭;唤醒速度最快;(以回到windows桌面为准)最不省电拔掉电源线,所有的数据会丢失可以通过键盘,鼠标,电源键,计划任务,网络唤醒•S3把当前运行的系统程序,保存到内存上;CPU停止工作,一部分设备也停止了工作(供电),包括风扇也停止了转动.特点:CPU风扇停止转动;开机电源灯是一闪一闪的(有些可以在BIOS里设置);显示器已经被关闭;唤醒速度比较快;(以回到windows桌面为准)比S1省电拔掉电源线,所有的数据会丢失可以通过键盘,鼠标,电源键,计划任务,网络唤醒S1/S3进入ACPI种类•S4把当前运行的系统程序,保存到HDD上;绝大部的设备停止了工作(供电),包括硬盘在内;特点:CPU风扇停止转动;开机电源灯是熄灭显示器已经被关闭;唤醒速度慢;(以回到windows桌面为准)比S3省电拔掉电源线,所有的数据会继续保存;可以通过电源键,计划任务,网络唤醒S4ACPI种类•S5这种状态是最干脆的,就是连电源在内的所有设备全部关闭,即关机(shutdown)状态可以通过电源键,BIOS,网络唤醒ACPI种类•Hybrid sleep这个状态不是一个标准的状态,而是Vista/Win7这样比较新的OS才支持的功能,它是S3,S4的混合体.特点:没有拔掉电源线:状态和S3一样,拔掉电源线状态和S4一样;ACPI种类Away mode同样,这个不是一个ACPI的标准模式;在某种程度上,它没有使机器睡眠;特点:关掉了显示器;关掉了声音;网络没有断;能耗相对其他以上的状态最大不能通过用网络唤醒;ACPI种类•G3在S5之后,拔掉电源线,即是G3状态.比较及总结返回速度及进入速度Away mode > S1 > S3 > S4 > S5能耗:Away mode < S1 < S3 < S4 < S5Thank you。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
ACPI学习笔记- 不断修订中-last updated on Oct 15刚起步,3.0b规范还只看了一部分,本文档对别人应该没什么意义,只是记录我的学习过程而已。
肯定有大量误解,欢迎BUG FIXING。
/*** file : ACPI Notes with Linux.txt* AUTHOR :albcamus<******************>* Copyright : GNU FDL(Free Documentation License)* XXX : continuously correcting and improving*/TERMINOLOGY:===========I.) TABLES OF ACPISDTH : System Description Table Header(注意这个不是Table,它是每个Table都包含的头)RSDP : Root System Description Pointer('RSD PTR')RSDT : Root System Description Table(signature is 'RSDT')FADT : Fixed ACPI Description Table('FACP')FACS : Firmware ACPI Control Structure('FACS')DSDT : Differentiated System Description Table('DSDT')PSDT : Persistent System Description Table('PSDT'). 注意它是ACPI Spec-1.0定义的,早已被移除。
SSDT : Secondary System Description Table('SSDT')MADT : Multipile ACPI Description Table('APIC')SBST : Smart Battery Table('SBST')XSDT : Extended System Description Table('XSDT')ECDT : Embedded Conroller Boot Resources Table('ECDT')SLIT : System Locality Distance Information Table('SLIT')SRAT : System Resource Affinity Table('SRAT')MCFG : PCI-Memory Mapped Configuration table and sub-table ('MCFG')SPCR : Serial Port Console Redirection table('SPCR')BERT : Boot Error Record Table('BERT')SBFT : Simple Boot Flag Table('BOOT')CPET? : Corrected Platform Error Polling Table('CPEP')DBGT? : Debug Port Table('DBGP')DMAT? : DMA Remapping Table('DMAR')TCPT? : Trusted Computing Platform Alliance Table('TCPA')WDRT : Watchdog Resource Table('WDRT')ASFT? : Alert Standard Format Table('ASF!')具体见ACPI规范3.0b的Table 5-6. 这里只是一部分。
Note, ACPI定义的所有tables、blocks和structures,全都是little-endian。
II.) THE OTHER TERMINOLOGIESASL : ACPI Source LanguageAML : ACPI Machine LanguageDSL : Digital Simulation LanguageE820 : a system memory map protocol, provided in ACPI spec, ch14 for 3.0b EFI : Enhanced Firmware InterfaceHPET : High Precision Event TimerGPE : General-Purpose EventGSI : Global System InterruptsOSL : OS Service LayerOSPM : OS Power Management, 指Linux等OS中实现对ACPI支持的代码PRT : PCI IRQ Routing TablePXE : Preboot Execution EnvironmentSAPIC : Streamlined APIC, IA64上使用的APIC。
其local SAPIC和I/O SAPIC分别对应着IA32和x86-64上的Local APIC和I/O APICSBF : Simple Boot FlagSCI : System Control Interrupt(OS-visible interrupts, triggered by ACPI events)SMBIOS/DMI : System Management BIOS/Desktop Management Interface. PC的BIOS 规范。
TOM : Top Of MemoryUUID : Universal Uniform IDentifiersxface : Linux内核ACPI源文件的命名法,表示Interface。
例如tbxface.c实现table的接口。
1, RSDP, RSDT and XSDTRSDP是位于系统内存地址空间中的,它的值由firmware设置。
RSDP包含了两个指针(还有其他字段,见Linux的struct acpi_table_rsdp),分别保存着RSDT表的物理地址(32位),和XSDT表的物理地址(64位)。
Linux寻找RSDP的代码见acpi_os_get_root_pointer()函数。
从ACPI2.0+开始,XSDT就取代了RSDT。
RSDT是ACPI 1.0中的,现代的OEM厂商一般也还提供RSDT,但那只是为了向后兼容ACPI-1.0而已。
或者用RSDT,或者用XSDT,不管选择用那个,它都包含了其他ACPI表数组的地址。
Linux下这2者的定义是:struct acpi_table_rsdt {struct acpi_table_header header; /* Common ACPI table header */u32 table_offset_entry[1]; /* Array of pointers to ACPI tables */ };struct acpi_table_xsdt {struct acpi_table_header header; /* Common ACPI table header */u64 table_offset_entry[1]; /* Array of pointers to ACPI tables *//* FIXME: 为什么数组大小是1?*/};2, ACPI Table HeaderACPI所有的描述表(FACS表除外?Linux的acpi_table_facs结构不包含header,ACPI规范中也没有)都包含着一个Header,所有描述表的Header结构都是一样的。
Linux把它定义为:struct acpi_table_header {char signature[ACPI_NAME_SIZE]; /* ASCII table signature */u32 length; /* Length of table in bytes, including this header */u8 revision; /* ACPI Specification minor version # */u8 checksum; /* To make sum of entire table == 0 */char oem_id[ACPI_OEM_ID_SIZE]; /* ASCII OEM identification */char oem_table_id[ACPI_OEM_TABLE_ID_SIZE]; /* ASCII OEM table identification */u32 oem_revision; /* OEM revision number */char asl_compiler_id[ACPI_NAME_SIZE]; /* ASCII ASL compiler vendor ID */ u32 asl_compiler_revision; /* ASL compiler version */};3,(RSDT/XSDT之外的) ACPI描述表数组的第一个:FADT这个数组的第一个元素由XSDT中的table_offset_entry[0]指定位置。
被指向的第一个表通常是FADT(Fixed ACPIDescription Table),它的几个主要作用:1) 保存着FACS和DSDT表的地址(64位也是)2) 包含一些entries,每个entry有固定的length,描述一个硬件的ACPI feature(我的理解就是,硬件对ACPI的支持程度)Linux下FADT的定义见struct acpi_table_fadt结构。
4. DSDT表(Differentiated System Description Table)由FADT中的字段指向,见上一条笔记。
//Thanks for wheelz!DSDT表包含一个Definition Block,叫作'Differentiated Definition Block for the DSDT',它包含了实现与配置信息(implementation and configuration information)。