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

前言

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

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

目录

  • 前言
  • 1. 休眠
    • 1.1 休眠的几种状态
    • 1.2 查看节点所处的状态
    • 1.3 休眠唤醒次数查看
  • 2. 唤醒
  • 3. 问题
  • 参考资料

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电源管理-休眠与唤醒

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/519575.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Truenas入门级教程

Truenas入门教程 前言:系统相关配置 采用I3 4160,采用了2块500G的硬盘,内存为8G,两个网卡只用了其中一个,系统安装的是core版本 硬件采用DELL3020MT机箱,自带3个SATA网口,后期网口不够&#…

-bash: unzip: 未找到命令的解决方案

遇到 -bash: unzip: 未找到命令 这样的错误信息,表示你的系统中没有安装 unzip 工具。unzip 是一个常用的解压工具,用于解压缩 .zip 文件。你可以通过系统的包管理器安装它。 根据你使用的 Linux 发行版,安装 unzip 的命令会有所不同。下面是…

C# SwinV2 Stable Diffusion 提示词反推 Onnx Demo

目录 介绍 效果 模型信息 项目 代码 下载 C# SwinV2 Stable Diffusion 提示词反推 Onnx Demo 介绍 模型出处github地址:https://github.com/SmilingWolf/SW-CV-ModelZoo 模型下载地址:https://huggingface.co/SmilingWolf/wd-v1-4-swinv2-tagg…

自动化测试之web自动化(Selenium)

🔥 交流讨论:欢迎加入我们一起学习! 🔥 资源分享:耗时200小时精选的「软件测试」资料包 🔥 教程推荐:火遍全网的《软件测试》教程 📢欢迎点赞 👍 收藏 ⭐留言 &#x1…

飞桨AI框架安装和使用示例

飞桨AI框架安装和使用示例 飞桨PaddlePaddle是非常流行的国产AI框架,让我们一起来动手实践吧! 安装 飞桨安装参考页面:https://www.paddlepaddle.org.cn/install/quick?docurl/documentation/docs/zh/install/pip/linux-pip.html 在这个安…

网络工程师笔记10 ( RIP / OSPF协议 )

RIP 学习路由信息的时候需要配认证 RIP规定超过15跳认定网络不可达 链路状态路由协议-OSPF 1. 产生lsa 2. 生成LSDB数据库 3. 进行spf算法,生成最有最短路径 4. 得出路由表

【uni-app小程序开发】实现一个背景色渐变的滑动条slider

最近做的一个用uni-app+vue2开发的微信小程序项目中要实现一个滑动进度控制条,如下图所示: 1. 滑动条需要渐变背景色 2. 滑块的背景色需要与当前位置滑动条的背景色一致(动态改变) 碰到这样的需求,我当然先是看看官方提供的slider组件和uView里的u-slider组件能不能满足…

HarmonyOS云端一体化组件之AGC应用管理

(可选)在AGC控制台创建同包名应用 如创建工程时,发现尚未在AGC控制台创建与工程包名相同的应用,可进行补充创建。 1.点击界面提示内的“AppGallery Connect”,浏览器打开AGC控制台“我的项目”页面。 2.点击选择您希…

sql高级

sql高级 SQL SELECT TOP 子句 SELECT TOP 子句用于规定要返回的记录的数目。 SELECT TOP 子句对于拥有数千条记录的大型表来说,是非常有用的。 **注意:**并非所有的数据库系统都支持 SELECT TOP 语句。 MySQL 支持 LIMIT 语句来选取指定的条数数据, O…

万字长文讲解Golang pprof 的使用

往期好文推荐 ⭐️⭐️⭐️: # golang pprof 监控系列(1) —— go trace 统计原理与使用 # golang pprof监控系列(2) —— memory,block,mutex 使用 # golang pprof 监控系列(3) —— memory,block,mute…

数字孪生10个技术栈:数据采集的八种方式

大家好,我是贝格前端工场,上期讲了数字孪生10个技术栈(总括):概念扫盲和总体介绍,获得了大家的热捧,本期继续分享技术栈,大家如有数字孪生或者数据可视化的需求,可以联络我们。 一、…

JavaWeb-MyBatis(上)

学完项目管理工具Maven后,继续学习MyBatis。我们都知道,JDBC是一个与数据库连接相关的API,最开始学习数据库连接都是从JDBC开始学起,但是其也有缺点,比如硬编码和操作繁琐等等。而今天学习的MyBatis就是专门为简化JDBC…