Page 1 of 2

RV1106低功耗休眠与唤醒如何实现?

Posted: 2025-01-13 5:25
by stjk_tt
RV1106低功耗休眠与唤醒如何实现?有没有相关资料和帮助文档?

Re: RV1106低功耗休眠与唤醒如何实现?

Posted: 2025-01-13 13:06
by Crocodile
您好,休眠唤醒的实现方式如下
1 板级支持文件中的 RK_KERNEL_DEFCONFIG_FRAGMENT 属性添加 rv1106-pm.config
2 开启休眠唤醒打印(此步骤可省略)

Code: Select all

echo 1 > /sys/power/pm_print_times
3 进入休眠

Code: Select all

echo mem > /sys/power/state
4 添加唤醒源
设备树添加

Code: Select all

/ {
	gpio-keys {
		compatible = "gpio-keys";
		autorepeat;
		pinctrl-names = "default";
		pinctrl-0 = <&pwr_key>;
		power-key {
			gpios = <&gpioX RK_PXX GPIO_ACTIVE_HIGH>;
			linux,code = <KEY_POWER>;
			label ="GPIO Key Power";
			debounce-interval = <100>;
			wakeup-source;
		};
	};
};

&pinctrl {
	buttons {
		pwr_key:pwr-key{
			rockchip,pins = <X RK_PXX RK_FUNC_GPIO &pcfg_pull_none>;
		};
	};
};
5 触发唤醒源
短接触发引脚和GND

打印日志如下

Code: Select all

[root@luckfox root]# echo mem > /sys/power/state [   18.433027] PM: suspend entry (s2idle)

[   18.581153] Filesystems sync: 0.148 seconds
[   18.581373] Freezing user space processes ... (elapsed 0.001 seconds) done.
[   18.582564] OOM killer disabled.
[   18.582570] Freezing remaining freezable tasks ... (elapsed 0.001 seconds) done.
[   18.583697] printk: Suspending console(s) (use no_console_suspend to debug)
[   18.658434] android_work: sent uevent USB_STATE=DISCONNECTED
[   26.368044] PM: pm_system_irq_wakeup: 66 triggered gpio_keys
[   26.369426] rk_gmac-dwmac ffa80000.ethernet: init for RMII
[root@luckfox root]# [   26.441535] rk_gmac-dwmac ffa80000.ethernet eth0: configuring for phy/rmii link mode
[   26.441722] dwmac4: Master AXI performs any burst length
[   26.441741] rk_gmac-dwmac ffa80000.ethernet eth0: No Safety Features support found
[   26.441755] rk_gmac-dwmac ffa80000.ethernet eth0: PTP not supported by HW
[   26.513537] rockchip-vop ff990000.vop: [drm:vop_crtc_atomic_enable] Update mode to 720x720p49, type: 17
[   26.616978] dwc3 ffb00000.usb: device reset
[   26.690168] android_work: sent uevent USB_STATE=CONNECTED
[   26.699666] android_work: sent uevent USB_STATE=CONFIGURED
[   26.730790] OOM killer enabled.
[   26.730792] Restarting tasks ... done.
[   26.740708] Resume caused by IRQ 66, gpio_keys
[   26.740713] PM: suspend exit
注意:该方法目前还存在问题休眠时会概率性出现EMMC错误只能通过重启唤醒,请谨慎使用

Re: RV1106低功耗休眠与唤醒如何实现?

Posted: 2025-02-16 9:44
by fengyulingyu
你好,请问一下(luckfox-pico-ultra-w)这个开发板,第一步应该在那个文件中做出对应的添加,第四步:是不是在下面的在下面的文件中添加对应的代码
~/luckfox-pico/sysdrv/source/kernel/arch/arm/boot/dts/rv1106g-luckfox-pico-ultra-w.dts
还有就是这种唤醒方式有办法设置成定时唤醒的方式吗,每隔多长时间从休眠中唤醒一下那种,我现在需要两种唤醒方式一个是使用引脚中断进行唤醒,第二种就是系统每隔多长时间自动唤醒一次。

Re: RV1106低功耗休眠与唤醒如何实现?

Posted: 2025-02-18 3:58
by Crocodile
您好,使用luckfox-pico-ultra-w 对应的板级支持文件地址 为 <SDK>/project/cfg/BoardConfig_IPC/BoardConfig-EMMC-Buildroot-RV1106_Luckfox_Pico_Ultra_W-IPC.mk
设备树文件对应sysdrv/source/kernel/arch/arm/boot/dts/rv1106g-luckfox-pico-ultra-w.dts,其中gpio-key是新节点需要直接添加到根节点中
wifi 驱动也需要修改,需要在 <SDK>/sysdrv/drv_ko/wifi/aic8800dc/aic8800_bsp/Makefile 和 <SDK>/sysdrv/drv_ko/wifi/aic8800dc/aic8800_bsp/Makefile 添加

Code: Select all

ccflags-y += -DSDIO_REMOVEABLE
目前RV1106 AOV的实现方案是有使用到定时器唤醒的,我们没有实际测试过,有需要可以参考文档
Downloaded 254 times

Re: RV1106低功耗休眠与唤醒如何实现?

Posted: 2025-02-18 8:16
by fengyulingyu
我尝试了上面的步骤,现在可以成功的将当前的设备进入休眠模式,然后尝试对设备树进行修改,尝试在设备树中添加下面的代码作为休眠唤醒的触发源,想要使用gpio1—B0引脚作为唤醒触发源,但是使用下面的代码,经过测试之后并没有办法成功的编译
屏幕截图 2025-02-18 161220.png

Code: Select all

{
	gpio-keys {
		compatible = "gpio-keys";
		autorepeat;
		pinctrl-names = "default";
		pinctrl-0 = <&pwr_key>;
		power-key {
			gpios = <&gpio1 RK_PB0 GPIO_ACTIVE_HIGH>;
			linux,code = <KEY_POWER>;
			label ="GPIO Key Power";
			debounce-interval = <100>;
			wakeup-source;
		};
	};
};

&pinctrl {
	buttons {
		pwr_key:pwr-key{
			rockchip,pins = <1 RK_PB0 RK_FUNC_GPIO &pcfg_pull_none>;
		};
	};
};
下面是编译时出现的报错情况
屏幕截图 2025-02-18 161425.png

Re: RV1106低功耗休眠与唤醒如何实现?

Posted: 2025-02-18 8:19
by Crocodile
您好,建议另开新主题贴上修改后完整的dts 文件,目前从日志来看应该是dts配置出错了

Re: RV1106低功耗休眠与唤醒如何实现?

Posted: 2025-02-18 8:43
by fengyulingyu
已经发布了,其实就是在dts文件中添加了上面的休眠唤醒引脚的设置代码,就导致报错出现的情况。
还有就是上面的帖子中提到了有时候会在休眠的时候会出现emmc的报错情况,导致休眠出现问题,这时候除了重新上电才能唤醒开发板,还有其他办法去唤醒开发板吗。

Re: RV1106低功耗休眠与唤醒如何实现?

Posted: 2025-02-19 1:39
by Crocodile
emmc报错属于内核奔溃只能重新上电或按reset按键重启开发板

Re: RV1106低功耗休眠与唤醒如何实现?

Posted: 2025-02-19 5:54
by fengyulingyu
Crocodile wrote: 2025-02-19 1:39 emmc报错属于内核奔溃只能重新上电或按reset按键重启开发板
请问一下,当前的休眠不是主要是cpu的问题吗,为什么会出现emmc的报错,emmc不是存储设备吗?

Re: RV1106低功耗休眠与唤醒如何实现?

Posted: 2025-02-19 7:21
by Crocodile
我没有深入研究过RV1106的休眠唤醒方案,只是在实际测试中小概率遇到,猜测进入休眠时设置的PMUIO外都掉电了,唤醒时EMMC的引脚重新上电初始化进入系统,有可能是上电时序异常导致没有成功初始化eMMC,而内核和文件系统都存放在eMMC中导致的奔溃,有需要可以自行测试了解