- DRAM refresh
- RTC
- INT
讓裝置回到正常狀態的方式有
- 外部中斷
- RTC TimerUp (也是中斷)
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(),
沒有留言:
張貼留言