作者: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电源管理子系统,电源管理子系统相关推荐

  1. linux 电源管理源码分析,Linux 3.8.1 电源管理之OMAP Voltage Domain分析

    本系列文章将分析Linux对于OMAP的电源管理功能,以AM33XX作为实例(目前的硬件平台先主要关注AM335xStarterKit开发板),在必要时穿插其他相关内容. 在linux-3.8.1/a ...

  2. 嵌入式linux系统电源管理器,嵌入式Linux系统的动态电源管理技 - 嵌入式操作系统 - 电子发烧友网...

    嵌入式Linux系统的动态电源管理技术 通过用户层制定策略与内核提供管理功能交互,实时调整电源参数而同时满足系统实时应用的需求,允许电源管理参数在短时间的空闲或任务运行在低电源需求时,可以被频繁地.低 ...

  3. linux acpi 电源管理,ACPI电源管理

    S1,S2:待机.只关闭CPU.S1是完全加电:S2是如果CPU不活动就进入待机状态. S3:挂起到内存,关闭硬盘,其它设备处于加电等待状态. S4:休眠,内存写入硬盘后,关闭所有设备. S5:关机: ...

  4. 新兴解决方案增强了电动汽车电源(功耗)管理

    新兴解决方案增强了电动汽车电源(功耗)管理 Emerging solutions enhance electric-vehicle power management 电动汽车正变得越来越受欢迎,因为在 ...

  5. 计算机电源管理设置,关于电源管理的电源管理计划设置

    关于电源管理的电源管理计划设置 12/19/2014 本文内容 应用到: System Center Configuration Manager 2007 R3 Configuration Manag ...

  6. java-php-python-ssm医疗健康管理平台会员管理子系统计算机毕业设计

    java-php-python-ssm医疗健康管理平台会员管理子系统计算机毕业设计 java-php-python-ssm医疗健康管理平台会员管理子系统计算机毕业设计 本源码技术栈: 项目架构:B/S ...

  7. java计算机毕业设计医疗健康管理平台会员管理子系统源码+数据库+系统+lw文档+部署

    java计算机毕业设计医疗健康管理平台会员管理子系统源码+数据库+系统+lw文档+部署 java计算机毕业设计医疗健康管理平台会员管理子系统源码+数据库+系统+lw文档+部署 本源码技术栈: 项目架构 ...

  8. java毕业生设计医疗健康管理平台会员管理子系统计算机源码+系统+mysql+调试部署+lw

    java毕业生设计医疗健康管理平台会员管理子系统计算机源码+系统+mysql+调试部署+lw java毕业生设计医疗健康管理平台会员管理子系统计算机源码+系统+mysql+调试部署+lw 本源码技术栈 ...

  9. Linux设备模型、平台设备驱动、设备树(device tree)、GPIO子系统以及pinctrl子系统介绍

    文章目录 一.Linux设备模型介绍 (1)设备驱动模型总体介绍 (2)设备驱动模型文件表现 (3)设备驱动模型工作原理 [1]总线 [2]设备 [3]驱动 [4]注册流程 二.平台设备驱动介绍 (1 ...

最新文章

  1. 逆序数 UVALive 6508 Permutation Graphs
  2. AWK高级编程 转载
  3. SCI论文写作训练营笔记汇总01_概述+文献检索与管理
  4. Map集合使用get方法返回null抛出空指针异常问题
  5. linux scp 隐藏文件,scp 客户端发现了隐藏 35 年的漏洞
  6. 计算机机房维护与管理,计算机机房的管理与维护.doc
  7. 《CCNet:Criss-Cross Attention for Semantic Segmentation》论文笔记
  8. 控制天象,世间的最强者!
  9. uniapp点击生成商品海报、下载海报、分享海报
  10. 欧姆龙PLC以太网与西门子WINCC通讯
  11. 机器人抓取 三维重建机器人抓取 三维物体匹配
  12. badger框架学习 (一)
  13. LCL 滤波器的特性分析
  14. 内存管理 - mblock算法
  15. 洛阳市计算机学校分布在什么地方,2019年洛阳中小学学区划分最新分布图_洛阳学区划分图...
  16. C语言入门-学习笔记(不定时更新)
  17. LOWORD和HIWORD函数
  18. 分布式文件管理系统FastDFS搭建教程(FastDFS+nginx+fastdfs-nginx-module)
  19. 10个可视化 CSS 工具, 快速生成 CSS 片段
  20. jQuery特效动画

热门文章

  1. 试验箱制冷机组制检修时有关制冷剂的解决方法
  2. 文献计量三大定律之一---洛特卡定律及普赖斯定律
  3. 东华oj1-求长方形的面积和周长C++
  4. ERP系统上线的幸福曲线
  5. 推荐两个小工具MediaInfo 和 netpersec
  6. 初学MVC框架怎么理清思路
  7. 2023游戏开发制作如何选择合适的游戏引擎?看完本文就知道
  8. 不用再为下载而发愁了,提供一款支持115网盘、迅雷、快车、旋风、飞速网盘的专用链接解析出资源的真实地址的软件...
  9. 类似pyinstaller_全网首份Python打包工具Pyinstaller实战指南,如丝滑般体验
  10. 原生JS实现放大镜功能