固件C字营·版权所有
敬请关注微信公众号:“固件C字营”
=====================================================================
目录
第1章:ACPI规范简介... 3
第2章:名词术语(Term)... 4
第3章:Hello World. 4
第4章:方法(Method)... 4
第5章:对象(Object)... 4
第6章:对象类型及命名... 4
第7章:特殊对象与类型... 4
第8章:类型转换及规则... 4
第9章:常用ASL算子(operator)简介... 4
第10章:ACPI表... 4
第11章:ACPI硬件... 4
第12章:ACPI操作系统... 4
第13章:Low Power S0 Idle简介... 4
第14章:ACPI/ASL调试简介... 4
第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操作系统、系统睡眠唤醒流程等。
固件C字营·版权所有
敬请关注微信公众号:“固件C字营”
更多推荐
《UEFI内核导读》ACPI编程入门
发布评论