我所认识的ACPI(2)

ACPI常用的寄存器,及寄存器位的含义

ACPI_ENABLE,

当向SMI_CMD写入这个值的时候,系统将触发事件进入ACPI模式

GPE0_BLK, GPE1_BLK

General Purpose Event 0 and General Purpose Event 1 Block

P_BLK

Processor Controlling features. 处理器功能相关

SCI_EN

如果置1,将使用SCI中断, 如果清零,将使用SMI中断

SLP_EN

用于切换Sleeping State,一般和SLP_TYPE一起使用

SLP_TYPE

当SLP_EN置1的时候,系统将进入到SLP_TYPE所定义的状态

SMI_CMD

SMI Command Port

WAK_STS

当系统由睡眠态被唤醒时,此位被置位

X_GPE0_BLK, X_GPE1_BLK

Extended General Purpose E vent

X_Firmware_Waking_Vector

64 bits firmware waking vector

 

SCI 和 SMI的区别?

SCI是针对ACPI的叫法,SMI是针对APM的叫法。

SCI is a system interrupt used by hardware to notify the OS of ACPI events.

SMI is OS-transparent interrupt generated by interrupt event on legacy systems


常用的ACPI Table名称及含义

ACPI BIOS主要使用ACPI Table来描述主板上的所有资源,OS以此来对系统进行电源管理。

ACPI的主要结构如下所示:

 

常见的ACPI Table如下:

FACS:Firmware ACPI Control Structure

FACS是BIOS用来完成firmware与OS之间交互的这样一种内存结构, 它主要包含了以下三个部分:

  • Hardware Signature: 当系统从S4被唤醒的时候,OS会去读取Hardwaresignature 来验证系统 的硬件是否有被改动过,如果被改动,刚系统不能直接load以前保存的image信息,而是应该执行一次coldreboot。
  • Firmware Waking Vector : 在Waking Vector中主要保存了唤配系统后应该执行的程序的物理地址。
  • Global Lock:主要用于OS和firmware在访问硬件资源的时候同步。

FADT:   Fixed ACPI Description Table: 包含了FACS和DSDT的物理地址

RSDT:  Root System Description Table

MADT:  Multiple ACPI Description Table

DSDT:  Differentiated System Description Table

SSDT:  Secondary System Description Table

PSDT:  Persistent System Description Table

 DSDT首先被OS加载,然后是SSDT。

在此总结一下BIOS初始化的流程和OS初始化的流程(Figure 16-71):

 

 

先说BIOS初始化的流程吧,BIOS由Boot Vector启动后,首先要判断一下Sleep Type,

Sleep Type == S2: 如是要是从S2状态被唤醒的,则只用初始化CPU, Enable内存和配置一下cache就可以直接时Waking Vector了;

Sleep Type != S2: 初始化CPU, 初始化内存控制器,使能内存,配置Cache,使能Cache,初始化Chipset

再判断Sleep Type是否等于S3:

Sleep Type == S3: 直接跳到Waking Vector

Sleep Type != S3:  判断Sleep Type 是否等于S4:

Sleep Type == S4BIOS: 重新装载memory image, 然后转入Waking Vector

Sleep Type != S4BIOS: 说明从S4 Boot, 需要重新post然后时OSBootloader

 

图figure 16-74中显示了OS初始化的流程:

这里可以看到,有两条路径可以进入到OS:

一条是通过OS boot loader, 这条路径是S4进入时走的

另一条是通过Waking Vector,这条路径是由S2, S3状态被唤醒时走的


  • 5
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值