ACPI 中文文档ACPI 中文文档
首页
第 1 章
第 2 章
第 3 章
第 4 章
第 5 章
第 6 章
第 7 章
第 8 章
第 9 章
第 10 章
第 11 章
第 12 章
第 13 章
第 14 章
第 15 章
第 16 章
第 17 章
第 18 章
第 19 章
第 20 章
第 21 章
附录 A
首页
第 1 章
第 2 章
第 3 章
第 4 章
第 5 章
第 6 章
第 7 章
第 8 章
第 9 章
第 10 章
第 11 章
第 12 章
第 13 章
第 14 章
第 15 章
第 16 章
第 17 章
第 18 章
第 19 章
第 20 章
第 21 章
附录 A
  • 第 5 章

    • 总览
    • 5.1. 系统描述表架构概述
    • 5.2. ACPI 系统描述表
      • 5.2.1. 保留位和字段
      • 5.2.2. 兼容性
      • 5.2.3. 地址格式
      • 5.2.4. 通用唯一标识符 (UUID)
      • 5.2.5. 根系统描述指针 (RSDP)
      • 5.2.6. 系统描述表头
      • 5.2.7. 根系统描述表 (RSDT)
      • 5.2.8. 扩展系统描述表 (XSDT)
      • 5.2.9. 固定 ACPI 描述表 (FADT)
      • 5.2.10. 固件 ACPI 控制结构 (FACS)
      • 5.2.11. 定义块
      • 5.2.12. 多个APIC描述表(MADT)
      • 5.2.13. 全局系统中断
      • 5.2.14. 智能电池表 (SBST)
      • 5.2.15. 嵌入式控制器启动资源表 (ECDT)
      • 5.2.16. 系统资源关联表 (SRAT)
      • 5.2.17. 系统局部性信息表 (SLIT)
      • 5.2.18. 更正平台错误轮询表 (CPEP)
      • 5.2.19. 最大系统特性表 (MSCT)
      • 5.2.20. ACPI RAS 功能表 (RASF)
      • 5.2.21. 内存电源状态表 (MPST)
      • 5.2.22. 启动图形资源表 (BGRT)
      • 5.2.23. 固件性能数据表 (FPDT)
      • 5.2.24. 通用定时器描述表 (GTDT)
      • 5.2.25. NVDIMM 固件接口表 (NFIT)
      • 5.2.26. 安全设备 (SDEV) ACPI 表
      • 5.2.27. 异构内存属性表(HMAT)
      • 5.2.28. 平台调试触发器表 (PDTT)
      • 5.2.29. 处理器属性拓扑表 (PPTT)
      • 5.2.30. 平台健康评估表 (PHAT)
    • 5.3. ACPI 命名空间
    • 5.4. 定义块编码
    • 5.5. 控制方法和 ACPI 源语言 (ASL)
      • 5.5.1. ASL 报表
      • 5.5.2. 控制方法执行
        • 5.5.2.1. 论点
        • 5.5.2.2. 方法调用约定
        • 5.5.2.3. 局部变量和本地创建的数据对象
        • 5.5.2.4. 进入运营区域
          • 5.5.2.4.1. 运营地区
          • 5.5.2.4.2. CMOS 协议
          • 5.5.2.4.3. PCI 设备 BAR 目标协议
          • 5.5.2.4.4. 声明IPMI运营区域
          • 5.5.2.4.5. 声明 GeneralPurposeIO 操作区域
          • 5.5.2.4.6. 声明 GenericSerialBus 操作区域
            • 5.5.2.4.6.1. 声明 GenericSerialBus 字段
            • 5.5.2.4.6.2. 声明和使用 GenericSerialBus 数据缓冲区
            • 5.5.2.4.6.3. 使用通用串行总线协议
          • 5.5.2.4.7. 声明PCC运营区域
    • 5.6. ACPI 事件编程模型
      • 5.6.1. ACPI 事件编程模型组件
      • 5.6.2. ACPI 事件类型
      • 5.6.3. 固定事件处理
      • 5.6.4. 通用事件处理
      • 5.6.5. GPIO 信号 ACPI 事件
      • 5.6.6. 设备对象通知
      • 5.6.7. 设备类特定对象
      • 5.6.8. 对象、方法和资源的预定义ACPI名称
      • 5.6.9. 中断信号ACPI事件
      • 5.6.10. 使用设备 _PRW 对象管理唤醒事件
    • 5.7. 预定义对象
    • 5.8. 系统配置对象

5.1. 系统描述表架构概述

根系统描述指针 (RSDP) 结构位于系统的内存地址空间中,由平台固件设置。该结构包含扩展系统描述表 (XSDT) 的地址,该表引用向 OSPM 提供数据的其他描述表,为其提供基本系统的实现和配置知识(请参阅根系统描述指针和表)。

../_images/Root_system_description_pointer_and_table.PNG

图 5.1 根系统描述指针和表

所有系统描述表都以相同的表头开头。系统描述表的主要目的是为 OSPM 定义各种行业标准实现细节。这些定义使实现可以在硬件要求和设计上保持灵活,同时仍为 OSPM 提供直接控制硬件所需的知识。

扩展系统描述表 (XSDT) 指向内存中的其他表。它通常首先指向固定 ACPI 描述表 (FADT)。该表中的数据包含各种固定长度条目,用于描述硬件的固定 ACPI 功能。FADT 又始终引用差分系统描述表 (DSDT),后者包含各种系统功能的信息和描述。这些表之间的关系如描述表结构所示。

../_images/Description_table_structures.PNG

图 5.2 描述表结构

OSPM 查找 RSDP 结构,如在 IA-PC 系统上查找 RSDP(“在 IA-PC 系统上查找 RSDP”)或在 UEFI 启用系统上查找 RSDP(“查找RSDP 在 UEFI 启用的系统上”)。

当OSPM定位该结构时,它会查找根系统描述表或扩展系统描述表的物理地址。根系统描述表以签名“RSDT”开头,而扩展系统描述表以签名“XSDT”开头。这些表包含一个或多个指向其他系统描述表的物理指针,用于提供系统的各种信息。如描述表结构所示,其中始终存在固定 ACPI 描述表 (FADT) 的物理地址。

当OSPM跟随物理指针指向另一个表时,它会检查每个表是否有已知的签名。根据签名,OSPM可以解释描述表中特定于实现的数据。

FADT的目的是定义与配置和电源管理相关的各种静态系统信息。固定 ACPI 描述表以“FACP”签名开头。 FADT描述了ACPI硬件寄存器在平台上的实现和配置细节。

有关ACPI硬件寄存器块的规范(PM1a_EVT_BLK、PM1b_EVT_BLK、PM1a_CNT_BLK、PM1b_CNT_BLK、PM2_CNT_BLK、PM_TMR_BLK、GP0_BLK、GP1_BLK和一个或多个P_BLKs),参见ACPI寄存器模型 PM1a_EVT_BLK、PM1b_EVT_BLK、PM1a_CNT_BLK、PM1b_CNT_BLK、PM2_CNT_BLK和PM_TMR_BLK块用于控制低级ACPI系统功能。

GPE0_BLK和GPE1_BLK块为控制方法的中断处理模型提供了基础。 P_BLK块用于控制处理器功能。

除了ACPI硬件寄存器实现信息外,FADT还包含一个物理指针,指向称为“差分系统描述表”(DSDT) 的数据结构,该数据结构以定义块格式进行编码(请参阅定义块)。

定义块包含平台硬件实现细节,以数据对象的形式组织在称为“ACPI 命名空间”的分层(树形)实体中,用于表示平台的硬件配置。由 OSPM 加载的所有定义块共同组成一个表示平台的命名空间。数据对象以 ACPI 机器语言(AML)的格式编码。以 AML 编码的数据对象由 OSPM 中的 AML 解释器进行“求值”。其值既可以是静态的,也可以是动态的。AML 解释器对动态数据对象的求值支持编程式求值,包括访问地址空间(例如 I/O 或内存访问)、执行计算和逻辑判断以确定结果。动态命名空间对象称为“控制方法”。OSPM 会将整个定义块作为逻辑单元“加载”,即向命名空间添加或从命名空间删除相关对象。DSDT 包含一个称为“差分定义块”的定义块,其中包含 OSPM 执行电源管理、热管理或即插即用功能所需的实现与配置信息,这些功能超出了 ACPI 硬件寄存器所描述的范围。

定义块可以定义新的系统属性,或者在某些情况下,基于先前的定义构建。定义块可以从系统内存地址空间加载。定义块的一种用途是描述和分发平台版本更改。

定义块允许将硬件平台实现的各种变化描述为ACPI兼容的OS,同时将变化限制在合理的范围内。定义块允许使用一些定义良好的对象名称来表达简单的平台实现。理论上,可以通过从 I/O 空间构建来在定义块内定义类似PCI配置空间的访问方法,但这不是定义块规范的目标。这样的空间通常被定义为“内置”运算符。

一些运算符执行简单的功能,而另一些则包含复杂的功能。定义块的强大之处在于它能够以多种方式将这些操作粘合在一起,从而为OSPM提供功能。存在的运算符旨在允许许多有用的硬件设计被ACPI表达,而不是允许所有硬件设计被表达。

5.1.1. 地址空间转换

一些平台可能包含当 I/O 和/或内存周期通过桥时执行转换的桥。该平移可以采用添加或减去偏移量的形式。或者它可以采用从 I/O 周期转换为内存周期并再转换回来的形式。当进行转换时,处理器在读取或写入周期期间放置在处理器总线上的地址与I/O总线桥放置在I/O总线上的地址不同。处理器放置在处理器总线上的地址在此称为处理器相对地址。桥接器放置在 I/O 总线上的地址称为总线相对地址。除非另有说明,本节中使用的所有地址都是处理器相对地址。

例如,考虑一个具有两个根PCI总线的平台。平台设计者有多种选择。一种解决方案是将 16 位 I/O 空间分成两部分,将一部分分配给第一个根PCI总线,将一部分分配给第二个根PCI总线。另一种解决方案是让两个根PCI总线解码整个 16 位 I/O 空间,将第二根PCI总线的 I/O 空间映射到内存空间。在第二种情况下,当处理器需要从第二个根PCI总线下方的设备的 I/O 寄存器中读取数据时,它需要在根PCI总线桥用于映射 I/O 空间的范围内执行内存读取。

  • 由于历史兼容性问题,行业标准 PC 不提供地址空间转换。
Prev
总览
Next
5.2. ACPI 系统描述表