linux电源管理子系统,电源管理子系统
作者:wowo 发布于:2017-9-1 10:46
分类:电源管理子系统
大家都知道,复杂IC内部有很多具有独立功能的硬件模块,例如CPU cores、GPU
cores、USB控制器、MMC控制器、等等,出于功耗、稳定性等方面的考虑,有些IC在内部为这些硬件模块设计了复位信号(reset
signals),软件可通过寄存器(一般1个bit控制1个硬件)控制这些硬件模块的复位状态。
Linux kernel为了方便设备驱动的编写,抽象出一个简单的软件框架----reset
framework,为reset的provider提供统一的reset资源管理手段,并为reset的consumer(各个硬件模块)提供便捷、统一的复位控制API。
reset
framework的思路、实现和使用都非常简单、易懂(参考kernel有关的API--include/linux/reset-controller.h、include/linux/reset.h可知),不过麻雀虽小,五脏俱全,通过它可以加深对Linux
kernel的设备模型、驱动框架、分层设计、provider/consumer等设计思想的理解,因此本文将对其进行一个简单的罗列和总结。
作者:linuxer 发布于:2017-4-21 12:02
分类:电源管理子系统
本文主要描述系统休眠过程是如何和中断子系统交互的,全文的结构保持和内核文档中的power/suspend-and-interrupts.txt一致,当然,本质上也可以说这份文档是对suspend-and-interrupts.txt的翻译。
作者:linuxer 发布于:2016-4-21 19:23
分类:电源管理子系统
之前,wowo同学已经发表了关于CCF(Common Clock Framework)的三份文档,相信大家对CCF有一定的了解了,本文就是在阅读那三份文档的基础上,针对Linux 4.4.6内核的内核代码实现,记录自己对CCF的理解,并对CCF进行系统结构层面的归纳和整理。
本文内容包括三个部分,第二章给出了整个CCF相关的block diagram图,随后在第三章对各个模块进行功能层面的描述。最后,第四章给出了各个block之间的接口描述。
另外,在阅读CCF代码的过程中,我准备用两份文档来分享我对CCF的理解。这一份是系统结构,另外一份是逻辑解析。
作者:itrocker 发布于:2015-11-24 15:01
分类:电源管理子系统
1什么是进程冻结
进程冻结技术(freezing of tasks)是指在系统hibernate或者suspend的时候,将用户进程和部分内核线程置于“可控”的暂停状态。
2为什么需要冻结技术
假设没有冻结技术,进程可以在任意可调度的点暂停,而且直到cpu_down才会暂停并迁移。这会给系统带来很多问题:
作者:wowo 发布于:2015-11-10 22:04
分类:电源管理子系统
也许大家会觉得奇怪:为什么Linux kernel把对ARM big·Lttile的支持放到了cpufreq的框架中?
众所周知,ARM的big·Little架构,也称作HMP(具体可参考“Linux CPU
core的电源管理(2)_cpu topology”中相关的介绍),通过在一个chip中封装两种不同类型的ARM
core的方式,达到性能和功耗的平衡。这两类ARM Core,以cluster为单位,一类为高性能Core(即big
core),一类为低性能Core(即Little
core),通过它们的组合,可以满足不同应用场景下的性能和功耗要求,例如:非交互式的后台任务、或者流式多媒体的解码,可以使用低功耗的Little
core处理;突发性的屏幕刷新,可以使用高性能的big core处理。
那么问题来了,Linux kernel怎么支持这种框架呢?
注1:本文很多理论性的表述,或多或少的理解并翻译自:“http://lwn.net/Articles/481055/”,感兴趣的读者可以自行阅读。
注2:本文基于
作者:wowo 发布于:2015-9-19 21:39
分类:电源管理子系统
由“Linux CPU core的电源管理(1)_概述”的描述可知,kernel cpu control位于“.\kernel\cpu.c”中,是一个承上启下的模块,负责屏蔽arch-dependent的实现细节,向上层软件提供控制CPU core的统一API(主要包括cpu_up/cpu_down等接口的实现)。本文将基于这些API,从上到下,分析CPU core从启动到关闭的整个过程(主要是CPU hotplug),进一步理解系统运行过程中CPU core电源管理相关的行为。
注1:其实这一部分已经不属于电源管理的范畴了,而是系统级的软件行为(boot、调度、电源管理等等),之所以放到这里讲述,主要原因是,这些复杂行为的背后,目的只有一个----节电。因此,本文只会focus在CPU core power状态切换的过程上,涉及到得其它知识,如进程调度,只会一笔带过。
作者:wowo 发布于:2015-8-23 21:15
分类:电源管理子系统
由“linux cpufreq framework(3)_cpufreq core”的描述可知,cpufreq policy负责设定cpu调频的一个大致范围,而cpu的具体运行频率,则需要由相应的cufreq governor决定(可自行调节频率的CPU除外,后面会再详细介绍)。那到底什么是cpufreq governor?它的运行机制是什么?这就是本文要描述的内容。
作者:wowo 发布于:2015-7-30 20:58
分类:电源管理子系统
前文(Linux cpufreq framework(2)_cpufreq driver)从平台驱动工程师的角度,简单的介绍了编写一个cpufreq driver的大概步骤。但要更深入理解、更灵活的使用,必须理解其内部的实现逻辑。
因此,本文将从cpufreq framework core的角度,对cpufreq framework的内部实现做一个简单的分析。
作者:wowo 发布于:2015-7-17 22:15
分类:电源管理子系统
由“ARMv8-a架构简介”中有关的介绍可知,ARMv8(包括ARMv7的一些扩展)引入了Virtualization、Security等概念。在这些概念之下,传统的CPU boot、shutdown、reset、suspend/resume等操作,不再那么简单和单纯。因此,ARM将这些底层操作抽象为一些operations,在以统一的方式向上层软件提供API的同时,可以根据不同的场景,有不同的实现。这就是本文要描述的cpu ops。
注1:由“Linux CPU core的电源管理(1)_概述”的描述可知,cpu ops属于arch-dependent的部分,本文基于ARM64平台。
作者:wowo 发布于:2015-6-19 22:27
分类:电源管理子系统
本文从平台驱动工程师的角度,介绍怎么编写cpufreq驱动。
注1:本文基于
linux电源管理子系统,电源管理子系统相关推荐
- linux 电源管理源码分析,Linux 3.8.1 电源管理之OMAP Voltage Domain分析
本系列文章将分析Linux对于OMAP的电源管理功能,以AM33XX作为实例(目前的硬件平台先主要关注AM335xStarterKit开发板),在必要时穿插其他相关内容. 在linux-3.8.1/a ...
- 嵌入式linux系统电源管理器,嵌入式Linux系统的动态电源管理技 - 嵌入式操作系统 - 电子发烧友网...
嵌入式Linux系统的动态电源管理技术 通过用户层制定策略与内核提供管理功能交互,实时调整电源参数而同时满足系统实时应用的需求,允许电源管理参数在短时间的空闲或任务运行在低电源需求时,可以被频繁地.低 ...
- linux acpi 电源管理,ACPI电源管理
S1,S2:待机.只关闭CPU.S1是完全加电:S2是如果CPU不活动就进入待机状态. S3:挂起到内存,关闭硬盘,其它设备处于加电等待状态. S4:休眠,内存写入硬盘后,关闭所有设备. S5:关机: ...
- 新兴解决方案增强了电动汽车电源(功耗)管理
新兴解决方案增强了电动汽车电源(功耗)管理 Emerging solutions enhance electric-vehicle power management 电动汽车正变得越来越受欢迎,因为在 ...
- 计算机电源管理设置,关于电源管理的电源管理计划设置
关于电源管理的电源管理计划设置 12/19/2014 本文内容 应用到: System Center Configuration Manager 2007 R3 Configuration Manag ...
- java-php-python-ssm医疗健康管理平台会员管理子系统计算机毕业设计
java-php-python-ssm医疗健康管理平台会员管理子系统计算机毕业设计 java-php-python-ssm医疗健康管理平台会员管理子系统计算机毕业设计 本源码技术栈: 项目架构:B/S ...
- java计算机毕业设计医疗健康管理平台会员管理子系统源码+数据库+系统+lw文档+部署
java计算机毕业设计医疗健康管理平台会员管理子系统源码+数据库+系统+lw文档+部署 java计算机毕业设计医疗健康管理平台会员管理子系统源码+数据库+系统+lw文档+部署 本源码技术栈: 项目架构 ...
- java毕业生设计医疗健康管理平台会员管理子系统计算机源码+系统+mysql+调试部署+lw
java毕业生设计医疗健康管理平台会员管理子系统计算机源码+系统+mysql+调试部署+lw java毕业生设计医疗健康管理平台会员管理子系统计算机源码+系统+mysql+调试部署+lw 本源码技术栈 ...
- Linux设备模型、平台设备驱动、设备树(device tree)、GPIO子系统以及pinctrl子系统介绍
文章目录 一.Linux设备模型介绍 (1)设备驱动模型总体介绍 (2)设备驱动模型文件表现 (3)设备驱动模型工作原理 [1]总线 [2]设备 [3]驱动 [4]注册流程 二.平台设备驱动介绍 (1 ...
最新文章
- 逆序数 UVALive 6508 Permutation Graphs
- AWK高级编程 转载
- SCI论文写作训练营笔记汇总01_概述+文献检索与管理
- Map集合使用get方法返回null抛出空指针异常问题
- linux scp 隐藏文件,scp 客户端发现了隐藏 35 年的漏洞
- 计算机机房维护与管理,计算机机房的管理与维护.doc
- 《CCNet:Criss-Cross Attention for Semantic Segmentation》论文笔记
- 控制天象,世间的最强者!
- uniapp点击生成商品海报、下载海报、分享海报
- 欧姆龙PLC以太网与西门子WINCC通讯
- 机器人抓取 三维重建机器人抓取 三维物体匹配
- badger框架学习 (一)
- LCL 滤波器的特性分析
- 内存管理 - mblock算法
- 洛阳市计算机学校分布在什么地方,2019年洛阳中小学学区划分最新分布图_洛阳学区划分图...
- C语言入门-学习笔记(不定时更新)
- LOWORD和HIWORD函数
- 分布式文件管理系统FastDFS搭建教程(FastDFS+nginx+fastdfs-nginx-module)
- 10个可视化 CSS 工具, 快速生成 CSS 片段
- jQuery特效动画
热门文章
- 试验箱制冷机组制检修时有关制冷剂的解决方法
- 文献计量三大定律之一---洛特卡定律及普赖斯定律
- 东华oj1-求长方形的面积和周长C++
- ERP系统上线的幸福曲线
- 推荐两个小工具MediaInfo 和 netpersec
- 初学MVC框架怎么理清思路
- 2023游戏开发制作如何选择合适的游戏引擎?看完本文就知道
- 不用再为下载而发愁了,提供一款支持115网盘、迅雷、快车、旋风、飞速网盘的专用链接解析出资源的真实地址的软件...
- 类似pyinstaller_全网首份Python打包工具Pyinstaller实战指南,如丝滑般体验
- 原生JS实现放大镜功能