系統要進入sleep狀態,要設定 control register的旗標。
系統要離開sleep狀態有兩種方法 :
- 由EINT pin腳輸入一個trigger信號。
- 藉由 RTC的timeup trigger。
將IO pin設為floating,關閉USB。disable all interrupt。enable DATABUS pullup resister,enable SDRAM self-reflash function..chip提供一組register,在進入sleep後,資料不會消失。所以可以藉由這個register來存放wakeup後需要的資料。
Wakeup
Chip wakeup的instruction flow跟hardware reset是一樣的,所以要由programmer自己判斷是由sleep中wakeup或是 hardware reset,一般就是藉由那個能keep data的register來完成。
以上是hardware相關的sleep/wakeup動作。
如果是software部份,就有很多事要作,為了要能恢復到sleep前的狀態,在sleep前,要將stack frame save在 SDRAM裡。Wakeup時再restore回來。還要注意一些週邊裝置,無法在wakeup後繼續的動作,在進入sleep前要把他關閉。若是可以繼續的週邊,在sleep前要把相關的register存在SDRAM李,並且在wakeup時回存。
沒有留言:
張貼留言