前言
STM32MP13x 系列是一款單核 A7 的 MPU,同時在低功耗模式下有出色的低能耗,官方網(wǎng)站已經(jīng)提供了一個關于低功耗的文檔 AN5565(STM32MP13 lines using low-powermodes),但是實際應用中會遇見各種問題,所以針對低功耗應用場景整理這篇文檔,主要介紹概念和如何調(diào)試一些常見問題。
概括
STM32MP13x 有 PMIC 和分立電源的低功耗參考設計方案(硬件參考設計,請參考AN5565 這個文檔的 Figure 1 和 Figure 2)MPU 的 PWR 電源和 RCC 時鐘控制是實現(xiàn)低功耗的兩個關鍵模塊,RCC 保證不同功耗狀態(tài)下的時鐘狀態(tài),PWR 根據(jù)當前 MPU 是進入低功耗或者退出低功耗的狀態(tài)來驅(qū)動和外部電源相關的管腳(PWR_ON, PWR_CPU_ON, PWR_LP),然后通過這幾個管腳來對外部供電電源的控制可以讓 MPU 進入低功耗狀態(tài)或者退出,分立電源低功耗系統(tǒng)框圖。
不同的低功耗
在 Linux 系統(tǒng)下進入低功耗主要命令有兩個:
進入Cstop模式,或者CStandby同時需要保持DDR處于自刷新狀態(tài):
echo 'mem' > /sys/power/state
進入CStandby模式同時關閉DDR:
'shutdown -h 0' (注意:這個指令是針對 Yocto 編譯的 systemd 文件系統(tǒng),如果是使用 busybox,請使用 poweroff 指令)
常見問題和注意事情
CStandby 有兩種模式,一種是 DDR 保持自刷新模式,另外一種 DDR 電源關閉。
在 Optee的設備樹配置中,pwr_regulators 中的待機模式最后一個狀態(tài)設定為STM32_PM_CSTOP_ALLOW_STANDBY_DDR_SR,這個時候 DDR 電源是保持的,最好選用帶自刷新的 DDR(例如:DDR3L 型號的),此時功耗低而且喚醒速度也快。