經過幾個月的等待 , TI 是出了 RTC-only mode 的 code , 不過....
我感覺是派幾個工程師 為我們需求寫的 , 並且確定在 下一版 official release 中不會有 rtc-mode 的 code.
所以表示 , 我們又是白老鼠 ?? 幫 TI 驗證這段 rtc-mode 的 code @@
真是有點無力.......
rtc-mode 主要在RTC block 內有 三個 register (RTC_SCRATCH0 ~ 3 ) 是給使用者存東西的 , 在這 3 個 register 中放入 resume function address & 一些判別的資料 .
修改 u-boot , 在 reset 時候這些暫存器內容如果正確 , 直接回 DDR resume address function. 就可以叫醒 CPU 了 .
當然 suspend 的時候直接控制 PMIC , 將 CPU 電源都切除 (RTC block 除外) , 這樣就會省許多電力.
當 user 要 resume 的時候 , 就將 CPU 所有電源打開, 並且發 reset 給 CPU , CPU 由 ROM Code 開始跑.....
u-boot 檢查到CPU RTC 內的那三個 register 正確 , 就直接回 DDR resume function, 整個 system 就可以 resume 了.
說的簡單 , 實際上 困難重重 ,首先 要對一些暫存器 , 設定 PMIC 的 sleep mode .
光儲存必要暫存器的值 .... 就翻天了.....
那麼多暫存器....那都能了解 , 並且 clock domain , power domain 還有 M3 這樣多的東西, 等我弄懂....往生了..... @@
TI 給的 code 又超亂 (臨時 加上去 , 並且感覺手動測試一下就丟出來了 , 反正不是 official release ) , 我要 patch 半天.... 才搞懂改了那些 .
不過 , 看 patch file , 修改我的 code , 難免有錯誤.....
debug 才是大問題 , 一切靠自己了 @@
沒有留言:
張貼留言