电子发烧友网 > 嵌入式技术 > 正文

Linux系统中那些常规的电源管理手段

2020年09月16日 15:06 次阅读

1. 前言

这里的Generic PM,是蜗蜗自己起的名字,指Linux系统中那些常规的电源管理手段,包括关机(Power off)、待机(Standby or Hibernate)、重启(Reboot)等。这些手段是在嵌入式Linux普及之前的PC或者服务器时代使用的。在那个计算机科学的蛮荒时代,人类在 摩尔定律的刺激下,孜孜追求的是计算机的计算能力、处理性能,因此并不特别关心Power消耗。

在这种背景下发展出来的Linux电源管理机制,都是粗放的、静态的、被动的,具体请参考下面的介绍。

2. Generic PM在Linux操作系统中的表现形式

Linux操作系统中,和Generic PM有关的操作如下面图片:

该图片截取自蜗蜗使用的“Linux ubuntu 2.6.32-38”系统,共有3部分组成:

第1部分是系统关机、重启等操作的界面,共包含Hibernate、Restart、Shutdown三个操作选项;

2、3部分是“电源管理属性”设置,所谓的电源管理属性,可以配置系统在不同供电模式下(如AC Power、Battery等,由于蜗蜗的机器是PC机,因此就没有电池供电的选项),处于Inactive状态多久后,系统关闭Display,或者进入Sleep状态。

本文将会围绕上面提到的各个名词,讲述它们的意义、在内核中的实现方式。开始之前,先解释一下这些词汇的意义。

Shutdown,很好理解,就是关机的意思。同时意味着不再使用计算机。

Restart,也很好理解,就是重启系统的意思。重启的过程,不再使用计算机。

Hibernate,可翻译为冬眠。

听到“冬眠”这个词,您是否眼前一亮?蜗蜗在“Linux电源管理(1)_整体架构”中解释电源管理的概念的时候,提到过,动物冬眠就是大自然所设计的电源管理方式的一种。在动物界,冬眠是指动物们(通常针对温血动物)通过降低体温的方式而进入的类似昏睡的生理状态,在这种状态下,需要消耗的能量较少,从而可以达到省电(能量)的目的。

而在计算机界,设计师们也借用了“冬眠”的概念,在不需要使用计算机时,将它当前的所有现场(执行的程序、显示器显示的图像、正在播放的声音等)保存到一些断电不会丢失的存储器中(如硬盘中),然后将计算机关闭。重新开启后,系统会从存储器中将关闭前的现场读取出来并恢复,此时从使用者的角度看,计算机就像没有关闭过一样。

如果把计算机界的“冬眠”搬到动物界,会是这样的场景:一只恐龙,迈着八字步,吃着香蕉,晃晃悠悠的走在树林中。然后,无聊的孙猴子来了,喊了一声 “定!”,恐龙就定在那里了。再然后,一万年过去了,无聊的孙猴子又来了,喊了一声“动!”,恐龙继续迈着八字步,吃着香蕉,就像什么事情都没有发生一 样。

Sleep,睡眠。这个词也是从生物界学来的。想象一下“睡眠”和“冬眠”的区别?“睡眠”睡的轻,随时都可以醒来。在计算机中,Hibernate需要 把现场保存到断电不丢失的存储器中,并在醒来的时候读回来,这些可能需要较长的时间(因为断电不丢失存储器的访问速度都比较慢)。如果想快点,就把现场保 存在内存中就可以了,这就是Sleep。不过这是要付出代价的,内存要保持供电,这就要消耗能量,鱼与熊掌不可兼得啊!

Auto Sleep,查看上面图片第3个部分,可以设置系统“处于InacTIve状态多久后,自动进入Sleep状态”。比如我正在写这篇文章,然后被老婆喊去跪搓衣板了,一跪两个小时。这两个小时内,计算机不再被使用,如果不进入Sleep状态,将会消耗很多能量。为了避免这无谓的消耗,可以让系统在符合条件时(如20分钟不使用),自动睡下去。

Auto put display to Sleep,原理类似,只是操作的对象是Display(显示器等)。

注:

不知读者有没有注意到,蜗蜗在解释上面的词汇时,一直在用红色字体强调“计算机不再使用”。这就是Generic PM和RunTIme PM的本质区别,即,在使用者的主观意愿上,是否需要暂停使用计算机(哪怕短短的一段时间)。

这也是Generic PM在传统的计算机操作系统中被广泛使用的原因,因为那个时候对计算机的使用大多是主动方式。而对当前的移动互联来说,就非常不合时宜了,因为人们需要移 动设备实时在线、实时接收被动事件(如来电),也就不可能主观地暂停使用(哪怕短短的一段时间)。这种最终需求的差异,会导致在软件设计上有很大的差别, 正因为如此,RunTIme PM的出现和尽快成熟,才显得格外重要。

3. Generic PM的软件架构

在介绍完Generic PM的基本概念后,我们来看一下它在Linux内核中的整体实现,并抽象出简单的软件架构,以便再后续的文章中,对Generic PM的主要组成部分进行更为细致的分析。具体如下:

根据上面的描述可知,Generic PM主要处理关机、重启、冬眠(Hibernate)、睡眠(Sleep,在Kernel中也称作Suspend)。在内核中,大致可以分为三个软件层次:

API Layer,用于向用户空间提供接口,其中关机和重启的接口形式是系统调用(在新的内核中,关机接口还有一种新方式,具体讲到的时候再说),Hibernate和Suspend的接口形式是sysfs。

PM Core,位于kernel/power/目录下,主要处理和硬件无关的核心逻辑。

PM Driver,分为两个部分,一是体系结构无关的Driver,提供Driver框架(Framework)。另一部分是具体的体系结构相关的Driver,这也是电源管理驱动开发需要涉及到的内容(图中红色边框的模块)。

另外,电源管理是一个系统级的模块,因而会涉及到设备模型、进程管理等等方方面面的内容,我们可以在后续具体的分析过程中,细细品味。

下载发烧友APP

打造属于您的人脉电子圈

关注电子发烧友微信

有趣有料的资讯及技术干货

关注发烧友课堂

锁定最新课程活动及技术直播

电子发烧友观察

一线报道 · 深度观察 · 最新资讯
收藏 人收藏
分享:

评论

相关推荐

《嵌入式技术 基础课程》之逆向-X86汇编

我们将《嵌入式工程师-系列课程》分成两大阶段:第一阶段:《计算机体系结构》课程   分成4篇:分别是
发烧友学院发表于 2019-01-21 00:00 1630次阅读
《嵌入式技术 基础课程》之逆向-X86汇编

微软研发适用于Linux的Windows子系统—...

近期,微软发布了一款名为TensorFlow-DirectML的TensorFlow扩展套件,帮助开....
发表于 2020-09-16 14:07 13次阅读
微软研发适用于Linux的Windows子系统—...

Linux文件系统解析

在 Linux 中,最直观、最可见的部分就是 文件系统(file system)。下面我们就来一起探....
发表于 2020-09-16 11:29 27次阅读
Linux文件系统解析

Dialog成为Telechips优选电源管理合...

Dialog“完美匹配”的电源解决方案由DA9062-A系统主PMIC以及近期推出的DA9130-A....
发表于 2020-09-16 11:07 40次阅读
Dialog成为Telechips优选电源管理合...

基于嵌入式视频分析技术和烟雾驱离系统在监狱管理中...

系统能通过视频分析实现入侵、徘徊、脱岗、滞留等多种报警方式,并整合腕带剪断报警 、按键告警 、消失报....
发表于 2020-09-16 10:52 35次阅读
基于嵌入式视频分析技术和烟雾驱离系统在监狱管理中...

部分网友冷嘲热讽华为,大佬指出华为对Linux内...

前几天的HDC大会上,华为正式推出了鸿蒙2.0,在这个领域通常是微软、谷歌、苹果等公司才玩得转的,中....
发表于 2020-09-16 10:06 85次阅读
部分网友冷嘲热讽华为,大佬指出华为对Linux内...

基于Linux操作系统和IMP706芯片实现看门...

采用IMP706芯片组成硬件看门狗电路(看门狗的时间间隔为1.6 s),在操作系统程序(包括Boot....
发表于 2020-09-15 17:58 288次阅读
基于Linux操作系统和IMP706芯片实现看门...

基于LPC2294嵌入式处理平台实现eCos操作...

嵌入式实时操作系统的使用,可以增强系统性能,确保系统稳定性和可靠性,便于维护开发应用程序.因此越来越....
发表于 2020-09-15 17:47 102次阅读
基于LPC2294嵌入式处理平台实现eCos操作...

基于RTEMS操作系统实现面向任务的调试方法分析

调试一直是嵌入式系统开发的难题。开发者往往直接面对嵌入式开发硬件进行开发,就算目标嵌入式环境中引入了....
发表于 2020-09-15 17:42 172次阅读
基于RTEMS操作系统实现面向任务的调试方法分析

嵌入式移动数据库的结构体系、特点和优化查询方法研...

复制是在多个移动节点上维护数据的备份,包括服务器之间的复制和移动计算机上保存数据库的复制。一般前者称....
发表于 2020-09-15 17:31 142次阅读
嵌入式移动数据库的结构体系、特点和优化查询方法研...

嵌入式LV4500R二维扫描模组在自助医疗服务机...

在医疗行业中应用条码识读技术,能够优化医疗自助服务终端的业务流程及医疗品质,提供更加可靠、便民的医疗....
发表于 2020-09-15 17:00 164次阅读
嵌入式LV4500R二维扫描模组在自助医疗服务机...

AIoT时代的嵌入式技术与人才培养

从2020年第2期开始,《单片机与嵌入式系统应用》开始推出卷首语栏目,每期邀请一位业内专家围绕嵌入式....
发表于 2020-09-15 16:36 107次阅读
AIoT时代的嵌入式技术与人才培养

宏的高级用法

对于条件/分支处理的程序设计,我们惯性地会选择switch-case或者if-else,这也是C语言....
发表于 2020-09-15 15:59 32次阅读
宏的高级用法

一行代码教你如何隐藏Linux进程

总有朋友问隐藏Linux进程的方法,我说你想隐藏到什么程度,是大隐于内核,还是小隐于用户。网上通篇论....
发表于 2020-09-15 15:16 100次阅读
一行代码教你如何隐藏Linux进程

Linux内核的发展史

1991 年,21 岁的芬兰大学生 Linus Torvalds 写下第一行 Linux 内核代码时....
发表于 2020-09-15 14:07 197次阅读
Linux内核的发展史

众筹一【HarmonyOS + Linux双系统】HarmonyOS ARM开发板嵌入式IMX6ULL

产品介绍全球首批可运行华为鸿蒙操作系统的开发板;移植鸿蒙有源码、教程、文档,提供技术支持,鸿蒙认证厂商;可运行...
发表于 2020-09-14 21:27 101次阅读
众筹一【HarmonyOS + Linux双系统】HarmonyOS ARM开发板嵌入式IMX6ULL

Git在实际工作中的基本使用方法

代码版本控制对于我们嵌入式软件开发岗是一项基础、必备的技能,需要熟练掌握。实际工作中常用的版本控制系....
发表于 2020-09-14 18:12 273次阅读
Git在实际工作中的基本使用方法

基于微处理器LPC2210实现μC/OS-Ⅱ关键...

宏观的讲,μC/OS-Ⅱ大致分成内核结构、任务管理、时间管理、任务之间的通信与同步和CPU的移植等5....
发表于 2020-09-14 17:59 473次阅读
基于微处理器LPC2210实现μC/OS-Ⅱ关键...

基于嵌入式系统GUI如何实现DirectF的图形...

DirectFB项目是由德国Convergence公司推动的Open source计划的一部分,它是....
发表于 2020-09-14 17:55 507次阅读
基于嵌入式系统GUI如何实现DirectF的图形...

基于DSP+ARM双处理器构架实现Qtopia ...

此时在开发板运行 Qtopia Core应用程序后,触摸屏还不能正确响应用户的点击,主要原因是目标板....
发表于 2020-09-14 17:39 751次阅读
基于DSP+ARM双处理器构架实现Qtopia ...

Linux电源管理总体框架及实现原理

suspend过程中,有可能会发生wakeup events,所以某些时间点,会调用接口(pm_wa....
发表于 2020-09-14 17:00 41次阅读
Linux电源管理总体框架及实现原理

Linux电源管理系统结构介绍

1. 前言 在这个世界中,任何系统的运转都需要能量。如树木依靠光能生长,如马儿依靠食物奔跑,如计算机....
发表于 2020-09-14 16:17 413次阅读
Linux电源管理系统结构介绍

研究人员发现:更多黑客的网络攻击针对于基于Lin...

研究人员发现,更多高级攻击组织正在创建工具和平台来针对基于Linux的设备。因此,本文希望分析有关L....
发表于 2020-09-14 15:46 116次阅读
研究人员发现:更多黑客的网络攻击针对于基于Lin...

freebsd和linux区别

FreeBSD和Linux是两个自由开源的软件。实际上,它们的用户可以很容易的检查并修改源代码,用户....
发表于 2020-09-14 15:34 45次阅读
freebsd和linux区别

Linux操作环境下安装Python 3.6的步...

Python3在安装的过程中可能会用到各种依赖库,所以在正式安装Python3之前,需要将这些依赖库....
发表于 2020-09-14 15:20 73次阅读
Linux操作环境下安装Python 3.6的步...

Linux端口转发的常用方法,来绕过网络访问限制...

在一些实际的场景里,我们需要通过利用一些端口转发工具,比如系统自带的命令行工具或第三方小软件,来绕过....
发表于 2020-09-14 15:07 142次阅读
Linux端口转发的常用方法,来绕过网络访问限制...

TL8168-EVM开发板规格书

开发板简介基于TI达芬奇系列TMS320DM8168浮点DSP C674x + ARM Cortex-A8高性能视频处理器;强劲的视频...
发表于 2020-09-14 15:04 0次阅读
TL8168-EVM开发板规格书

Linux操作系统的Shell命令:日期格式

不管是哪种语言,日期/时间都是一个非常重要的值。比如我们保存日志的时候,往往是某个前缀再加上当前时间....
发表于 2020-09-14 14:57 80次阅读
Linux操作系统的Shell命令:日期格式

TOREX做客唯样直播间,看电源IC如何在5G光...

提到电源管理IC,不少人一定会想起【TOREX】(特瑞仕半导体) 。特瑞仕是电源IC专业制造商。独特....
发表于 2020-09-14 13:11 288次阅读
TOREX做客唯样直播间,看电源IC如何在5G光...

Linux下的动态电源管理(DPM)技术分析

就目前掌握的资料来看,用嵌入式Linux系统的动态电源管理只有IBM奥斯汀实验室和MontaVist....
发表于 2020-09-14 12:51 66次阅读
Linux下的动态电源管理(DPM)技术分析

Android电源管理监听充电状态的变化

应用程序应当一直监视设备电量的状态变化,在设备电量不足时,尽量降低更新频率,或者干脆停止数据更新。
发表于 2020-09-14 12:02 94次阅读
Android电源管理监听充电状态的变化

GPIO系统的基础知识解析

有些硬件逻辑是和IO port本身的功能设定相关的,我们称这个HW block为pin contro....
发表于 2020-09-14 11:55 107次阅读
GPIO系统的基础知识解析

基于仿真器的程序加载与烧写——TMS320F2837x

基于仿真器的程序加载与烧写1.查看仿真器是否安装成功如下TMS320F2837x的开发,均以TL-XDS200仿真器为例。开...
发表于 2020-09-14 10:22 101次阅读
基于仿真器的程序加载与烧写——TMS320F2837x

如何正确认识Linux设驱动模型

Linux设备林林总总,嵌入式开发一个绕不开的话题就是设备驱动开发,在做具体设备驱动开发之前,有必要....
发表于 2020-09-13 09:30 158次阅读
如何正确认识Linux设驱动模型

如何编写基于ARM的裸机程序和基于Linux的驱...

在嵌入式开发中,ADC应用比较频繁,本文主要讲解ADC的基本原理以及如何编写基于ARM的裸机程序和基....
发表于 2020-09-13 09:25 250次阅读
如何编写基于ARM的裸机程序和基于Linux的驱...

MAX3485串口通信,无法接收数据

现象: 当主机发送数据时(RTX),接收端能接收数据,本机同样能接收数据 当接收机发送数据,本机却接收不到 跪...
发表于 2020-09-12 18:49 202次阅读
MAX3485串口通信,无法接收数据

Windows CE操作系统的电源状态转换策略

基本的电源管理功能所采用的节能方法是使系统适时的进入休眠状态,当下面的一种事件发生时,系统将进入休眠....
发表于 2020-09-12 11:08 68次阅读
Windows CE操作系统的电源状态转换策略

以AM33XX为实例的OMAP的电源管理功能

本系列文章将分析Linux对于OMAP的电源管理功能,以AM33XX作为实例(目前的硬件平台先主要关....
发表于 2020-09-12 10:56 61次阅读
以AM33XX为实例的OMAP的电源管理功能

如何认识Windows 7三种电源计划

如果用户所使用的是笔记本电脑,则可以将鼠标移动指针至通知区域中的“电池”图标上单击,会出现电池状态以....
发表于 2020-09-12 10:46 92次阅读
如何认识Windows 7三种电源计划

Teledyne e2v 推出适合扫描、嵌入式...

作为全包式前端成像系统,此 2MP模组可为客户大幅缩减开发时间和降低成本。安装模组时只需用到几颗螺钉....
发表于 2020-09-12 09:32 625次阅读
 Teledyne e2v 推出适合扫描、嵌入式...

嵌入式行业需要什么样的技术人才?

来源:21ic电子网 嵌入式行业需要什么样的技术人才? 仔细观察各种招聘的岗位 要求吧,无非是两方面....
发表于 2020-09-11 18:23 242次阅读
嵌入式行业需要什么样的技术人才?

基于底层实现和上层逻辑对可重构系统任务间通信进行...

目前,在面向应用的嵌入式体系结构的研究中,为了能同时利用通用处理器(CPU)的灵活性和专用集成电路(....
发表于 2020-09-11 18:09 774次阅读
基于底层实现和上层逻辑对可重构系统任务间通信进行...

灵动微课堂 (第136讲) 基于MM32 MCU的OS移植与应用——RT-Thread 电源管理

简介 随着物联网(IoT)的兴起,产品对功耗的需求越来越强烈。作为数据采集的传感器节点通常需要在电池供电时长期工作...
发表于 2020-09-11 18:02 0次阅读
灵动微课堂 (第136讲) 基于MM32 MCU的OS移植与应用——RT-Thread 电源管理

基于Jini互联技术实现分布式嵌入式系统的设计

Jini是一种全新的构建分布式系统的技术,具有动态的、自形成的和自管理的特性,它是一种真正的基于服务....
发表于 2020-09-11 17:37 175次阅读
基于Jini互联技术实现分布式嵌入式系统的设计

【专家问答】小熊派创始人与您分享物联网研发技术

前言:本期我们邀请到了从事物联网技术开发的资深工程师王城老师,在本期高手问答中老师将为我们解答有关HarmonyOS...
发表于 2020-09-11 16:48 621次阅读
【专家问答】小熊派创始人与您分享物联网研发技术

电脑都常用的操作系统有哪些

如果我们到电脑城去购买一台组装电脑,技术员在装机后,都是要给我们安装好操作系统的,没有操作系统的电脑....
发表于 2020-09-11 16:20 143次阅读
电脑都常用的操作系统有哪些

Linux操作系统:三种最基本的文件重命名方法

在我们的工作生活中,不管是程序员还是非程序员,我们都会遇到过一个需求,那就是对一堆的文件进行重命名。....
发表于 2020-09-11 14:48 107次阅读
Linux操作系统:三种最基本的文件重命名方法

Linux 自旋锁spinlock

背景 由于在多处理器环境中某些资源的有限性,有时需要互斥访问(mutual exclusion),这....
发表于 2020-09-11 14:36 63次阅读
Linux 自旋锁spinlock

【信盈达】鸿蒙操作系统移植--3、安装Python环境

安装Python环境打开Linux编译服务器终端,输入命令“python3 -v”或“python -v”,查看Python版本号。可使用pytho...
发表于 2020-09-11 13:55 33次阅读
【信盈达】鸿蒙操作系统移植--3、安装Python环境

嵌入式人工智能的定义与生成性人工智能之间的关系

形成性人工智能是Gartner预测中的一个新的技术类别,它将能够感知并动态响应不断变化的情况。形成性....
发表于 2020-09-11 11:48 529次阅读
嵌入式人工智能的定义与生成性人工智能之间的关系

Orange Pi 3开发板在Armbian系统下使用SPI的方法

香橙派Orange Pi 3开发板,采用全志H6系统级芯片,同时拥有1GB或2GB LPDDR3 内存,可选8GB EMMC F...
发表于 2020-09-11 11:46 0次阅读
Orange Pi 3开发板在Armbian系统下使用SPI的方法

Eurocom推出了EUROCOM MXM3至P...

通过嵌入式GPU加速技术,与传统的,不太复杂的计算基础架构相比,处理和计算时间可以缩短为完成时间的一....
发表于 2020-09-11 09:51 237次阅读
Eurocom推出了EUROCOM MXM3至P...

线性文件系统的设计方案在嵌入式应用管理Flash...

在嵌入式系统中,为了便于对闪存(Flash)空间进行管理,会采用文件的形式来访问Flash。目前,可....
发表于 2020-09-10 17:54 466次阅读
线性文件系统的设计方案在嵌入式应用管理Flash...

一个2400波特的嵌入式调制解调器模块

特征 •易于集成 •占地面积小1.00“x 2.50” •全双工2400bps •低功耗 •V.24 DTE接口 •单+5V电源操作 ...
发表于 2020-09-10 17:40 0次阅读
一个2400波特的嵌入式调制解调器模块

Windows CE.NET电源管理器状态转换方...

虽然通过用户操作、应用程序或者外设都可以使系统进入或者退出休眠状态,但基本的电源管理功能所能控制的粒....
发表于 2020-09-10 17:19 69次阅读
Windows CE.NET电源管理器状态转换方...

一种低功耗电源管理电路设计方案

系统断电管理方案即为对整个系统电源进行自动控制,当系统未测距时间超过10s,那整个系统的供电系统就会....
发表于 2020-09-10 17:07 627次阅读
一种低功耗电源管理电路设计方案

TL437x-EVM评估板测试手册(2)

1.14USB接口读写测试USB DRD支持软件切换为HOST/DEVICE模式,USB DRD和USB OTG的区别...
发表于 2020-09-10 16:54 74次阅读
TL437x-EVM评估板测试手册(2)

Linux基金会宣布计划成立新的气候金融基金会

Linux 基金会本周宣布计划成立新的气候金融基金会(LF Climate Finance Foun....
发表于 2020-09-10 16:44 120次阅读
Linux基金会宣布计划成立新的气候金融基金会

Android是基于Linux的开源操作系统

Android是基于Linux的开源操作系统,主要用于嵌入式设备,如智能手机、平板电脑、智能电视、车....
发表于 2020-09-10 16:35 204次阅读
Android是基于Linux的开源操作系统

机器学习公司SiMa.ai宣布Gopal Heg...

Hegde在初创公司和大型上市公司(包括Cavium(被Marvell收购),Calxeda,Cis....
发表于 2020-09-10 15:57 194次阅读
机器学习公司SiMa.ai宣布Gopal Heg...
博评网