【UEFI基础之浅谈Sleep S3】

浅谈Sleep S3

1.电源管理的SX状态和GX状态:

❷SX状态:
● S0 :实际上这就是我们平常的工作状态,在OS下的运行状态。
● S1 :也称作为 POS ( power on suspend ),这时通过 CPU 时钟控制器将 CPU 关闭外,其他,外设都正常工作。
● S2 :这个状态除了 CPU 被关闭之外,总线时钟也是处于关闭的状态,但是其他的外设还是都处于正常的工作状态的。
● S3 :就是 我们熟悉的 STR ( Suspend to Ram ) , 也就是待机 到内存, CPU 和外设电源被关
闭,只有内存处于自刷新状态。就是笔记本合上屏幕的状态 。
● S4 :被称为 STD ( suspend to Disk ), 待机到硬盘, CPU 和外设电源被关闭(硬盘处于工作
状态),将内存的数据保存到硬盘中并可以被唤醒。
● S5 :就是关机的状态。
❷GX状态:
G 状态 Global system state
● G0 运行模式。向硬件提供电源,软件可以运行的状态。
● G1 停止模式。所谓的待机或休眠状态。
● G2 软件为关闭状态,应将消耗若干电力状态。
● G3 系统完全关闭,电源关闭的状态。即不插电源的S5状态。

2.S3 Sleep

当按下win+x+u+s后系统会调用驱动进行息屏,并且会调用asl code中的PTS函数,将出发SMI中断调用C code代码中的S3CallBack函数进行对PCH寄存器的操作:
在这里插入图片描述
在这里插入图片描述

C code代码中将SLP_TYPx填入PM1_CNT & Set SLP_EN,当SLP_EN置位,进入S3
在这里插入图片描述

3.S3 Resume:

UEFI正常的Reboot流程与S3 Resume流程如下:
在这里插入图片描述
正常Reboot流程到DXE阶段之前(DxeLoadCore)会去check BootMode,如果BootMode!=BOOT_ON_S3_RESUME,BIOS就会走正常的Reboot流程:
BIOS会从PEI阶段过渡到DXE阶段,并且会实现是在 DXE 阶段会将外设的初始
化以 Boot Script Table 的形式存储在 UEFI 的 NVS 内存中。
在这里插入图片描述
在这里插入图片描述
如果检测到BootMode==BOOT_ON_S3_RESUME,BIOS就只会经历SEC&PEI阶段,在DxeLoadCore的时候就会触发一个PPI(S3Resume)。
在这里插入图片描述
这个时候就会将之前保存在NVS中的数据恢复,把控制权转交给OS,以达到S3Resume唤醒。
(BIOS通过FACS Table表找到waking vector address,将控制权转交给OS)
在这里插入图片描述

4.S3 总结:

S3进行挂起后,OSPM通知操作系统,系统将处于待机状态,然后将系统当前的状态保留。将当前的所有进程的状态保留到内存,还有将外设寄存器的值保存到内存中,然后进程睡眠,最后将 Cpu 的各个核也都睡眠,只留下一个核工作,然后将外设断电(除内存外,将内存配置成自刷新模式),最后将 CPU 也断电,这样就处于了待机状态。
当S3唤醒时重新走Reboot流程,走完Sec&PEI后,在DXEIPLCore时检测到是S3唤醒,将之前保存的状态恢复,并通过FACStable找到waking vector address,将控制权转交给OS。

^ o ^ 我是农夫三拳,喜欢的话请大家点个赞,有错误的地方也请大家多多指出,感谢大家!

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值