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电源管理子系统,电源管理子系统的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Ajax!从入门到入土
- 下一篇: 信息时代电子阅览室服务