嵌入式驱动学习第二周——Linux休眠唤醒

前言

   这篇博客来聊一聊Linux系统的休眠与唤醒。

   嵌入式驱动学习专栏将详细记录博主学习驱动的详细过程,未来预计四个月将高强度更新本专栏,喜欢的可以关注本博主并订阅本专栏,一起讨论一起学习。现在关注就是老粉啦!

1. 休眠

1.1 休眠的几种状态

   系统是可以休眠的,实际是保存系统上下文然后挂起(suspend)。

   Linux可以通过终端得知内核的休眠方式:

cat /sys/power/state

在这里插入图片描述
   可以看到,在开发板的命令行运行的结果发现我们的linux内核支持freeze、standby、mem三个模式。

   Linux的休眠方式有以下四种:

freeze: 冻结I/O设备,将它们置于低功耗状态,使处理器进入空闲状态,唤醒最快,耗电比其它standby, mem, disk方式高
standby:除了冻结I/O设备外,还会暂停系统,唤醒较快,耗电比其它 mem, disk方式高
mem: 将运行状态数据存到内存,并关闭外设,进入等待模式,唤醒较慢,耗电比disk方式高
disk: 将运行状态数据存到硬盘,然后关机,唤醒最慢

   我们可以通过echo指令让linux系统进入置顶的休眠模式。

echo standby > /sys/power/state

1.2 查看节点所处的状态

   查看节点/sys/kernel/debug/wakeup_sources可以打印出系统的锁并可以但看到其当前所处的状态:

在这里插入图片描述

1.3 休眠唤醒次数查看

  节点/sys/kernel/debug/suspend_stats查看之前的休眠状态,会总结休眠唤醒成功多少次,失败多少次,在哪一步失败

cat /sys/kernel/debug/suspend_stats

在这里插入图片描述

2. 唤醒

   当我们休眠时,如果想唤醒,则需要添加中断唤醒源,使得在休眠时,这些中断是设为开启的,当有中断来,则会退出唤醒,常见的中断源有按键,USB等.

   要实现这个效果,首先需要有一个中断程序,比如按键驱动程序,此处博主直接用之前学imx6ull的按键驱动程序来作为案例展示一下

   首先需要进入lib/modules/4.1.15中,然后注册其中已准备好的按键驱动并加入& 让其在后台运行

depmod
modprobe key.ko
./keyApp /dev/key &

在这里插入图片描述

   然后我们让系统进入休眠状态。

在这里插入图片描述
   此时我们再按下开发板上对应的按键即可退出休眠状态。

在这里插入图片描述

3. 问题

/sys/kernel/debug/下没有任何文件的

参考资料

[1] Linux电源管理-休眠与唤醒

  • 22
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值