当前位置: 首页 > news >正文

Linux ACPI - ACPI系统描述表架构(2)

  • ACPI系统描述表架构

1.概要

  ACPI defines a hardware register interface that an ACPI-compatible OS uses to control core power management features of a machine, as described in ACPI Hardware Specification ACPI also provides an abstract interface for controlling the power management and configuration of an ACPI system. Finally, ACPI defines an interface between an ACPI-compatible OS and the platform runtime firmware.

  To give hardware vendors flexibility in choosing their implementation, ACPI uses tables to describe system information, features, and methods for controlling those features. These tables list devices on the system board or devices that cannot be detected or power managed using some other hardware standard, plus their capabilities as described in ACPI Concepts They also list system capabilities such as the sleeping power states supported, a description of the power planes and clock sources available in the system, batteries, system indicator lights, and so on. This enables OSPM to control system devices without needing to know how the system controls are implemented.

  ACPI定义了一个硬件寄存器接口。ACPI兼容OS使用此接口来控制机器的核心电源管理特征。ACPI也提供了一个抽象接口,用来控制ACPI系统的电源管理及配置。此外,ACPI定义了ACPI兼容OS和系统BIOS之间的接口。

  由平台固件创建的RSDP(Root System Description Pointer)结构位于系统内存地址空间中。此结构包含了RSDT(Root System Description Table)或者XSDT(eXtended System Description Table)的地址,而RSDT或者XSDT指向了其他向OSPM提供数据的系统描述表。这些系统描述表一起将系统的基础实现和配置提供给OSPM,如图1所示。

在这里插入图片描述
  所有系统描述表都以相同的头部开始。系统描述表的主要目的是为OSPM定义各种业界标准的实现细节。这样,可以非常灵活地实现硬件需求、设计中涉及的各个部分,同时也将直接控制这些硬件所需的信息提供给OPSM。

  RSDT/XSDT指向内存中其他系统描述表。RSDT/XSDT指向的第一个系统描述表总是FADT(Fixed ACPI Description Table)。FADT中的数据包括各种固定长度的表项,用于描述硬件固定的ACPI特征。FADT总会指向DSDT(Differentiated System Description Table),而DSDT包含了有关系统特征的各种信息和描述。这些表之间的关系如图2所示。

在这里插入图片描述
  当OSPM定位了RSDP结构后,它在物理地址中查找RSDT或XSDT。RSDT以签名“RSDT”开始,而XSDT以签名“XSDT”开始。RSDT或XSDT包含了一个或多个指向其他系统描述表的物理指针,这些系统描述表提供了有关系统的各种信息。在RSDT/XSDT中总会有一个物理地址指向FADT。

  当OSPM跟随一个物理指针找到另一个系统描述表时,它检查每个系统描述表中已知的签名。基于此签名,OSPM随后可以解释系统描述表中实现的特定数据。

  FADT的目的是定义各种与设备配置和电源管理相关的静态信息。FADT以签名“FACP”开始。FADT描述了平台中ACPI硬件寄存器的实现及配置细节。此外,FADT也包含了指向DSDT数据结构的物理指针。DSDT按照定义块格式进行编码。

  • 定义块包含了有关平台硬件实现细节的信息,通过在ACPI名字空间中排列的数据对象的形式来表示。OSPM加载的所有定义块合并在一起形成一个表示此平台的名字空间。数据对象按照AML格式进行编码。AML解释器会评估编码在AML中的数据对象。数据对象可以是静态或动态的值。AML解释器的动态数据对象评估能力包含对编程表达式、计算和逻辑操作的支持。编程表达式中可以对地址空间进行访问(例如访问I/O或者内存)。通过对动态数据对象进行评估来确定结果。动态名字空间对象被称为“控制方法”。OSPM将整个定义块作为一个逻辑单元进行加载或者卸载——向名字空间中添加相关的对象或者从名字空间中移走相关的对象。**在启动时,OSPM总会加载DSDT并且不会卸载此表。**它包含一个称为差异定义块的定义块。此定义块中包含了实现及配置信息。OSPM可以使用这些信息来执行ACPI硬件寄存器所描述信息之外的电源管理、散热管理或即插即用功能。
  • 定义块可以定义新的系统属性,或者在某些情况下修建在之前的定义上。可以从系统内存地址空间中加载定义块。定义块的一种应用是描述和分发平台版本的改变。
  • 通过定义块,可以将硬件平台实现的改变描述给ACPI兼容OS并且将此改变限制在合理的范围内。定义块使用一些明确定义的对象名就可表示一个简单的平台实现。理论上,在一个定义块中也可以定义一个像PCI配置空间那样的访问方法,但那不是定义块规范的目标。这样的一个空间通常被定义为内建的操作符。

2.ACPI系统描述表

  The Root System Description Pointer (RSDP) structure is located in the system’s memory address space and is setup by the platform firmware. This structure contains the address of the Extended System Description Table (XSDT), which references other description tables that provide data to OSPM, supplying it with knowledge of the base system’s implementation and configuration (see Root System Description Pointer and Table ).
在这里插入图片描述

  • RSDP(Root System Description Pointer)
  • RSDT(Root System Description Table)
  • XSDT(Extended System Description Table)
  • FADT(Fixed ACPI Description Table)
  • FACS(Firmware ACPI Control Structure)
  • DSDT(Differentiated System Description Table)
  • SSDT(Secondary System Description Table)
  • MADT(Multiple APIC Description Table)
  • SBST(Smart Battery Table)
  • ECDT(Embedded Controller Boot Resource Table)
  • SRAT(System Resource Affinity Table)
  • SLIT(System Locality Distance Information Table)

2.1.DSDT 描述

  DSDT (Differentiated System Description Table) is a part of the ACPI specification. It supplies information about supported power events in a given system. ACPI tables are provided in firmware from the manufacturer. A common Linux problem is missing ACPI functionality, such as: fans not running, screens not turning off when the lid is closed, etc. This can stem from DSDTs made with Windows specifically in mind, which can be patched after installation. The goal of this article is to analyze and rebuild a faulty DSDT, so that the kernel can override the default one.

  DSDT(差异化系统描述表)是一个重要的表格,它定义了操作系统在启动过程中如何与硬件交互。DSDT 通常包含系统硬件资源的详细描述、设备节点、方法、事件以及电源管理相关的信息。编译完成后的 DSDT 被加载到系统内存中,并由操作系统的 ACPI 驱动进行解析。

  DSDT 是 ACPI 表格之一,ACPI 表格通常存储在系统的内存中,具体存放位置通常在以下地址:

  • 0x000E0000 到 0x000FFFFF:这是传统的内存区域,许多 BIOS 或 UEFI 固件将 ACPI 表格加载到该区域,尤其是 DSDT 和其他 ACPI 表格(如 SSDT, FADT, SRAT 等)。
  • 系统固件(BIOS 或 UEFI):ACPI 表格通常会嵌入到系统的固件中,并且在启动时被加载到内存中。
    具体来说,DSDT 表格在系统启动时由固件(如 BIOS 或 UEFI)读取并加载到内存中,然后操作系统会在其启动过程中访问这些表格。

2.1.1.OS 如何解析 DSDT 表格

  OS在启动时会通过一系列的步骤来解析 DSDT 表格。这个过程包括以下几个主要步骤:

  • 加载 ACPI 表格
    操作系统通常会在系统启动时查找 ACPI 表格。在 UEFI 系统中,操作系统会通过 UEFI 固件接口来查找并加载 ACPI 表格。常见的 ACPI 表格位置包括:

    • SDT (System Description Table) 中定义的表格地址。
    • RSDP (Root System Description Pointer),它位于物理内存的一个固定位置。RSDP 是一个指向 ACPI 表格的指针,操作系统通过该指针找到其他 ACPI 表格的位置,包括 DSDT。
  • 定位 DSDT 表格
    通过 RSDP,操作系统会查找包含 DSDT 的 RSDT 或 XSDT 表格。RSDT 和 XSDT 都包含指向所有 ACPI 表格的指针,包括 DSDT。

    • RSDT(Root System Description Table)是 ACPI 1.0 中使用的表格,存储着指向所有 ACPI 表格的 32 位指针。
    • XSDT(Extended System Description Table)是 ACPI 2.0 和更高版本中的表格,存储着指向所有 ACPI 表格的 64 位指针。
      在 RSDT 或 XSDT 中找到 DSDT 后,操作系统就可以加载并解析它。
  • 解析 DSDT 表格
    一旦操作系统加载了 DSDT,它会解析其中的内容。具体来说,操作系统会读取 ACPI 表中的硬件信息、设备节点、资源描述符、电源管理信息等。以下是操作系统如何使用 DSDT 中的信息:

    • 设备节点和资源管理:DSDT 中定义了硬件资源(如内存、I/O 端口、IRQ 等)以及如何与硬件设备进行交互。操作系统会根据这些描述来初始化和配置硬件设备。
    • 电源管理:DSDT 包含电源管理方法和状态(如 _S0、_S4、_S5 等),操作系统使用这些信息来控制系统的电源状态。例如,当操作系统需要进入睡眠模式时,会根据 DSDT 中定义的电源管理方法执行相关操作。
    • ACPI 方法的执行:DSDT 中可能包含方法(如 _STA,_INI,_PS0,_PS3 等),这些方法用于控制硬件的状态和行为。操作系统会根据需要调用这些方法。例如,当操作系统需要启动一个设备时,它会执行 _INI 方法。
  • 执行 ACPI 方法
    DSDT 中定义的设备方法通常是以 ACPI 机器语言(AML)形式编写的。操作系统的 ACPI 驱动程序会执行这些方法。它们会在不同的硬件事件和状态转换时被触发。例如:

    • 电源管理:通过调用 DSDT 中定义的 _S0、_S4、_S5 等方法,操作系统可以控制系统的电源状态。
    • 设备状态管理:例如,设备的初始化、启动、停止等操作,可以通过调用设备方法来完成。
  • 设备管理和调度
    操作系统利用 DSDT 中描述的硬件资源和设备信息来管理和调度硬件设备。通过 DSDT 操作系统能够获得设备的地址、资源需求和电源管理要求,进而执行以下操作:

    • 配置设备(例如,PCI 设备的配置、内存映射、I/O 地址等)。
    • 管理设备的生命周期(如启动、暂停、关闭等)。
    • 处理硬件中断和事件。
  • ACPI 电源管理
    操作系统会根据 DSDT 中定义的电源状态,控制系统的电源模式。例如,当用户请求系统进入睡眠状态时,操作系统会通过调用 DSDT 中的 _S4 方法,进入休眠状态;当从休眠状态恢复时,操作系统会通过 _S0 方法恢复到正常工作状态。

2.1.2.ACPI Definition Blocks

  为了让OSPM能够控制计算机上的设备的资源和热插拔,ACPI提供了一种描述这些设备的信息和控制方式的结构,称为ACPI Definition Blocks,它们按照一种层级结构组织,这种组织方式成为ACPI Namespace。这个命令空间的开始是ROOT,符号“/”,下面又分配了几个预定义的命令空间:
在这里插入图片描述
在这里插入图片描述

  ACPI Definition Blocks包含在DSDT(Differentiated System Description Table)和很多的二级表(SSDT,Secondary System Description Tables)之中。

refer to

  • https://blog.csdn.net/jxdzlgl2018/article/details/144954888
  • https://blog.csdn.net/qq_44189622/article/details/142205896
  • https://blog.csdn.net/jiangwei0512/article/details/51614383
  • https://wiki.archlinux.org/title/DSDT
  • https://uefi.org/htmlspecs/ACPI_Spec_6_4_html/05_ACPI_Software_Programming_Model/ACPI_Software_Programming_Model.html

相关文章:

  • Debezium Binlog解析与事件转换流程详解
  • Oracle OCP认证考试考点详解083系列06
  • MCP智能体多Agent协作系统设计(Multi-Agent Cooperation)
  • 冯诺依曼结构与哈佛架构深度解析
  • 今天python练习题
  • TensorFlow深度学习实战——基于循环神经网络的词性标注模型
  • TS 元组
  • 深入探索 Java 区块链技术:从核心原理到企业级实践
  • 8.1 Python+Docker+企业微信集成实战:自动化报告生成与CI/CD部署全攻略
  • jetson orin nano super AI模型部署之路(八)tensorrt C++ api介绍
  • HTML01:HTML基本结构
  • 使用Scrapy构建高效网络爬虫:从入门到数据导出全流程
  • jakarta.mail(javax.mail)包中关于SMTP协议支持的属性参数配置
  • 5.7/Q1,GBD数据库最新文章解读
  • 深度学习的简单介绍
  • 软考 系统架构设计师系列知识点之杂项集萃(53)
  • PCB叠层设计方案
  • 大连理工大学选修课——图形学:第七章 曲线和曲面
  • Go语言接口实现面对对象的三大特征
  • OpenHarmony平台驱动开发(二),CLOCK
  • 中央气象台:未来三天北方地区有大风沙尘,江南等地有强降水
  • 乘客被困停滞车厢超4小时,哈尔滨铁路局客服:列车晚点,表示歉意
  • 李在明回应韩国大法院判决:与自己所想截然不同,将顺从民意
  • 此前显示售罄的火车票“五一”前大量放出来了?12306回应
  • 解放日报:人形机器人新赛道正积蓄澎湃动能
  • 美国务院宣布新一轮与伊朗相关的制裁