星期五, 5月 05, 2006

About Stanby Mode :

消費產品,常常需要進入Standby Mode,這種Mode,幾乎所有東西都關掉了,只剩下IR 還正常動作,現在mcu都大量使用DRAM,refresh DRAM會耗記憶體,所以也要關掉。---- 那這樣要怎麼作呢? 像linux這樣,將kernel 解開到DRAM中執行的....一旦將DRAM關掉,自己也完蛋,起不來了(更不用說那個"polling IR button"的小程式)。

這顆chip提供的作法是:

寫一個像bootloader一樣的小code,內容是:
  • 關掉所有週邊(IO,DRAM,uart.. timer...)。
  • 降低工作時脈。
  • poll button and IR (就這兩個device沒關)。
  • 一旦有動作,作reset 的動作。
把這個code build好,
再寫一個module,當user ap 用IOCTL 控制,進入standby時,他就把剛剛那個小code 的image copy 到mcu 內部SRAM。(先關閉所有中斷)。然後將控制權交給那個小code。

這個module 就是"standby - module"。

要build這個module也蠻有趣的,他寫了一個tool 把bin內容轉成 .h 檔 (也就是矩陣宣告)。
讓module code直接就可以將矩陣資料"填入" SRAM中..

為甚麼要這樣作? 不是用 loader script 就可以了?
是不是因為build module 沒有用到loader ? (只有用到linker)。

沒有留言:

張貼留言