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.2.11. 定义块

定义块由AML格式的数据组成(请参见第 5.4 节“定义块编码”),并包含有关硬件实现细节的信息,其形式为AML对象,其中包含数据、AML代码或其他AML对象。加载定义块后,该信息的顶级组织在分层命名空间中进行名称标记。

OSPM“加载”或“卸载”整个定义块作为逻辑单元。当执行 AMLLoad() 或 LoadTable() 运算符,或者在初始化过程中遇到表定义时,OSPM 会加载定义块。在初始化期间,OSPM 使用从 FADT 检索到的 DSDT 指针加载差分系统描述表 (DSDT),其中包含差分定义块。由于在 RSDT/XSDT 中遇到辅助系统描述表 (SSDT) 的定义,OSPM 也会在初始化期间加载其他定义块。每个 SSDT 都必须按照其在 RSDT/XSDT 中出现的顺序加载。以下部分介绍 DSDT 和 SSDT。

如前所述,AMLLoad() 和 LoadTable() 运算符使定义块能够静态或动态地加载其他定义块,而它们又可以定义新的系统属性,或者在某些情况下基于先前的定义进行构建。尽管这使硬件能够在实现上进行广泛的变化,但它也将其限制在合理的范围内。在某些情况下,定义块格式只能描述特定且易于理解的差异。在其他情况下,它允许只能通过一组指定的“内置”运算符来表达实现。例如,定义块具有内置的 I/O 空间运算符。

理论上,可以通过从 I/O 空间构建来在定义块中定义类似PCI配置空间的内容,但这不是定义块的目标。这样的空间通常被定义为“内置”运算符。

一些AML运算符执行简单功能,而其他运算符则包含复杂功能。定义块的强大之处在于它能够以多种方式将这些操作粘合在一起,从而为OSPM提供功能。

本规范中定义的AML运算符旨在允许轻松表达许多有用的硬件设计,而不是允许表达所有硬件设计。

注:为了适应超过 32 位的寻址,在 ACPI 2.0 中整数类型扩展为 64 位,请参见 第 19.3.5 节。现有的ACPI定义块实现可能包含 32 位整数宽度的固有假设。因此,为了保持向后兼容性,OSPM使用包含定义块的系统描述表的标头部分中的修订字段来确定定义块中声明的整数是否将被评估为 32 位值或 64 位值。修订字段值大于或等于 2 表示定义块中声明的整数将被评估为 64 位值。 ASL编写器通过ASL定义块的ComplianceRevision 字段指定定义块表头的Revision 字段的值。有关更多信息,请参阅第 19.6.29 节。 ASL编写者有责任在设置ComplianceRevision字段时确保定义块与相应整数宽度的兼容性。

5.2.11.1. 差分系统描述表 (DSDT)

差分系统描述表(DSDT)是系统固定描述的一部分。 DSDT由系统描述表头和定义块格式的数据组成。有关定义块的描述,请参见第 5.2.11 节。在初始化期间,OSPM 在固定ACPI 描述表中查找指向DSDT 的指针(使用FADT 的DSDT 或X_DSDT 字段),然后加载DSDT 以创建ACPI 命名空间。

表 5.17 区分系统描述表字段 (DSDT) 字段字节长度字节偏移描述
签名40‘DSDT’ 差分系统描述表的签名。
长度44整个DSDT(包括标头)的长度(以字节为单位)。
修订18
  1. 该字段还设置AML解释器的全局整数宽度。小于 2 的值将导致解释器使用 32 位整数和数学。 2 或更大的值将导致解释器使用完整的 64 位整数和数学。

校验和| 1 | 9 |整个表的总和必须为零。 OEMID | 6 | 10 | 10 OEM ID OEM 表ID | 8 | 16 | 16制造型号ID。 OEM 修订 | 4 | 24 | OEM 所提供OEM 表ID 的DSDT 修订版。 创建者ID | 4 | 28 | 28 ASL 编译器的供应商 ID。 创建者修订| 4 | 32 | 32 ASL 编译器的修订号。 定义块| n | 36 | 36 n 个字节的AML代码(参见第 5.4 节)。

5.2.11.2. 辅助系统描述表 (SSDT)

辅助系统描述表 (SSDT) 是 DSDT 的延续。 SSDT由系统描述表头和定义块格式的数据组成。可以存在多个 SSDT。在OSPM加载DSDT以创建ACPI命名空间后,RSDT/XSDT中列出的每个辅助系统描述表以及唯一的OEM表ID将按照RSDT/XSDT。

  • 附加表只能添加数据;他们无法覆盖以前表中的数据。

这使得OEM能够在一个表中提供基本支持,并在其他表中添加较小的系统选项。例如,OEM可能会将动态对象定义放入辅助表中,以便固件可以在启动时构建动态信息,而无需编辑静态DSDT。 SSDT只能依赖于在其之前加载的DSDT。

表 5.18 辅助系统描述表字段 (SSDT) 字段字节长度字节偏移描述
标题
签名40“SSDT”辅助系统描述表的签名。
长度44整个SSDT(包括标头)的长度(以字节为单位)。
修订182
校验和19整个表的总和必须为零。
OEMID61010 OEM ID
OEM 表 ID81616制造型号ID。
OEM 修订424OEM 所提供OEM 表ID 的DSDT 修订版。
创建者ID42828 ASL 编译器的供应商 ID。
创建者修订43232 ASL 编译器的修订号。
定义块n3636 n 个字节的AML代码(参见第 5.4 节)。

5.2.11.3. 持久系统描述表 (PSDT)

表签名“PSDT”指的是ACPI 1.0 规范中定义的持久系统描述表(PSDT)。 PSDT被认为没有提供任何特定的好处,因此已从ACPI规范的后续版本中删除。 OSPM 将评估带有“PSDT”签名的表,其方式与评估 SSDT 类似,如第 5.2.11.2 节所述

Prev
5.2.10. 固件 ACPI 控制结构 (FACS)
Next
5.2.12. 多个APIC描述表(MADT)