自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(54)
  • 资源 (5)
  • 收藏
  • 关注

转载 vi(vim)键盘图及其基本命令

vi(vim)键盘图及其基本命令 进入vivi filename                打开或新建文件,并将光标置于第一行首vi +n filename           打开文件,并将光标置于第 n行首vi + filename             打开文件,并将光标置于最后一行首vi -r filename            在上次正用 vi编

2017-12-28 17:30:43 721

转载 Linux电源管理(10)_autosleep

1. 前言Autosleep也是从Android wakelocks补丁集中演化而来的(Linux电源管理(9)_wakelocks),用于取代Android wakelocks中的自动休眠功能。它基于wakeup source实现,从代码逻辑上讲,autosleep是一个简单的功能,但背后却埋藏着一个值得深思的话题:计算机的休眠(通常是STR、Standby、Hibernate等

2017-12-17 12:22:52 564

转载 Linux电源管理(9)_wakelocks

1. 前言wakelocks是一个有故事的功能。wakelocks最初出现在Android为linux kernel打的一个补丁集上,该补丁集实现了一个名称为“wakelocks”的系统调用,该系统调用允许调用者阻止系统进入低功耗模式(如idle、suspend等)。同时,该补丁集更改了Linux kernel原生的电源管理执行过程(kernel/power/main.c中的sta

2017-12-17 12:22:29 895

转载 Linux电源管理(8)_Wakeup count功能

1. 前言Wakeup count是Wakeup events framework的组成部分,用于解决“system suspend和system wakeup events之间的同步问题”。本文将结合“Linux电源管理(6)_Generic PM之Suspend功能”和“Linux电源管理(7)_Wakeup events framework”两篇文章,分析wakeup count

2017-12-17 12:22:14 1534

转载 Linux电源管理(7)_Wakeup events framework

1.  前言本文继续“Linux电源管理(6)_Generic PM之Suspend功能”中有关suspend同步以及PM wakeup的话题。这个话题,是近几年Linux kernel最具争议的话题之一,在国外Linux开发论坛,经常可以看到围绕该话题的辩论。辩论的时间跨度和空间跨度可以持续很长,且无法达成一致。wakeup events framework是这个话题的一个临时性

2017-12-17 12:22:00 1429

转载 Linux电源管理(6)_Generic PM之Suspend功能

1. 前言Linux内核提供了三种Suspend: Freeze、Standby和STR(Suspend to RAM),在用户空间向”/sys/power/state”文件分别写入”freeze”、”standby”和”mem”,即可触发它们。内核中,Suspend及Resume过程涉及到PM Core、Device PM、各个设备的驱动、Platform dependent PM、CP

2017-12-17 12:21:50 1033

转载 Linux电源管理(5)_Hibernate和Sleep功能介绍

1. 前言Hibernate和Sleep两个功能是Linux Generic PM的核心功能,它们的目的是类似的:暂停使用——>保存上下文——>关闭系统以节电········>恢复系统——>恢复上下文——>继续使用。本文以内核向用户空间提供的接口为突破口,从整体上对这两个功能进行介绍,并会在后续的文章中,分析它们的实现逻辑和执行动作。顺便感概一下,虽然这些机制在Linux系

2017-12-17 12:21:36 1414

转载 Linux电源管理(4)_Power Management Interface

1. 前言Linux电源管理中,相当多的部分是在处理Hibernate、Suspend、Runtime PM等功能。而这些功能都基于一套相似的逻辑,即“Power management interface”。该Interface的代码实现于“include/linux/pm.h”、“drivers/base/power/main.c”等文件中。主要功能是:对下,定义Device PM相关的

2017-12-17 12:21:24 500

转载 Linux电源管理(3)_Generic PM之Reboot过程

1. 前言在使用计算机的过程中,关机和重启是最先学会的两个操作。同样,这两个操作在Linux中也存在,称作shutdown和restart。这就是本文要描述的对象。在Linux Kernel中,主流的shutdown和restart都是通过“reboot”系统调用(具体可参考kernel/sys.c)来实现的,这也是本文使用“Generic PM之Reboot过程”作为标题的原因。

2017-12-17 12:21:16 446

转载 Linux电源管理(2)_Generic PM之基本概念和软件架构

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

2017-12-17 12:20:29 728

转载 Linux电源管理(1)_整体架构

1. 前言在这个世界中,任何系统的运转都需要能量。如树木依靠光能生长,如马儿依靠食物奔跑,如计算机系统依靠电能运行。而能量的获取是有成本的,因此如果能在保证系统运转的基础上,尽量节省对能量的消耗,就会大大提升该系统的生存竞争力。这方面,大自然已经做的很好了,如植物的落叶,如动物的冬眠,等等。而在计算机的世界里(这里以运行Linux OS的嵌入式系统为例),称作电源管理(Power Mana

2017-12-17 12:19:44 1091

转载 Linux电源管理(11)_Runtime PM之功能描述

1. 前言终于可以写Runtime PM(后面简称RPM)了,说实话,蜗蜗有点小激动。因为从个人的角度讲,我很推崇使用RPM进行日常的动态电源管理,而不是suspend机制。软件工程的基本思想就是模块化:高内聚和低耦合。通俗地讲呢,就是“各人自扫门前雪”,尽量扫好自己的(高内聚),尽量不和别人交互(低耦合)。而RPM正体现了这一思想:每个设备(包括CPU)都处理好自身的电源管理工作

2017-12-16 10:43:01 1799

转载 Linux common clock framework(1)_概述

1. 前言common clock framework是用来管理系统clock资源的子系统,根据职能,可分为三个部分:1)向其它driver提供操作clocks的通用API。2)实现clock控制的通用逻辑,这部分和硬件无关。3)将和硬件相关的clock控制逻辑封装成操作函数集,交由底层的platform开发者实现,由通用逻辑调用。因此,蜗蜗会将clock

2017-12-16 10:42:10 255

转载 Linux common clock framework(2)_clock provider

1. 前言本文接上篇文章,从clock driver的角度,分析怎么借助common clock framework管理系统的时钟资源。换句话说,就是怎么编写一个clock driver。由于kernel称clock driver为clock provider(相应的,clock的使用者为clock consumer),因此本文遵循这个规则,统一以clock provider命名。

2017-12-16 10:39:35 273

转载 Linux PM domain framework(1)_概述和使用流程

1. 前言在复杂的片上系统(SOC)中,设计者一般会将系统的供电分为多个独立的block,这称作电源域(Power Domain),这样做有很多好处,例如:1)将不同功能模块的供电分开,减小相互之间的干扰(如模拟和数字分开)。2)不同功能所需的电压大小不同:小电压能量损耗低,但对信号质量的要求较高;大电压能量损耗高,对信号质量的要求较低。因此可以根据实际情况,使用不同的电压

2017-12-16 10:38:28 2518 1

转载 Linux common clock framework(3)_实现逻辑分析

1. 前言前面两篇clock framework的分析文章,分别从clock consumer和clock provider的角度,介绍了Linux kernel怎么管理系统的clock资源,以及device driver怎么使用clock资源。本文将深入到clock framework的内部,分析相关的实现逻辑。注:本文使用的kernel版本为linux-3.10.29。虽然

2017-12-16 10:37:34 805

转载 Linux cpuidle framework(1)_概述和软件架构

1. 前言在计算机系统中,CPU的功能是执行程序,总结起来就是我们在教科书上学到的:取指、译码、执行。那么问题来了,如果没有程序要执行,CPU要怎么办?也许您会说,停掉就是了啊。确实,是要停掉,但何时停、怎么停,却要仔细斟酌,因为实际的软硬件环境是非常复杂的。我们回到Linux kernel上,Linux系统中,CPU被两类程序占用:一类是进程(或线程),也称进程上下文;另一类是各

2017-12-16 10:36:22 499

转载 Linux电源管理(12)_Hibernate功能

出于省电和快速开机的需求, Hibernation经常被应用到Laptop和移动终端上,本文就简单讲讲Hibernation的一种实现实现方法,SWSUSP( Swap Suspend),其实swsusp从2.6开始就已经被引入到内核版本树中了,所以如果想分析swsusp的代码实现的话,还是挺方便的,只要有有2.6之后的内核代码即可。本文不会过分深入分析代码,但文章最后会给出h

2017-12-16 09:58:39 422

转载 Linux电源管理(13)_Driver的电源管理

首先,回想一下wowo电源管理系列文章中提到的几个PM特性:A. WakeUP Count/WakeUp SourceB. Wake LockC. Auto SleepD. Runtime Suspend这篇文章就简单简单整理一下以上特性的在Driver中的使用场景,理解可能有偏差,大家多指教。来看看这个几个特性的实现分别在内核代码树的位置:

2017-12-16 09:57:49 536

转载 Linux PM QoS framework(1)_概述和软件架构

1. 前言QOS为Quality Of Service(服务质量)的简称,对PM QoS而言,表示Linux kernel电源管理相关的服务质量。那到底什么是服务质量呢?我们知道,Linux PM的主要功能,是节省功耗,但同时,会付出一定的性能代价,例如延迟(latency)增加、吞吐量(throughput)下降。可以把PM当作一种服务,把它对性能的影响,类比为服务的质量(QoS

2017-12-16 09:56:54 302

转载 Linux cpuidle framework(2)_cpuidle core

1. 前言cpuidle core是cpuidle framework的核心模块,负责抽象出cpuidle device、cpuidle driver和cpuidle governor三个实体,并提供如下功能(可参考“Linux cpuidle framework(1)_概述和软件架构”中的软件架构):1)向底层的cpuidle driver模块提供cpudile device和c

2017-12-16 09:56:12 831

转载 Linux cpuidle framework(3)_ARM64 generic CPU idle driver

1. 前言本文以ARM64平台下的cpuidle driver为例,说明怎样在cpuidle framework的框架下,编写cpuidle driver。另外,本文在描述cpuidle driver的同时,会涉及到CPU hotplug的概念,因此也可作为CPU hotplug的引子。2. arm64_idle_initARM64 generic CPU idle drive

2017-12-16 09:54:04 778

转载 Linux cpuidle framework(4)_menu governor

1. 前言本文以menu governor为例,进一步理解cpuidle framework中governor的概念,并学习governor的实现方法。在当前的kernel中,有2个governor,分别为ladder和menu(蜗蜗试图理解和查找,为什么会叫这两个名字,暂时还没有答案)。ladder在periodic timer tick system中使用,menu在tickl

2017-12-16 09:53:05 547

转载 Linux PM QoS framework(2)_PM QoS class

1. 前言回顾上一篇文章(Linux PM QoS framework(1)_概述和软件架构),PM QoS framework抽象出4个系统级别的QoS constraint(统称为PM QoS class),分别是cpu&dma latency、network latency、network throughput和memory bandwidth。并提供一系列的接口,动态的搜集、整

2017-12-16 09:51:46 290

转载 Linux PM QoS framework(3)_per-device PM QoS

1. 前言per-device PM QoS是针对指定设备的QoS framework,背后的思考如下:1)resume_latency在Runtime PM的框架下,当device的引用计数减为0的时候,RPM会suspend该device。不过,device进入suspend状态以及从suspend状态resume是需要消耗时间的(相关信息保存在pm domain中

2017-12-16 09:51:03 247

转载 Linux电源管理(14)_从设备驱动的角度看电源管理

1. 前言相信工作稍微久一点的linux驱动工程师都深有体会:在旧时光里,实现某一个设备的电源管理功能,是非常简单的一件事情。大多数设备都被抽象为platform设备,driver只需要提供suspend/resume/shutdown等回调函数,并注册到kernel即可。kernel会在系统电源状态切换的过程中,调用driver提供的回调函数,切换设备的电源状态。但是在新

2017-12-16 09:50:10 794

转载 Linux power supply class(1)_软件架构及API汇整

1. 前言power supply class为编写供电设备(power supply,后面简称PSY)的驱动提供了统一的框架,功能包括:1)抽象PSY设备的共性,向用户空间提供统一的API。2)为底层PSY驱动的编写,提供简单、统一的方式。同时封装并实现公共逻辑,驱动工程师只需把精力集中在和硬件相关的部分即可。本文将从设计思路、软件架构、API说明以及怎么编写po

2017-12-16 09:49:27 1158

转载 Linux Regulator Framework(1)_概述

1. 前言Regulator,中文名翻译为“稳定器”,在电子工程中,是voltage regulator(稳压器)或者current regulator(稳流器)的简称,指可以自动维持恒定电压(或电流)的装置。voltage regulator最早应用于功放电路中,主要用于滤除电源纹波(100或者120Hz)和噪声,以及避免“输出电压随负载的变化而变化”的情况。后来,随着IC级别的

2017-12-16 09:48:30 1872

转载 Linux Regulator Framework(2)_regulator driver

1. 前言本文从regulator driver的角度,描述怎样基于regulator framework编写regulator驱动。同时,以此为契机,学习、理解regulator有关的物理特性,以便能够更好的使用它们。2. regulator driver的实现步骤2.1 确定系统中regulator有关的硬件组成提起硬件,最好能有个例子,好在有device tree

2017-12-16 09:40:05 1128

转载 Linux CPU core的电源管理(1)_概述

1. 前言在SMP(Symmetric Multi-Processing)流行起来之前的很长一段时间,Linux kernel的电源管理工作主要集中在外部设备上,和CPU core相关的,顶多就是CPU idle。但随着SMP的普及,一个系统中可用的CPU core越来越多,这些core的频率越来越高,处理能力越来越强,功耗也越来越大。因此,CPU core有关的电源管理,在系统设计中

2017-12-16 09:36:53 1902

转载 Linux CPU core的电源管理(2)_cpu topology

1. 前言在“Linux CPU core的电源管理(1)_概述”中,我们多次提到SMP、CPU core等概念,虽然硬着头皮写下去了,但是蜗蜗对这些概念总有些似懂非懂的感觉。它们和CPU的进化过程息息相关,最终会体现在CPU topology(拓扑结构)上。因此本文将以CPU topology为主线,介绍CPU有关(主要以ARM CPU为例)的知识。另外,CPU topolo

2017-12-16 09:36:01 447

转载 Linux电源管理(15)_PM OPP Interface

1. 前言本文是分析cpufreq framework之前的一篇前置文章,用于介绍Linux电源管理中的Operating Performance Point (OPP)接口。OPP是一个单纯的软件library,用于归纳、管理各个硬件模块的、可工作的{频率}/ {电压}组合。它不涉及任何硬件,也没有复杂的逻辑,再加上Kernel document(Documentation/po

2017-12-16 09:35:05 1055

转载 linux cpufreq framework(1)_概述

1. 前言linux kernel主要通过三类机制实现SMP系统CPU core的电源管理功能:1)cpu hotplug。根据应用场景,enable/disable CPU core,具体可参考“Linux CPU core的电源管理(4)_cpu control”。2) cpuidle framework。在没有进程调度的时候,让CPU core进入idle状态,具

2017-12-16 09:34:11 448

转载 Linux CPU core的电源管理(5)_cpu control及cpu hotplug

1. 前言由“Linux CPU core的电源管理(1)_概述”的描述可知,kernel cpu control位于“.\kernel\cpu.c”中,是一个承上启下的模块,负责屏蔽arch-dependent的实现细节,向上层软件提供控制CPU core的统一API(主要包括cpu_up/cpu_down等接口的实现)。本文将基于这些API,从上到下,分析CPU core从启动到关

2017-12-14 10:59:38 1828

转载 Linux cpufreq framework(2)_cpufreq driver

1. 前言本文从平台驱动工程师的角度,介绍怎么编写cpufreq驱动。注1:本文基于linux-3.18-rc4内核,其它版本内核可能会稍有不同。2. cpufreq driver的编写步骤cpufreq driver主要完成平台相关的CPU频率/电压的控制,它在cpufreq framework中是非常简单的一个模块,编写步骤包括:1)平台相关的初始化动作

2017-12-14 10:58:53 320

转载 Linux CPU core的电源管理(3)_cpu ops

1. 前言由“ARMv8-a架构简介”中有关的介绍可知,ARMv8(包括ARMv7的一些扩展)引入了Virtualization、Security等概念。在这些概念之下,传统的CPU boot、shutdown、reset、suspend/resume等操作,不再那么简单和单纯。因此,ARM将这些底层操作抽象为一些operations,在以统一的方式向上层软件提供API的同时,可以根据不同

2017-12-14 10:58:04 1155

转载 linux cpufreq framework(3)_cpufreq core

1. 前言前文(Linux cpufreq framework(2)_cpufreq driver)从平台驱动工程师的角度,简单的介绍了编写一个cpufreq driver的大概步骤。但要更深入理解、更灵活的使用,必须理解其内部的实现逻辑。因此,本文将从cpufreq framework core的角度,对cpufreq framework的内部实现做一个简单的分析。2. 提供

2017-12-14 10:57:24 481

转载 linux cpufreq framework(4)_cpufreq governor

1. 前言由“linux cpufreq framework(3)_cpufreq core”的描述可知,cpufreq policy负责设定cpu调频的一个大致范围,而cpu的具体运行频率,则需要由相应的cufreq governor决定(可自行调节频率的CPU除外,后面会再详细介绍)。那到底什么是cpufreq governor?它的运行机制是什么?这就是本文要描述的内容。

2017-12-14 10:56:34 272

转载 linux cpufreq framework(5)_ARM big Little driver

1. 前言也许大家会觉得奇怪:为什么Linux kernel把对ARM big·Lttile的支持放到了cpufreq的框架中?众所周知,ARM的big·Little架构,也称作HMP(具体可参考“Linux CPU core的电源管理(2)_cpu topology”中相关的介绍),通过在一个chip中封装两种不同类型的ARM core的方式,达到性能和功耗的平衡。这两类ARM

2017-12-14 10:55:09 526

转载 Linux进程冻结技术

1 什么是进程冻结进程冻结技术(freezing of tasks)是指在系统hibernate或者suspend的时候,将用户进程和部分内核线程置于“可控”的暂停状态。2 为什么需要冻结技术假设没有冻结技术,进程可以在任意可调度的点暂停,而且直到cpu_down才会暂停并迁移。这会给系统带来很多问题:(1)有可能破坏文件系统。在系统创建hibernate image到cpu do

2017-12-14 10:53:40 873

java eclipse1

java eclipse1

2014-12-28

java eclipse2

java eclipse2

2014-12-28

java eclipse3

eclipse3

2014-12-28

linux那些事儿

linux那些事儿 usb core,usb hub ,ehci ,ohci,uhci

2013-04-17

S3C2440A触摸屏驱动分析

S3C2440A触摸屏驱动分析,包括触摸屏分类,原理,源码

2011-10-07

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除