目录
序 2
第1章:ACPI规范简介 3
第2章:名词术语(Term) 4
第3章:Hello World 5
第4章:方法(Method) 6
第5章:对象(Object) 7
第6章:对象类型及命名 8
第7章:特殊对象与类型 10
第8章:类型转换及规则 11
第9章:常用ASL算子(operator)简介 14
第10章:ACPI表 15
第11章:ACPI硬件 16
第12章:ACPI操作系统 17
第13章:Low Power S0 Idle简介 18
第14章:ACPI/ASL调试简介 19
目录
序 2
第1章:ACPI规范简介 3
第2章:名词术语(Term) 4
第3章:Hello World 5
第4章:方法(Method) 6
第5章:对象(Object) 7
第6章:对象类型及命名 8
第7章:特殊对象与类型 10
第8章:类型转换及规则 11
第9章:常用ASL算子(operator)简介 14
第10章:ACPI表 15
第11章:ACPI硬件 16
第12章:ACPI操作系统 17
第13章:Low Power S0 Idle简介 18
第14章:ACPI/ASL调试简介 19
第1章:ACPI规范简介
ACPI(Advanced Configuration and Power Interface)是由intel及微软等企业在1990年左右提出的PC电源管理接口规范。其目标是把操作系统和系统固件(UEFI/BIOS)隔离开来,使操作系统和硬件(固件)厂商可以在共同标准下相互解耦独立发展。ACPI最新的版本是6.4,下文内容都是基于6.4的版本进行说明。
ACPI规范包含了ACPI硬件、ACPI软件、ACPI表、设备管理、电源管理、热管理等内容。其中ASL(ACPI Source Language)语言是默认用来编写ACPI代码的“声明式编程语言”,AML(ACPI Machine Language)是ASL源码被编译器编译后被AML解释器解释执行的字节码。AML是所有ACPI兼容的操作系统必须支持的,但是ASL是非必须的,只要是能最终被转换成AML的其他的任何语言都可以用来编写ACPI代码。
ASL用来定义ACPI对象(object)和ACPI控制方法(Method),ASL支持预定义的内置算子和宏供程序(一般是BIOS工程师编写)或OS调用,如:数学运算、逻辑运算等。
ACPI规范定义了大量的与硬件和OS相关的内容,整个文档洋洋洒洒有数千页之多,阅读起来甚是难以理解。本文试图以BIOS工程师的视角来对其进行简单的梳理,参照一般的编程语言如“C语言“类似的讲解逻辑从“Hello World”开始,介绍如何使用ACPI/ASL编写自己的程序,如何编译、运行、调试代码。以及ACPI表、ACPI硬件、ACPI操作系统、系统睡眠唤醒流程等。
1