zoukankan      html  css  js  c++  java
  • ACPI Tables

    ACPI SPEC定义了ACPI-compatible OS与BIOS之间的接口,ACPI Tables就是BIOS提供给OS的硬件配置数据,包括系统硬件的电源管理和配置管理。

    BIOS在POST过程中,将RSDP存在0xE0000--0xFFFFF的内存空间中,然后Move RSDT/XSDT, FADT, DSDT到ACPI Recleam Area, Move FACS到ACPI NVS Area,最后填好表的Entry链接和Checksum。

    控制权交给OS之后,由OS来开启ACPI Mode,首先在内存中搜寻ACPI Table,然后写ACPI_Enable到SMI_CMD,SCI_EN也会被HW置起来。

    ACPI Tables根据存储的位置,可以分为:

    1).  RSDP位于F段,用于OSPM搜索ACPI TableRSDP可以定位其他所有ACPI Table

    2).  FACS位于ACPI NVS内存,用于系统进行S3保存的恢复指针,内存为NV Store

    3). 剩下所有ACPI Table都位于ACPI Reclaim内存,进入OS后,内存可以释放

    ACPI Table根据版本又分为1.0B2.03.0,4.0

    2.0以后,支持了64-bit的地址空间,因此几个重要的Table会不大一样,比如:RSDPRSDTFADTFACS。简单的列举一下不同版本的ACPI Table

    1) ACPI 1.0BRSDP1RSDTFADT1FACS1DSDTMADTSSDTHPETMCFG

    2) ACPI 3.0 RSDP3RSDTXSDTFADT3FACS3DSDTMADTHPETMCFGSSDT

    以系统支持ACPI3.0为例子,说明系统中ACPI table之间的关系如图:

     其中绿色代表在内存F段,蓝色是ACPI Reclaim内存,红色是NV store内存

    RSDP:Root System Description Pointer

    OSPM获得RSDP的方式:

    a>. 在Legacy系统下,在Memory Space 0xE0000---0xFFFFF中 Search RSDP的signature: “RSD PTR ”。

    b>. 在UEFI系统下, 在EFI System Table里的EFI Configuration Table中Search RSDP的GUID。

    1.       RSDT(Root System Description Table)              Signature: ‘RSDT’

             为了兼容ACPI1.0而存在,XSDT取代了RSDT的功能。 如果XSDT存在,ACPI-compatible OS 必须使用XSDT。

    2.       XSDT(Extended System Description Table)      Signature: ‘XSDT’

              一组64bit的物理指针,指明其他system description tables的Address。         

    3.       FADT(Fixed ACPI Description Table)            Signature: ‘FACP’

              FADT包含了OS直接管理ACPI Hardware Register Blocks所必须的Fixed Hardware ACPI information,比如PM1a_EVT_BLK, PM1b_EVT_BLK, PM1a_CNT_BLK, PM1b_CNT_BLK, PM2_CNT_BLK, PM_TMR_BLK, GPE0_BLK, and GPE1_BLK这些的base address。

              通过FADT可以找到FACS和DSDT。

    4.       FACS(Firmware ACPI Control Structure)              Signature: ‘FACS’

              The FACS contains the system’s hardware signature at last boot, the firmware waking vector, and the Global Lock。

    hardware signature:由BIOS搜集,当系统从S4唤醒的时候,OSPM通过比较当前的和已保存的hardware signature是否一致来确定系统能否恢复

    firmware waking vector:在休眠之前,OSPM来填写这一项,在POST时,BIOS来确定这一项是否不为空,若不为空则通过jump到这个Address来把控制权交给OSPM。

    5.       DSDT(Differentiated System Description Table)                 Signature: ‘DSDT’

              DSDT包含了Differentiated Definition Block, 它们包含了整个系统的实现和配置信息。OS在系统启动的过程中将DSDT的information插入到ACPI Namespace, 而且从不会被移除。

    6.       SSDT(Secondary System Description Table)                Signature: ‘SSDT’

             SSDT是DSDT的继续。可以有多个SSDT存在。OSPM在Load DSDT 创建出ACPI Namespace之后,会去逐个Load SSDT。注意:附加的tables 只能add data, 而不能override data。

    7.       MADT(Multiple APIC Description Table)              Signature: ‘APIC’

            描述OS支持APIC/SAPIC所必须的information,比如IO-APIC address/Local-APIC address等等。

    8.       SBST(Smart Battery Table)            Signature: ‘SBST’

             如果系统支持符合Smart Battery Specification V1.0 1.1的电池,则SBST就会存在。主要用来指明:

                   Warning Energy Level:Warning时的Energy Level

                   Low Energy Level: OSPM即将进入Sleep状态时的Energy Level

                  Critical Energy Level: OSPM将要执行紧急关机时的Energy Level

    9.       MCFG(PCI-Memory Mapped Configuration table and sub-table)          Signature: 'MCFG'

             PCI Express memory mapped configuration space base address Description Table

  • 相关阅读:
    Oracle安装
    自动化测试开发
    Hyperf 接入阿里云ACM应用配置管理中心
    PHP redis有序集合实现分页
    虚拟现实与大数据
    树形数据结构化
    立即执行函数
    jQuery中的显示与隐藏
    jQuery中的HTML
    Django+Nginx配置+前后端交互
  • 原文地址:https://www.cnblogs.com/junzhkevin/p/2932801.html
Copyright © 2011-2022 走看看