嵌入式驱动学习第二周——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
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
学习Linux嵌入式驱动开发可以按照以下步骤进行: 1. 掌握Linux基础知识:了解Linux操作系统的基本原理、命令行操作和文件系统等知识。可以通过阅读相关书籍或在线课程来学习。 2. 学习C编程语言:Linux驱动开发主要使用C语言,因此需要掌握C语言的基本语法、指针操作、内存管理等知识。可以通过阅读相关教程或参加编程培训来学习。 3. 了解Linux内核结构和设备模型:深入了解Linux内核的架构和设备模型,包括设备树(Device Tree)、驱动模型(Driver Model)、字符设备、块设备等。可以通过阅读Linux内核源码、内核文档以及相关书籍来学习。 4. 阅读和分析现有驱动代码:选择一些开源的嵌入式驱动代码,如GPIO驱动、I2C驱动等,仔细阅读和分析其代码结构、注册和初始化过程、设备操作函数等,理解其工作原理和设计思路。 5. 实践项目:尝试自己实现一个简单的嵌入式驱动,可以选择一些常用的外设,如LED、按键、传感器等,并编写相应的设备驱动代码。 6. 调试和测试:学习使用调试工具,如GDB、 printk等,掌握嵌入式驱动的调试和测试方法,能够定位和解决常见的驱动问题。 7. 深入研究特定领域的驱动开发:根据自己的兴趣和需求,深入研究特定领域的驱动开发,如网络设备驱动、视频设备驱动等。 此外,可以参考一些优秀的书籍和在线资源,如《Linux设备驱动开发详解》、Linux内核文档、Linux内核源码等,以加深对Linux嵌入式驱动开发的理解和应用。同时,参与开源社区、论坛或者相关的培训课程也是提高技能和获取实践经验的好途径。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值