系統(tǒng)休眠喚醒技術是電源管理中的關鍵技術。它允許系統(tǒng)在閑置時將功耗降至最低,將外部設備、芯片內(nèi)部IP和時鐘置于低功耗狀態(tài)或完全關閉電源狀態(tài),以極大地延長續(xù)航時間。此外,在用戶需要時,系統(tǒng)也能夠迅速恢復電源、時鐘、芯片內(nèi)部IP以及外部設備的工作狀態(tài),確保用戶的使用體驗不受干擾。
飛凌嵌入式OK113i-S開發(fā)板支持兩種休眠方式:freeze和mem。這兩種方式可以通過/sys/power/state文件節(jié)點進行操作,用戶可以通過在該文件節(jié)點寫入freeze或mem來觸發(fā)相應的休眠狀態(tài)。
在進行休眠之前,系統(tǒng)會配置喚醒源。一旦系統(tǒng)進入休眠狀態(tài),可以通過這些喚醒源(如按鍵、RTC等)在需要時喚醒系統(tǒng)。這種設計允許用戶根據(jù)需要選擇何時以及通過何種方式快速喚醒系統(tǒng),實現(xiàn)了功耗最小化和快速恢復的平衡。這一機制使得系統(tǒng)在休眠狀態(tài)下能夠極大地減少功耗,同時保留了用戶在喚醒后迅速使用系統(tǒng)的便利性。
本篇內(nèi)容小編會為大家介紹如何讓飛凌嵌入式OK113i-S開發(fā)板進入休眠模式,以及如何通過RTC時鐘實現(xiàn)定時喚醒。
?1?關于兩種休眠模式
freeze
凍結I/O設備,將它們置于低功耗狀態(tài),使處理器進入空閑狀態(tài),喚醒最快,耗電比其它方式高。實測OK113i-S開發(fā)板在只接串口線的情況下5V供電,電流約為0.112A。
mem
掛起到內(nèi)存,計算機將目前的運行狀態(tài)等數(shù)據(jù)存放在內(nèi)存,關閉硬盤、外設等設備,進入等待狀態(tài)。此時內(nèi)存仍然需要電力維持其數(shù)據(jù),但整機耗電很少?;謴蜁r計算機從內(nèi)存讀出數(shù)據(jù),回到掛起前的狀態(tài),恢復速度較快。實測OK113i-S開發(fā)板在只接串口線情況下5V供電,電流約為0.076A。
1、cat
/sys/power/state可以看到OK113i-S開發(fā)板支持的模式有哪些:
2、echo
freeze > /sys/power/state 進入freeze模式:
3、echo
mem > /sys/power/state 進入mem模式:
?2?通過RTC定時喚醒
注意:此處需要使用內(nèi)部RTC,外部RTC不支持喚醒功能,后面我們還會提及。
進入開發(fā)板的內(nèi)核配置:
root@ubuntu: /home/forlinx/work/linux/OK113i-linux-sdk# ./build.sh menuconfig
根據(jù)下圖框選進行功能選擇:
配置完成后保存,然后修改設備樹文件,打開內(nèi)部RTC功能。
保存后進行編譯:
編譯成功后打包成鏡像,燒寫完成后,我們在串口終端進行測試。
進入串口終端進行測試:
echo “+15”> /sys/class/rtc/rtc0/wakealarm
此處為15秒定時,可自由設置時間,命令執(zhí)行后就會生效,RTC會單獨計時,如果是15秒后才進入休眠,不會觸發(fā)喚醒。(注意此處需要使用內(nèi)部RTC,外部RTC不支持喚醒功能)
echo?mem?> /sys/power/state
(這里兩條指令輸入時要緊湊,兩條指令間,間隔太長就無效了)
(這里需要注意,我們在未打開內(nèi)部RTC時,我們的外部RTC默認節(jié)點是rtc0,修改后外部rtc設備節(jié)點會變更成rtc1。)
到這里,我們就完成了在飛凌嵌入式OK113i-S開發(fā)板上實現(xiàn)休眠以及通過RTC定時喚醒的全部操作了,當然,不同的主控平臺板卡的具體操作會有差異,但是整體思路是一樣的,具體可以根據(jù)相對應的平臺查看相關資料來確定具體步驟,希望本文提供的方法能夠對屏幕前的工程師朋友們的項目開發(fā)有所幫助。