以太坊中文官网

您现在的位置:主页 > 资讯动态 >
资讯动态

Linux电源处置:Runtime PM的软件框架

来源:本站 作者:原创 浏览:

  me PM(后头简称RPM)了,说实话,蜗蜗有点小驱策。情由从局部的角度讲,我很崇敬使用RPM举行但凡的动静

  软件工程的根源思想就是模块化:高内聚和低耦合。浅显地说呢,即是“各人自扫门前雪”,尽量扫好己方的(高内聚)•,纵然反目别人交互(低耦合)。而RPM正大白了这一想念•:每个开发(包罗CPU)都办理好己方的电源办理任职,即使以最低的能耗了结叮嘱的义务,纵然在不需要办事的时间参加低功耗情状•,虽然反目其余模块有过多耦合。每个开发都是最勤俭的话,完全体系一定是最撙节的,最终抵达无所谓睡、无所谓醒的天人关一情况。

  说到这里念到本人的一则趣事:大学时,蜗蜗是寝室长,但不爱清除卫生,因而就提出一个口号,“不感染,不处理;谁习染,谁处理•”•。终局呢,群众猜即是了,呵呵。言归正传,最初吧。

  听多了RPM的传叙,有种莫名的畏怯,觉的会很繁芜。但看代码,也便是“drivers/base/power/runTIme.c•”中1400行云尔•。

  而挪用的时机,末了是由device driver决定的。driver会在恰当的驾驭点,移用RPM core需要的put和get系列的helper function•,汇报device的当前景况。RPM core会为每个device制造一个引用计数,get时添补计数值,put时裁汰计数值,当计数为0时,表白device不再被行使,可以立即或一段时刻后suspend•,以撙节功耗。

  好吧,叙总是纯朴,那做呢?很痛苦,到而今为止,linuxkernel的runtime PM照样很芜乱。这里的纷乱•,不是从完毕的角度,而是从对外的角度。在“include\linux\pm_runtime.h”中,RPM供给了将近50个接口。软件模块化的安插理思中,最沉要的一个规章就是提供简练的接口。很真切,RPM没有做到!

  无论RPM面对的标题有多么芜杂,非论事理有多么充塞,它也应遵从“简洁性”这一规定。否则,究竟只要一个----无人敢用。这即是面前Linux kernel电源管制中“Opportunistic suspend”和RPM两种机制并存的来历。然而,就算现状不理思,也不能否定RPM的进步性,在当前以及将来很长的一段时期内,它会是kernel电源办理更新比较伶俐的局部••,情由可能做的还许多。

  鉴于这个现状•,本文以及后续RPM有合的文章,会选拔最新的kernel(现时为linux-3.17),以便及时同步干系的改良。

  1)为每个设备修造一个引用计数(device-》ge_count),用于指使该装备的操纵情状•。

  3)每一次put,RPM core城市判定引用计数的值。假使为零,表达该筑造不再运用(idle)了,则运用异步(ASYNC)或同步(SYNC)的式样,调用装备的.runtime_idle回调函数。

  4).runtime_idle的生存,是为了在idle和suspend之间加一个缓冲,抑制频繁的suspend/resume支配。因此它的任务是:剖断配置是否周备suspend的条款,要是圆满,在颜面的机遇,suspend开发。

  可以不供应,RPM core会行使异步(ASYNC)或同步(SYNC)的方法,挪用装备的•.runtime_suspend回调函数,suspend开发,同时记录建造的PM处境;

  注1:Runtime PM中的“suspend”,不必定请求建造一定加入低功耗情况,而是恳求装备在suspend后,不再处分数据•,不再和CPUs、RAM举办任何的交互,直到配置的.runtime_resume被调用。来源此时设备的parent(如bus controller)、CPU是•、RAM等•,都有或许情由suspend而不再任职•,倘若建筑再有任何动作,都会造成弗成预期的迥殊。下面是“Documentation\power\runtime_pm.txt”中的解释,供专家参考:

  注2:追念一下wakeup events和wakeup lock,Runtime PM和它们在特性上是相像的,都是实时的向PM core申诉“我们不任职了•,可能睡了”、“我要管事了,不能睡(或醒来吧)”。分别的是:wakeup events和RPM的讲演者是内核空间drivers,而wakeup lock是用户空间经过•;wakeup events和wakelock涉及的睡觉对象是整个编制,席卷CPU和全部的devices,而RPM是一个一个寥寂的device(CPU以外,它由cpu idle模块料理,可看作RPM的特例)。

  再追想一下“autosleep”中有闭•“Opportunistic suspend”的研究,对“Opportunistic suspend•”而言,suspend时机的决断是异常拮据的,情由整机的运行碰到比拟芜杂•。而每一个完全设置的idle,就随便多了,这便是Runtime PM的优势。回到这个话题上•,对device而言,什么是idle?

  device是资历用户程序为用户提供服务的,而任事的体例分为两种:照准指令,任事情(被动);上报事件(主动,通常经验完毕的方式)。于是,兴办active的时辰段,囊括【答应指令,结局指令】和【事件达到,由driver纪录下来】两个。除此之外的时刻,网罗driver从用户次第获得指令(以及干系的数据)•、driver将事变(以及干系的数据)交给应用规律,都是idle时辰。

  那idle时刻是否应登时suspend以节减功耗?不必然,要整个场景完全对待•:譬喻汇集传输,假如收集相接正常,那么在可预期的、很短的光阴内,开发又会active(传输搜集数据),要是频仍suspend•,会降低本能,且不会省电;比方用户按键,具有突发性,因此也许研讨suspend;等等•。

  1)自愿拜谒设备时,如写寄存器、建议数据传输等等,get,添补引用计数,通知RPM core修立active;拜望究竟后,put,减短序用计数,报告RPM core摆设或许idle。

  建造驱动代码可在进程和中断两种坎坷文实行,因而put和get等接口,要么是由用户进程移用,要么是由终了办理函数调用。由于这些接口或许会实施device的.runtime_xxx回调函数,而这些接口的实验时间是不断定的,有些能够还会安插恭候。这对用户进程简略中断管理函数来叙,是不能照准的•。

  因而,RPM core需要的默认接口(pm_runtime_get/pm_runtime_put等),采用异步调用的式样(由ASYNC flag表明),启动一个work queue,在独处的线程中,调用.runtime_xxx回调函数,这可能担保修造驱动之外的其余模块平常运行•。

  其它,倘使筑造驱动知路地知晓本身要做什么,也不妨行使同步接口(pm_runtime_get_sync/pm_runtime_put_sync等),它们会直接移用•.runtime_xxx回调函数,但是,成就相信!

  由于.runtime_xxx回调函数能够选择异步的地势移用,以及Generic PM suspend和RPM并存的现状,条件RPM要防护统治同步题目,包罗:

  struct device结构中,有一个parent指针,指向该设置的父建造(没有的话为空)。父建筑普通是Bus、host controller,摆设的平常管事,仰仗父装备。体如今RPM中,即是如下的行径:

  RPM_ACTIVE,建造处于寻常劳动的情景,表达配置的.runtime_resume回调函数执行得胜;

  device备案时,开发模型代码会移用pm_runtime_init接口•,将建造的runtime status初始化为RPM_SUSPENDED,而kernel并不晓得某个设置初始化时的确实景况,因此配置驱动必要根据实践情况,挪用RPM的helper函数,将己方的status筑造准确。

  RPM提供的API位于“include/linux/pm_runtime.h”中,在这里先鉴赏一下,目标有二:一是对前面描绘的RPM运行机制有一个感性的领略;二是为背后阐明RPM的运行机制做筹划。

  这三个函数是RPM的idle•、put/suspend、get/resume等操纵的虚实,凭借rpmflag••,有着分别的驾御逻辑。后续很多API,都是基于它们三个。日常不会在筑造驱动中直接应用。

  在指定的岁月后(delay,单位是ms),suspend修筑。该接口为异步调用,不会变动兴办的引用计数,可在driver的.rpm_idle中调用,免除driver本人再启一个timer的烦恼。

  RPM初始化时,会将全面设备的disable_depth置为1,也就是disable处境,driver初始化终了后,要凭借兴办的机遇境况,移用这两个函数,将RPM景遇建立无误•。

  由3•.3的描绘可知,良多RPM哀求都是异步的,这些哀求会挂到一个名称为“pm_wq”的处事队伍上,这个函数的目的,便是清空这个部队,别的倘若有resume乞求,同步等候resume遣散。好零乱,意向driver长远不要用到它!!

  直接操纵同步的方法,试验idle/suspend/resume修筑,假如条款容许,就会履行反应的callback函数。driver尽管不要应用它们。

  补充/裁减兴办的利用计数,并占定是否为0,倘使为零,实验调用建筑的idle callback•,如果不为零,实习挪用配置的resume callback。

  autosuspend闭联接口。所谓的autosuspend,即是在suspend的事实上,弥补一个timer,如故感触有点繁杂。不说了。

  归纳一下:总感想这些API所供给的成效有些浸叠•,重叠的有点繁重。可以设计者为了提供更多的便当,可过渡的利便和自由,反而是一种节制和烦恼!

  所有人将《嵌入式工程师-系列课程》分成两大阶段:第一阶段:《猜测机体绑缚构》课程 分成4篇•:阔别是

  FinFET(鳍式场效应晶体管)在现时的晶圆代工范围可谓是大放异彩的核心技巧,台积电乃至规画一同用到....

  总有朋侪问覆盖Linux过程的本领,我谈你们想掩饰到什么水平•,是大隐于内核,照旧小隐于用户。网上通篇论....

  据外媒报途,谷歌云仍然伸展了其玄妙捏造机(VMs)聚关,这些假造机将提供加密办事,用户能够信托所有人的...•.

  1991 年,21 岁的芬兰大学生 Linus Torvalds 写下第一行 Linux 内核代码时...•.

  前Intel CEO司睿博表态会协商芯片外包临盆•,然而对Intel来叙,我们方摆设CPU等产品曾经是极....

  作者:Mike Thompson AI 无处不在•、随时在线和以数据为中心的时代,正催升对更高带宽的需....

  华硕近年来也巩固了做事站/任职器交易,日前正式推出了最新一代的2U单插槽GPU就事器ESC4000A....

  宏观的讲,μC/OS-Ⅱ大要分成内核构造、负担统辖、时间统治、任务之间的通信与同步和CPU的移植等5....

  suspend过程中,有可以会发生wakeup events,因而某些时候点,会移用接口(pm_wa....

  1. 前言 在这个六合中,任何编制的运转都必要能量。如树木依靠光能孕育,如马儿依附食物驰骋,如臆想机•.•...

  商议人员发觉,更多高等抨击机关正在创建器械安逸台来针对基于Linux的设备。所以•,本文盼望发挥有合L....

  FreeBSD和Linux是两个自由开源的软件。实践上,它们的用户可以很任性的清查并改进源代码,用户...•.

  Python3在装配的历程中也许会用到万种依靠库,因而在正式装备Python3之前,需要将这些依赖库...•.

  在少许实践的场景里,全部人必要始末操纵少许端口转发工具,譬喻体系自带的召唤行用具或第三方小软件,来绕过....

  不管是哪种语言,日期/工夫都是一个极端紧要的值。譬喻谁们生存日志的时辰,每每是某个前缀再加上当前岁月....

  提到电源管辖IC,不少人一定会想起【TOREX】(特瑞仕半导体) •。特瑞仕是电源IC专业创办商。迥殊....

  就而今把握的材料来看•,用嵌入式Linux编制的动静电源处置只有IBM奥斯汀实习室和MontaVist....

  利用程序应当不停监视兴办电量的处境蜕变,在设置电量不敷时,虽然颓丧厘革频率,大约欢喜阻挡数据改良。

  2020年8月27日,芯创空间今年初度大手拉小手行径得胜举行!本次拉手行动也是今年相约芯创 建梦改日....

  CPU作为推断机设备的运算和限定核心,用心指令读取、译码与实施,因研发门槛高、生态构建难,被感觉是集....

  Linux配置许许多多,嵌入式开辟一个绕不开的话题便是设备驱动斥地,在做团体装备驱动开垦之前•,有必要..•.•.

  在嵌入式开荒中,ADC行使比较一再,本文严重疏解ADC的根底事理以及若何编写基于ARM的裸机步骤和基...•.

  CPU管制器的中央数在不息晋升,现在桌面端花消级商场根蒂起步都是4核心,高端一些的都到达了8中央,A.••.•..

  现象: 当主机发送数据时(RTX),接受端能接受数据•,本机同样能接纳数据 当接受机发送数据•,本机却接受不到 跪...

  plc教程在于救济民众更好学习plc合联内容,往期plc教程内容中,小编对plc有过肇基介绍。这回p•.••...

  plc教程比来成为百度热词,来源在于一份好的plc教程不时难求。为此,小编特建立plc教程系列著作•....

  根本的电源统治功效所采用的节能手段是使系统当令的加入息眠景况,当下面的一种事件产生时,体例将加入歇眠....

  本系列作品将阐扬Linux对待OMAP的电源处分成果,以AM33XX手脚实例(现在的硬件平台先严重关..•..

  假若用户所行使的是条记本电脑,则可能将鼠标搬动指针至报告区域中的“电池”图标上单击,会发现电池状态以....

  生动微课堂 (第136叙) 基于MM32 MCU的OS移植与行使——RT-Thread 电源管辖

  简介 随着物联网(IoT)的振起,产品对功耗的须要越来越剧烈。行为数据收集的传感器节点深奥需要在电池供电时永恒就事...

  开端:编程世界六合 玄机项目我是CPU一号车间的阿Q,是的•,全班人又来了。 近来一段期间•,他一再下班约隔....

  现此刻,大家生存中的许多电器都使用了单片机。比如:手机、电视机、冰箱、洗衣机、以及按下开关,LED就....

  假使他们们们到电脑城去购买一台组装电脑•,才能员在装机后•,都是要给我们装备好负责系统的,没有掌管体例的电脑•...•.

  在你们的任事生计中,岂论是步骤员还咒骂次序员,我们们都会曰镪过一个须要,那便是对一堆的文件进行沉命名。....

  背景 由于在多管制器曰镪中某些资源的有限性,偶然需要互斥访问(mutual exclusion),这....

  装置Python曰镪打开Linux编译任事器末了,输入召唤“python3 -v•”或•“python -v”,查看Python版本号。可运用pytho..•.

  香橙派Orange Pi 3开辟板,采取全志H6体系级芯片,同时占领1GB或2GB LPDDR3 内存•,可选8GB EMMC F...

  作者:老友犹存 转自:羽林君 1 CPU的硬件最小原子 猜度机从上世纪四十年初先进到今朝有八十多年了....

  即使经历用户掌握、运用步骤约略外设都能够使编制投入大概退出休眠处境,但基础的电源统治效力所能控制的粒...•.

  编制断电管束方针即为对关座编制电源举行主动控制,当系统未测距工夫超越10s,那具体体例的供电体例就会....

  Linux 基金会本周颁发操持首创新的天色金融基金会(LF Climate Finance Foun....

  Android是基于Linux的开源掌握编制,主要用于嵌入式修立,如智内行机、死板电脑、智能电视、车....

  作 者丨张静波 美东时候2020年7月8日,已在不少人预见之中的一件史册分水岭式事件爆发了: 纳斯达....

  信任很多电子宠爱者对电子DIY都不生疏,本次电子发烧友要说摄像头也能DIY谁相信吗?接下来介绍的一款开采板可能...

  正则剖明式可能说不休是大众的梦魇,然而正则在供职中凿凿是运用太盛大了•,又不得不实习,可是却很难左右其....

  AI这个词正日益变得耳熟能详,那么AI能力在哪些方面应用得最广•?又能给人们的生存带来什么样的转化?以人脸图像识.•..

  第一个是IOPS模糊本事,P4610是基于3D NAND介质的NVMeSSD,在羼杂读写情状下••,基于•..••.•.

  作者:Mike Thompson,赛灵想 Virtex UltraScale+ FPGA 与 Ver....

  TLZ7xH-EVM是一款由创龙基于SOM-TLZ7xH核心板调节的开垦板,底板拔取重金无铅工艺的6层板安顿,为用户提...

  不过,有一种新兴的硬件类别被称为揣摸生存,即在数据驻留的园地举办处分,而不是将其挪动到内存中。数据通....

  Arm推出Cortex-R82,这是其首款拯救Linux的64位处置器,可实时猜度固态驱动器(SSD),硬盘驱动器(HDD)...

  51单片机的cpu告急组成个人有中央处置器( CPU )、里面数据保存器( RAM)、内部序次存在器....

  因而有了最早的2D呈现芯片,2D显现芯片经过多年的发展,到了90年代最初有了3D闪现的概想。而3D显....

  FPGA 的用处比全班人们素日联想的用处更盛大,原因在于此中集成的模块种类更多,而不单仅•.•..

  开发树中的chosen节点会直接教养启动的究竟,然则不知路里边的内容与什么有关•。参考别人的.•..

以太坊中文官网
返回