<![CDATA[蜗窝科技]]> http://xmgrc.com/ zh-cn www.emlog.net Linux reset framework http://xmgrc.com/pm_subsystem/reset_framework.html 快乐赛车,快乐赛车开奖历史,快乐赛车开奖记录 大家都知道,复杂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等设计思想的理解,因此本文将对其进行一个简单的罗列和总结。

阅读全文>>]]>
Fri, 01 Sep 2017 02:46:14 +0000 wowo http://xmgrc.com/pm_subsystem/reset_framework.html
系统休眠(System Suspend)和设备中断处理 http://xmgrc.com/pm_subsystem/suspend-irq.html 阅读全文>>]]> Fri, 21 Apr 2017 04:02:24 +0000 linuxer http://xmgrc.com/pm_subsystem/suspend-irq.html Common Clock Framework系统结构 http://xmgrc.com/pm_subsystem/ccf-arch.html 之前,wowo同学已经发表了关于CCF(Common Clock Framework)的三份文档,相信大家对CCF有一定的了解了,本文就是在阅读那三份文档的基础上,针对Linux 4.4.6内核的内核代码实现,记录自己对CCF的理解,并对CCF进行系统结构层面的归纳和整理。

快乐赛车,快乐赛车开奖历史,快乐赛车开奖记录 本文内容包括三个部分,第二章给出了整个CCF相关的block diagram图,随后在第三章对各个模块进行功能层面的描述。最后,第四章给出了各个block之间的接口描述。

快乐赛车,快乐赛车开奖历史,快乐赛车开奖记录 另外,在阅读CCF代码的过程中,我准备用两份文档来分享我对CCF的理解。这一份是系统结构,另外一份是逻辑解析。

阅读全文>>]]>
Thu, 21 Apr 2016 11:23:38 +0000 linuxer http://xmgrc.com/pm_subsystem/ccf-arch.html
Linux进程冻结技术 http://xmgrc.com/pm_subsystem/237.html 什么是进程冻结

进程冻结技术(freezing of tasks)是指在系统hibernate或者suspend的时候,将用户进程和部分内核线程置于“可控”的暂停状态。

为什么需要冻结技术

假设没有冻结技术,进程可以在任意可调度的点暂停,而且直到cpu_down快乐赛车,快乐赛车开奖历史,快乐赛车开奖记录才会暂停并迁移。这会给系统带来很多问题:

阅读全文>>]]>
Tue, 24 Nov 2015 07:01:44 +0000 itrocker http://xmgrc.com/pm_subsystem/237.html
linux cpufreq framework(5)_ARM big Little driver http://xmgrc.com/pm_subsystem/arm_big_little_driver.html 快乐赛车,快乐赛车开奖历史,快乐赛车开奖记录 也许大家会觉得奇怪:为什么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:本文很多理论性的表述,或多或少的理解并翻译自:“”,感兴趣的读者可以自行阅读。

注2:本文基于内核,其它版本内核可能会稍有不同。

阅读全文>>]]>
Tue, 10 Nov 2015 14:04:33 +0000 wowo http://xmgrc.com/pm_subsystem/arm_big_little_driver.html