Linux内核睡眠唤醒调试

Linux内核睡眠唤醒调试,第1张

本文基于 RockPI 4A 单板 Debian 系统 Linux4.4 内核介绍下睡眠唤醒( suspend/resume )的一些调试方法。

1、关闭串口睡眠

在Linux内核睡眠过程中,会先调用 suspend_console() 函数使串口进入睡眠状态,这样会导致后续设备驱动的睡眠过程不可见。可以在boot启动参数中增加 no_console_suspend 参数,显示设备驱动睡眠日志。

2、修改串口日志等级

修改串口日志打印等级,显示更多调试信息。

3、打开设备睡眠唤醒时间

设置 pm_print_times 参数,可以显示设备驱动睡眠唤醒时间,方便调试时查看哪个函数处理占用时间过长。

在调试Linux内核睡眠唤醒功能时,可以使用 RTC 做唤醒源,在系统睡眠5秒后,自动唤醒系统。

在 arch/arm64/configs/rockchip_linux_defconfig 文件中配置宏 CONFIG_PM_TEST_SUSPEND 。

唤醒日志如下:

在Linux下,当机器处于睡眠或待机状态时,想通过网络进行唤醒(WOL,wake on lan)时,可以通过如下相关命令来实现:

在A机(嵌入式设备)上,让其睡眠,可以使用如下命令:

ethtool -s eth0 wol g

echo standby>/sys/power/state 或echo mem>/sys/power/state

对于echo到state里面的内容,可以cat下state,就知道可以设置什么值了,而eth0可以根据实际需要通过哪个网口来唤醒设置。

在B机上(嵌入式设备或PC),唤醒A时需先知道A的MAC地址,才可以通过局域网进行唤醒,唤醒时使用如下命令:

ether-wake -i eth0 XX:XX:XX:XX:XX:XX

对于eth0可以根据实际设置,必须是跟A机连接到同一网段的网卡接口,而XX:XX:XX:XX:XX:XX则是A机的MAC地址。

对于上面用到的所有命令,要根据实际看有没有,没有则需要安装或交叉编译移植下,还有要注意电源管理部分内容,看能不能提供相关 *** 作。

关于WOL,可以参考如下网址了解:

http://hi.baidu.com/jzinfo/blog/item/158203e978d58a3fb90e2d03.html

关于睡眠、待机等概念,可以参考如下网址了解:

http://hi.baidu.com/buypro/blog/item/4e6d706737c8ef29aa184c1a.html

http://www.cublog.cn/u3/90973/showart_2281851.html#sec-5.1


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/8916180.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-22
下一篇2023-04-22

发表评论

登录后才能评论

评论列表(0条)

    保存