Advertisement

ACPICA User Guide and Programmer Reference 翻译4

阅读量:

2.1 ACPI表管理

此模块负责管理所有ACPI表,并支持诸如RSDT/XSDT、FADT、FACS、DSDT及SSDT等表单。这些表单既可来自固件程序也可由主操作系统提供。该模块的功能体现在其管理能力上:

  • ACPI 表校验
  • ACPI表安装和卸载
  • 使用ACPI表

2.2.2对ACPI表的初始使用

在多数情况下,在系统/内核初始化的早期阶段就需要包含有 ACPI 表的信息。这些信息通常以 ECDT 和 MADT 表的形式存在。因此,在硬件被初始化之前,这些信息就可能已经在内核动态内存(以及虚拟内存)中得以准备就绪。

为了确保初始化过程顺利进行,在ACPICA表管理模块的设计中采用了独立模块的架构。该模块具备自我初始化和使用的功能,并且在运行过程中不会受ACPICA子系统其他部分的影响。在任意给定时间点上,只需一个内存映射即可完成任务,并且不需要动态内存分配。(这句话的意思是说这个模块设计得很灵活)

2.2.3 AML翻译器

该系统采用AML编程语言构建了专门用于解析与执行由第三方软件供应商提供的代码。
除了少数例外情况外,在大多数情况下这些服务都是基于该系统构建的。
由于设计限制,在这种架构下并未提供直接与该系统交互的公共接口。
该系统的功能模块都依赖于以下核心组件:AML生成式解释器、代码解析模块以及代码执行引擎。

  • ACPI表解析
  • 执行AML控制方法
  • Evaluation of Namespace Objects

2.2.4 命名空间管理

该命名为NSM( namespacing service manager)的组件建立在AML翻译器之上,并实现了ACPI命名空间服务。该命名为NMS( namespacing manager service)的组件负责创建并管理内部的ACPI命名空间。这些服务内容主要包括:

通过初始化命名空间并基于ACPI表配置
设备枚举操作
在代码中引用该命名空间以实现相关功能
通过读取并解析相关数据文件来获取所需信息

2.2.5 资源管理

资源管理模块基于命名空间和AML翻译器提供对资源的请求与配置的服务。这些服务包括支持资源请求与配置的各种功能。

  • 获取并设置当前的系统所需资源
    • 查询潜在系统所需的额外组件
    • 查询IRQ相关的路由配置信息
    • 分析系统的电源配置与Dependency关系

2.2.6 ACPI硬件管理

硬件管理模块负责处理和控制涉及ACPi寄存器、时钟以及与之相关的其他硬件。具体包含的功能如下:

涉及 ACPI 状态寄存器和使能寄存器。
通常指对 ACPI 寄存器的读写操作。
基于电源管理时钟的时间基准。
支持在启用或禁用状态下切换 ACPI 模式。
全局锁机制的有效应用。
进入深度休眠状态(S态)。

2.2.7事件处理

该模块负责协调 ACPI 系统级中断(SCI)。其中 ACPI 时钟、固定事件以及通用事件(GPEs)被 SCI 中断所复用。此外,该模块还处理通知分配,并对地址空间与操作域中的相关事件进行管理。

启用或禁用的 ACPI 事件类型包括固定型 GPEs。
该系统能够管理固定类型的 ACPI 事务,并支持将这些任务分配到不同的组件中。
对于所有类型的 ACPI 事务管理器而言,在初始化时需要执行启动、停止以及资源分配等操作。
在启动过程中需要执行初始化操作,在停止时则完成资源释放,并根据配置进行任务分配。
系统会自动管理和配置内存地址范围以及相关操作域的设置。

2.2.8Host 操作系统到ACPI子系统的请求

主操作系统能够直接使用以Acpi开头的外部接口来请求ACPI服务。

ACPI包括的实际服务(以及它们的需求),因不同操作系统而异。然而,在大多数操作系统的ACPI功能请求主要集中在以下几类:启动时服务、设备加载阶段的功能以及运行时服务。

ACPI包括的实际服务(以及它们的需求),因不同操作系统而异。然而,在大多数操作系统的ACPI功能请求主要集中在以下几类:启动时服务、设备加载阶段的功能以及运行时服务。

下图显示了OS到ACPICA请求的服务流程。

全部评论 (0)

还没有任何评论哟~