suspend/resume

本文介绍了Suspend状态的概念,即在该状态下,除了DRAM刷新、实时钟及中断外,CPU及其外围设备的时钟和电源都会被关闭以降低能耗。文章还详细解释了如何通过外部中断或RTC定时器中断恢复系统,并提及了类似任务切换的过程以及实现Suspend/Resume所需的操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Suspend 状态是将 CPU 中,所有外围和cpu core的clock ,power 都停掉,只留下
•DRAM refresh
•RTC
•INT
三个部份还有动作,这样的目的是要减少电源消耗,同时尽量维持执行状态。
让装置回到正常状态的方式有
•外部中断
•RTC TimerUp (也是中断)
从PowerOff中恢复后,要尽量让系统回到当初power Off的状态。

Suspend/Recover的动作有一点像Task Switch,就是Stack Frame的操作:在断电前将StackFrame保存在固定的地方,Recover时到那个地方拿回Stack Frame回存,动作跟TaskSwitch一模一样。

CE 的Suspend/Resume 动作 需要driver的配合,所以所有Driver都要implement (and export) PowerUp/PowerDown function。另外GUI 的部份也要response to WM_XX 这个power state change message。

在PUBLIC/COMMON/OAK/DRIVERS/PM/MDD/pmresume.cpp 的comment中有说明: 
Application (Drvier) 中不可以直接呼叫 PowerOffSystem( )来suspend system,要藉由 SetSystemPowerState ( ) 这个 Win32 funtion 来转换 power status 到 suspend/resume 状态才行。 因为 SetSystemPowerState( ) 在呼叫PowerOffSystem( ) 之前,还会呼叫PM 的function 一一呼叫所有Device 的 PowerOn/PowerDown function,还会post necessary message to GWES server,最后才呼叫PowerOffSystem( )将所有cpu core关闭。
SetSystemPowerState()是一个手套,会去呼叫PlatformSetSystemPowerState(),


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值