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