RK3588作為瑞芯微當(dāng)前旗艦級(jí)通用SoC,其系統(tǒng)待機(jī)功能完全由Trust固件(BL31)全權(quán)處理,配置邏輯與其他平臺(tái)(包括瑞芯微其他芯片)無(wú)任何關(guān)聯(lián)性。本文,從基礎(chǔ)原理、核心配置、日志解讀到5大典型場(chǎng)景落地,全面拆解RK3588待機(jī)開(kāi)發(fā)的所有要點(diǎn),幫你快速實(shí)現(xiàn)最優(yōu)低功耗設(shè)計(jì)。
一、RK3588系統(tǒng)待機(jī)基礎(chǔ)認(rèn)知
1.1核心實(shí)現(xiàn)原理
RK3588所有帶Trust的平臺(tái),系統(tǒng)待機(jī)的核心邏輯都運(yùn)行在BL31固件中,內(nèi)核僅通過(guò)DTS節(jié)點(diǎn)將配置參數(shù)傳遞給Trust。標(biāo)準(zhǔn)待機(jī)流程會(huì)執(zhí)行以下操作:
?關(guān)閉非必要電源域、模塊IP、時(shí)鐘和PLL
?DDR進(jìn)入自刷新模式
?系統(tǒng)總線切換到32K低速時(shí)鐘
?按需斷電vdd_arm、vdd_log等核心電源域
?配置并使能喚醒源
1.2關(guān)鍵驅(qū)動(dòng)與頭文件
所有配置宏定義和驅(qū)動(dòng)代碼均已集成到內(nèi)核,無(wú)需額外移植:
# 核心驅(qū)動(dòng)./drivers/soc/rockchip/rockchip_pm_config.c./drivers/firmware/rockchip_sip.c# 所有配置宏定義頭文件./include/dt-bindings/suspend/rockchip-rk3588.h
1.3基礎(chǔ)DTS節(jié)點(diǎn)結(jié)構(gòu)
所有待機(jī)配置都集中在rockchip-suspend節(jié)點(diǎn)下,這是唯一與Trust交互的配置入口:
rockchip_suspend: rockchip-suspend {compatible ="rockchip,pm-rk3588";status ="okay";rockchip,sleep-debug-en = <1>;//休眠日志開(kāi)關(guān)rockchip,sleep-mode-config = <...>;//常規(guī)休眠模式配置rockchip,wakeup-config = <...>;//喚醒源配置// 其他可選配置rockchip,sleep-io-ret-config = <...>;//IO電平保持rockchip,virtual-poweroff = <1>;//假關(guān)機(jī)模式};
二、核心DTS配置詳解(重點(diǎn))
2.1常規(guī)休眠模式配置(功耗分級(jí))
通過(guò)rockchip,sleep-mode-config配置不同的斷電等級(jí),功耗從高到低排序,所有斷電模式均需硬件電路支持對(duì)應(yīng)電源域的獨(dú)立控制:
|
配置宏 |
斷電范圍 |
適用場(chǎng)景 |
注意事項(xiàng) |
|
RKPM_SLP_ARMOFF |
僅vdd_arm斷電 |
對(duì)功耗要求不高,需保留大部分外設(shè) |
基礎(chǔ)休眠模式 |
|
RKPM_SLP_ARMOFF_DDRPD |
vdd_arm + DDR控制器斷電 |
平衡功耗與喚醒速度 |
DDR仍處于自刷新?tīng)顟B(tài) |
|
RKPM_SLP_ARMOFF_LOGOFF |
vdd_arm + vdd_log斷電 |
最低功耗模式 |
僅PMU和GPIO0域工作 |
|
RKPM_SLP_ARMOFF_PMUOFF |
vdd_arm + vdd_log + PMU1斷電 |
極致低功耗 |
極少使用,喚醒源受限 |
時(shí)鐘配套配置:
?RKPM_SLP_PMU_PMUALIVE_32K:休眠時(shí)使用32K時(shí)鐘作為系統(tǒng)時(shí)鐘(必選)
?RKPM_SLP_PMU_DIS_OSC:關(guān)閉24M晶振(最低功耗必選)
?RKPM_SLP_32K_EXT:使用外部32K時(shí)鐘(默認(rèn)內(nèi)部32K)
關(guān)鍵注意:USB、SDIO等外設(shè)喚醒時(shí),不能配置RKPM_SLP_ARMOFF_LOGOFF和RKPM_SLP_PMU_DIS_OSC,否則外設(shè)電源和時(shí)鐘會(huì)被關(guān)閉,無(wú)法喚醒。
2.2喚醒源配置(優(yōu)先級(jí)與限制)
通過(guò)rockchip,wakeup-config配置喚醒源,不同喚醒源的可用性和功耗差異極大:
首選喚醒源:RKPM_GPIO_WKUP_EN
?僅支持GPIO0組引腳,中斷信號(hào)直接送往PMU狀態(tài)機(jī),不經(jīng)過(guò)GIC
?支持vdd_log斷電模式,功耗最低
?硬件設(shè)計(jì)建議:所有喚醒源優(yōu)先布局在GPIO0組
次選喚醒源:RKPM_CPU0_WKUP_EN
?支持所有通過(guò)enable_irq_wake()注冊(cè)到GIC的可喚醒中斷
?適用喚醒源數(shù)量最多,但管理權(quán)分散到各個(gè)內(nèi)核模塊,容易出現(xiàn)意外喚醒
?必須保留vdd_log和24M晶振供電
專用喚醒源
|
配置宏 |
功能 |
限制條件 |
|
RKPM_UART0_WKUP_EN |
UART0串口喚醒 |
僅UART0支持,需保留24M晶振 |
|
RKPM_USB_WKUP_EN |
USB設(shè)備喚醒 |
需保留vdd_log和24M晶振 |
|
RKPM_VAD_WKUP_EN |
語(yǔ)音喚醒 |
需保留VAD模塊供電 |
|
RKPM_SDMMC/SDIO_WKUP_EN |
SD卡/SDIO設(shè)備喚醒 |
需保留對(duì)應(yīng)模塊供電 |
調(diào)試專用喚醒源
?RKPM_TIME_OUT_WKUP_EN:PMU內(nèi)部1秒自動(dòng)喚醒,僅用于基礎(chǔ)休眠功能測(cè)試
2.3 Debug調(diào)試配置
rockchip,sleep-mode-config = <RKPM_SLP_TIME_OUT_WKUP// 1秒自動(dòng)喚醒,測(cè)試休眠流程RKPM_SLP_PMU_DBG// PMU狀態(tài)機(jī)波形輸出(GPIO0_A5引腳)>;rockchip,sleep-debug-en = <1>;// 打開(kāi)Trust休眠日志
2.4 IO電平保持配置
在vdd_log斷電的場(chǎng)景下,若需維持某個(gè)IO的電平狀態(tài),可配置對(duì)應(yīng)IO域的保持功能:
rockchip,sleep-io-ret-config = <RKPM_VCCIO1_RET_EN// 保持VCCIO1域所有IO電平RKPM_EMMCIO_RET_EN// 保持EMMC IO域電平>;
注意:必須確保對(duì)應(yīng)IO域的電源在休眠時(shí)不斷電,否則電平保持無(wú)效。
2.5假關(guān)機(jī)模式配置
部分產(chǎn)品關(guān)機(jī)時(shí)無(wú)法物理斷電,可使用休眠模擬關(guān)機(jī),實(shí)現(xiàn)快速開(kāi)機(jī)和低功耗:
rockchip,virtual-poweroff = <1>;// 開(kāi)啟假關(guān)機(jī)模式rockchip,virtual-poweroff-irqs = <123456>;// 配置關(guān)機(jī)喚醒中斷號(hào)
開(kāi)啟后,系統(tǒng)執(zhí)行關(guān)機(jī)流程時(shí)會(huì)自動(dòng)進(jìn)入休眠,收到指定中斷后恢復(fù)開(kāi)機(jī)。
三、休眠喚醒日志解讀
打開(kāi)rockchip,sleep-debug-en = <1>后,Trust會(huì)輸出詳細(xì)的休眠喚醒日志,這是調(diào)試的核心依據(jù)。
3.1休眠日志關(guān)鍵信息
# BL31固件版本INFO: BL31: v2.3():v2.3-264-g378cb8595:derrick.huang# 休眠模式配置與次數(shù)INFO: enter: cfg=0x5000604, sleeptimes:1INFO: armoff_ddrpdINFO: pmu_pmualive_32kINFO: pmu_dis_osc# GPIO中斷配置狀態(tài)INFO: GPIO0_INTEN:0xffff0xffff0xff7f0xefff0x00xc81e142d# 關(guān)鍵寄存器狀態(tài)INFO: PMU1_PWR_CON(0x1) PMU1_CRU_PWR_CON(0x23)
3.2喚醒日志關(guān)鍵信息
# 喚醒流程步驟012376543edcba2# 喚醒源識(shí)別INFO: gpio0_a7INFO: wake up status: 0x100INFO: GPIO0 interrupt wakeupINFO: GPIO0: 0x80
通過(guò)wake up status和具體的喚醒源信息,可快速定位意外喚醒問(wèn)題。
四、5大典型場(chǎng)景配置案例
4.1最低功耗:Logic斷電模式(GPIO0喚醒)
適用于僅需按鍵、觸摸等GPIO0喚醒的產(chǎn)品,待機(jī)功耗最低:
rockchip_suspend: rockchip-suspend {compatible ="rockchip,pm-rk3588";status ="okay";rockchip,sleep-debug-en = <1>;rockchip,sleep-mode-config = <RKPM_SLP_ARMOFF_LOGOFFRKPM_SLP_PMU_PMUALIVE_32KRKPM_SLP_PMU_DIS_OSCRKPM_SLP_32K_EXT>;rockchip,wakeup-config =; };
4.2串口喚醒:UART0喚醒配置
適用于需要串口調(diào)試或串口外設(shè)喚醒的產(chǎn)品,UART0是唯一支持logic斷電的串口:
rockchip_suspend: rockchip-suspend {compatible ="rockchip,pm-rk3588";status ="okay";rockchip,sleep-debug-en = <1>;rockchip,sleep-mode-config =; rockchip,wakeup-config = <RKPM_GPIO_WKUP_ENRKPM_UART0_WKUP_EN>;};
注意:UART0喚醒需要24M晶振保持工作,不能配置RKPM_SLP_PMU_DIS_OSC。
4.3紅外喚醒:PWM喚醒配置
適用于帶紅外遙控的產(chǎn)品:
rockchip_suspend: rockchip-suspend {compatible ="rockchip,pm-rk3588";status ="okay";rockchip,sleep-debug-en = <1>;rockchip,sleep-mode-config =; rockchip,wakeup-config = <RKPM_CPU0_WKUP_ENRKPM_GPIO_WKUP_EN>;};
注意:PWM喚醒不能關(guān)閉vdd_log和24M晶振。
4.4智能喚醒:MCU喚醒配置
適用于需要PMU MCU進(jìn)行中斷過(guò)濾、按鍵消抖等預(yù)處理的產(chǎn)品:
rockchip_suspend: rockchip-suspend {compatible ="rockchip,pm-rk3588";status ="okay";rockchip,sleep-debug-en = <1>;rockchip,sleep-mode-config =; rockchip,wakeup-config = <RKPM_GPIO_WKUP_ENRKPM_PMUMCU_CEC_WKUP_EN>;};
4.5通用GPIO喚醒:GPIO1~4喚醒配置
適用于喚醒源無(wú)法布局在GPIO0組的情況:
rockchip_suspend: rockchip-suspend {compatible ="rockchip,pm-rk3588";status ="okay";rockchip,sleep-debug-en = <0>;rockchip,sleep-mode-config =; rockchip,wakeup-config = <RKPM_GPIO_WKUP_ENRKPM_CPU0_WKUP_EN>;};
注意:GPIO1~4喚醒必須配置RKPM_CPU0_WKUP_EN,且不能關(guān)閉vdd_log和24M晶振。
五、避坑指南與常見(jiàn)問(wèn)題
1.硬件設(shè)計(jì)第一原則:所有喚醒源優(yōu)先布局在GPIO0組,這是實(shí)現(xiàn)最低功耗的唯一途徑
2.跨平臺(tái)配置無(wú)效:RK3588的待機(jī)配置與其他瑞芯微芯片(如RK3568、RK3399)完全不兼容,切勿直接復(fù)制
3.意外喚醒排查:優(yōu)先關(guān)閉RKPM_CPU0_WKUP_EN,僅保留RKPM_GPIO_WKUP_EN,逐步添加喚醒源定位問(wèn)題
4.休眠失敗排查:先開(kāi)啟RKPM_SLP_TIME_OUT_WKUP測(cè)試基礎(chǔ)休眠流程,排除電源域硬件問(wèn)題
5.IO保持無(wú)效:檢查對(duì)應(yīng)IO域的電源是否在休眠時(shí)被關(guān)閉,必須確保電源持續(xù)供電
六、總結(jié)
RK3588的系統(tǒng)待機(jī)配置核心是根據(jù)產(chǎn)品的功耗需求和喚醒源需求,選擇最優(yōu)的斷電等級(jí)和喚醒源組合。硬件設(shè)計(jì)時(shí)優(yōu)先將喚醒源放在GPIO0組,可實(shí)現(xiàn)最低功耗的待機(jī)效果;軟件調(diào)試時(shí)先打開(kāi)休眠日志,使用PMU內(nèi)部1秒自動(dòng)喚醒功能驗(yàn)證基礎(chǔ)流程,再逐步添加實(shí)際喚醒源,能大幅提升開(kāi)發(fā)效率。
本文所有配置均基于官方最新指南驗(yàn)證,可直接用于項(xiàng)目開(kāi)發(fā)。如有疑問(wèn),可參考瑞芯微官方文檔或聯(lián)系技術(shù)支持。
附:RK3588系統(tǒng)待機(jī)配置腦圖

-
soc
+關(guān)注
關(guān)注
40文章
4635瀏覽量
230253 -
低功耗
+關(guān)注
關(guān)注
12文章
4051瀏覽量
106860 -
瑞芯微
+關(guān)注
關(guān)注
27文章
861瀏覽量
54675
發(fā)布評(píng)論請(qǐng)先 登錄
RK3588系統(tǒng)待機(jī):從DTS配置到低功耗設(shè)計(jì)全攻略
評(píng)論