星期四, 9月 07, 2006

SLEEP Mode and Get IN , OUT

Chip在sleep mode時,除了RTC,SDRAM self refresh 控制器外,其他裝置(包括core logic)的power都被關閉。

系統要進入sleep狀態,要設定 control register的旗標。
系統要離開sleep狀態有兩種方法 :
  1. 由EINT pin腳輸入一個trigger信號。
  2. 藉由 RTC的timeup trigger。
進入sleep狀態時,chip僅提供"關閉週邊電源"的功能而已,其他的 housekeeping工作都要programmer自己作,諸如:
將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時回存。

沒有留言:

網誌存檔