Files
MuditaOS/module-sys/SystemManager/doc/data/CpuFrequencyUpdate.svg
Maciej Gibowicz 8d79f27d51 [EGD-5324] Add Low Power documentation
Documentation describing the Low Power control algorithm and
synchronization with the system using dedicated sentinels and drivers.
2021-02-16 09:03:21 +01:00

31 lines
9.0 KiB
XML

<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="339px" preserveAspectRatio="none" style="width:883px;height:339px;" version="1.1" viewBox="0 0 883 339" width="883px" zoomAndPan="magnify"><defs><filter height="300%" id="f4w29l22zrjdz" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.0"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.0" dy="4.0" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><line style="stroke: #A80036; stroke-width: 1.0;" x1="68" x2="68" y1="38.2969" y2="106.5625"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,4.0;" x1="68" x2="68" y1="106.5625" y2="147.3672"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="68" x2="68" y1="147.3672" y2="299.0313"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="308.5" x2="308.5" y1="38.2969" y2="106.5625"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,4.0;" x1="308.5" x2="308.5" y1="106.5625" y2="147.3672"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="308.5" x2="308.5" y1="147.3672" y2="299.0313"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="505.5" x2="505.5" y1="38.2969" y2="106.5625"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,4.0;" x1="505.5" x2="505.5" y1="106.5625" y2="147.3672"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="505.5" x2="505.5" y1="147.3672" y2="299.0313"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="627.5" x2="627.5" y1="38.2969" y2="106.5625"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,4.0;" x1="627.5" x2="627.5" y1="106.5625" y2="147.3672"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="627.5" x2="627.5" y1="147.3672" y2="299.0313"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="735.5" x2="735.5" y1="38.2969" y2="106.5625"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,4.0;" x1="735.5" x2="735.5" y1="106.5625" y2="147.3672"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="735.5" x2="735.5" y1="147.3672" y2="299.0313"/><rect fill="#FEFECE" filter="url(#f4w29l22zrjdz)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="117" x="8" y="3"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="103" x="15" y="22.9951">PowerManager</text><rect fill="#FEFECE" filter="url(#f4w29l22zrjdz)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="117" x="8" y="298.0313"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="103" x="15" y="318.0264">PowerManager</text><rect fill="#FEFECE" filter="url(#f4w29l22zrjdz)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="106" x="253.5" y="3"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="92" x="260.5" y="22.9951">CpuGovernor</text><rect fill="#FEFECE" filter="url(#f4w29l22zrjdz)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="106" x="253.5" y="298.0313"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="92" x="260.5" y="318.0264">CpuGovernor</text><rect fill="#FEFECE" filter="url(#f4w29l22zrjdz)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="118" x="444.5" y="3"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="104" x="451.5" y="22.9951">cellularSentinel</text><rect fill="#FEFECE" filter="url(#f4w29l22zrjdz)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="118" x="444.5" y="298.0313"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="104" x="451.5" y="318.0264">cellularSentinel</text><rect fill="#FEFECE" filter="url(#f4w29l22zrjdz)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="99" x="576.5" y="3"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="85" x="583.5" y="22.9951">eInkSentinel</text><rect fill="#FEFECE" filter="url(#f4w29l22zrjdz)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="99" x="576.5" y="298.0313"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="85" x="583.5" y="318.0264">eInkSentinel</text><rect fill="#FEFECE" filter="url(#f4w29l22zrjdz)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="88" x="689.5" y="3"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="74" x="696.5" y="22.9951">DriverPWM</text><rect fill="#FEFECE" filter="url(#f4w29l22zrjdz)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="88" x="689.5" y="298.0313"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="74" x="696.5" y="318.0264">DriverPWM</text><polygon fill="#A80036" points="296.5,65.4297,306.5,69.4297,296.5,73.4297,300.5,69.4297" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="68.5" x2="302.5" y1="69.4297" y2="69.4297"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="216" x="75.5" y="64.3638">GetMinimumFrequencyRequested</text><polygon fill="#A80036" points="79.5,94.5625,69.5,98.5625,79.5,102.5625,75.5,98.5625" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" x1="73.5" x2="307.5" y1="98.5625" y2="98.5625"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="127" x="85.5" y="93.4966">minimumFrequency</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="128" x="338" y="130.7729">CPU frequency change</text><polygon fill="#A80036" points="296.5,164.5,306.5,168.5,296.5,172.5,300.5,168.5" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="68.5" x2="302.5" y1="168.5" y2="168.5"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="173" x="75.5" y="163.4341">CpuFrequencyHasChanged</text><polygon fill="#A80036" points="493.5,193.6328,503.5,197.6328,493.5,201.6328,497.5,197.6328" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="308.5" x2="499.5" y1="197.6328" y2="197.6328"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="173" x="315.5" y="192.5669">CpuFrequencyHasChanged</text><polygon fill="#A80036" points="616,222.7656,626,226.7656,616,230.7656,620,226.7656" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="308.5" x2="622" y1="226.7656" y2="226.7656"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="173" x="315.5" y="221.6997">CpuFrequencyHasChanged</text><polygon fill="#A80036" points="723.5,264.4648,733.5,268.4648,723.5,272.4648,727.5,268.4648" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="628" x2="729.5" y1="268.4648" y2="268.4648"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="75" x="635" y="263.3989">updatePWM</text><path d="M740,239.7656 L740,279.7656 L871,279.7656 L871,249.7656 L861,239.7656 L740,239.7656 " fill="#FBFB77" filter="url(#f4w29l22zrjdz)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M861,239.7656 L861,249.7656 L871,249.7656 L861,239.7656 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="98" x="746" y="256.8325">Critical section!</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="110" x="746" y="271.9653">mutex necessary</text><!--MD5=[6c4788b841e800cf870b69c0ce829c52]
@startuml
PowerManager -> CpuGovernor : GetMinimumFrequencyRequested
CpuGovernor - -> PowerManager : minimumFrequency
...CPU frequency change...
PowerManager -> CpuGovernor : CpuFrequencyHasChanged
CpuGovernor -> cellularSentinel : CpuFrequencyHasChanged
CpuGovernor -> eInkSentinel : CpuFrequencyHasChanged
eInkSentinel -> DriverPWM : updatePWM
note right
Critical section!
mutex necessary
end note
@enduml
PlantUML version 1.2019.11(Sun Sep 22 12:02:15 CEST 2019)
(EPL source distribution)
Java Runtime: OpenJDK Runtime Environment
JVM: OpenJDK 64-Bit Server VM
Java Version: 14.0.2+12-46
Operating System: Linux
Default Encoding: UTF-8
Language: pl
Country: PL
--></g></svg>