UEFI 笔记 001 —— 什么是 ACPI method

声明:个人笔记,概不负责

一句话

所谓 ACPI method 本质上就是 Callback 函数。是在 OS 主导下,OS 发起的,对 System Firmware 的调用。

类似在 Windows 上用 C 编写 Win32 应用,需要实现一堆 OS 要求的 Callback 函数。
ACPI method 的提供者 System Firmware ,事实上在 实现 OS 要求的 Callback 函数。
所不同的是,OS 调用 C 应用的是 native code ,而调用 System Firmware 的是 AML code.

System Firmware 本身是 native code ,为满足 OS 的目的,不得不提供 AML code
System Firmware 本身并不执行这些 AML 代码,只是在交割管理权给 OS 时,以“一片内存”的形式传递准备好的 AML code

OS 解释执行 AML 代码,由于 OS 理解 AML 所需资源,所以 OS 能把 AML code 中 对 hardware 的 调用,转成 native 调用。

啰嗦的话

可以想象最糟糕的情况是,对某个 device ,在 System Firmware 用 native code 实现一段逻辑,又在 AML code 中写了一份类似的逻辑,而在 OS 中的 driver 又又又用 native code 实现了一次。

在 OS 接管后,System Firmware 失去用 native code 控制的权力,它的残影只在它提供的 AML code 中存在。OS 以某种方式 平衡 ACPI Deivce AML code 与 OS Device Driver native code 互动。

有些系统 System Firmware 执念 native code 的权力,交接给 OS 后还不想放弃,所以系统变得复杂。有些系统 System Firmware 并不在乎,交割管理权给 OS 后,自己的 native code 权力随之放弃。在读了 ACPI 5.0(2011年)加入的 Hardware-Reduced ACPI 叙述之后,颇能体会 ACPI method 的本质。

ACPI spec 的演化,是 写 spec 的人解决问题时 觉得对 spec 不爽,自己把 spec 改造成需要的样子。
—— 2012 年,Windows 8 发布,基于 SoC 运行的 Windows 8 需要 ACPI 5.0
—— 2011 年,ACPI 5.0 发布,里面有一大堆 微软递交的更改。

Hardware-Reduced ACPI 可译作 —— 精简硬件 ACPI(借鉴 RISC 的翻译)
Windows 8 第一次开始支持 手机、平板系统,第一次开始支持 ARM 处理器。

[ACPI-old] https://uefi.org/acpi/specs
[Win-ACPI] https://learn.microsoft.com/en-us/windows-hardware/drivers/kernel/acpi-driver
[Win8-SOC] https://learn.microsoft.com/en-us/windows-hardware/drivers/bringup/windows-acpi-design-guide-for-soc-platforms
[Window8] https://en.wikipedia.org/wiki/Windows_8

posted @   悠洋洋  阅读(143)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示