Power Management开发的一般流程
本文作为一个提纲挈领的介绍性文档,后面会以此展开,逐渐丰富。
开发流程
针对一个PM feature进行开发,设计模型是第一步。模型设计好之后,还要保留参数接口,可以基于这些参数针对特殊个体进行优化。
建立一个可以快速迭代、准确可靠、可量化的验证环境尤其重要。一方面可以验证设计的模型是否有效、正确;另一方面还可以调整找到最适合的参数。
针对嵌入式设备来说,最主要的是达到性能和功耗的平衡:在满足性能要求的前提下,尽量降低功耗。
这就涉及到如何去量化性能(Performance)和功耗(Power)。
量化功耗比较简单,可以通过Power Monitor在测量点获得数据(测量点的确定很重要!);
量化性能就比较复杂了,针对不同的功能模块,需要不同的性能分析工具。
另外,针对不同的模块,可能需要产生特定的workload。
最后,可读性强的统计信息或者可视化图表也更有利于得出分析结果。
以LISA为例,可以使用workload rt-app产生特定调度侧率,运行时间,运行在特定CPU上的线程,保证运行环境一致。
通过devlib可以获得测试过程中的Power Monitor数据。
然后通过IPython脚本在浏览器中生成可视化图表和统计信息。

开发流程
1.设计模型:根据需求在已有框架中设计新的模型(Thermal中的IPA),或者设计一个全新的功耗模型(如EAS)。目前阶段主要是跟踪追随现有功耗模型。
2.内核实现:基于之前功耗模型,在内核中代码实现。
3.验证环境:建立验证模型的环境,一方面要有量化Performance的工具,另一方面还需要量化Power的工具。
4.模型正确与否?:通过验证环境可以查看模型是否符合预期,如果不符合就重新进行设计。
5.调整模型:根据第4步验证结果,重新调整模型缺陷。
6.优化算法:验证算法是否高效,是否更有效的提升Performance,降低Power。
Android/Linux内核Power Management介绍
Thermal Framework
cpufreq Framework
cpuidle Framework
…
Linux电源管理(1)_整体架构
http://www.wowotech.net/pm_subsystem/pm_architecture.html
Linux电源管理(2)_Generic PM之基本概念和软件架构
http://www.wowotech.net/pm_subsystem/generic_pm_architecture.html
Linux电源管理(3)_Generic PM之Reboot过程
http://www.wowotech.net/pm_subsystem/reboot.html
Linux电源管理(4)_Power Management Interface
http://www.wowotech.net/pm_subsystem/pm_interface.html
Linux电源管理(5)_Hibernate和Sleep功能介绍
http://www.wowotech.net/pm_subsystem/std_str_func.html
Linux电源管理(6)_Generic PM之Suspend功能
http://www.wowotech.net/pm_subsystem/suspend_and_resume.html
Linux电源管理(7)_Wakeup events framework
http://www.wowotech.net/pm_subsystem/wakeup_events_framework.html
Linux电源管理(8)_Wakeup count功能
http://www.wowotech.net/pm_subsystem/wakeup_count.html
Linux电源管理(9)_wakelocks
http://www.wowotech.net/pm_subsystem/wakelocks.html
Linux电源管理(10)_autosleep
http://www.wowotech.net/pm_subsystem/autosleep.html
Linux电源管理(11)_Runtime PM之功能描述
http://www.wowotech.net/pm_subsystem/rpm_overview.html
Linux电源管理(12)_Hibernate功能
http://www.wowotech.net/pm_subsystem/hibernation.html
Linux电源管理(13)_Driver的电源管理
http://www.wowotech.net/pm_subsystem/driver_pm.html
Linux电源管理(14)_从设备驱动的角度看电源管理
http://www.wowotech.net/pm_subsystem/device_driver_pm.html
Linux电源管理(15)_PM OPP Interface
http://www.wowotech.net/pm_subsystem/pm_opp.html
Linux common clock framework(1)_概述
http://www.wowotech.net/pm_subsystem/clk_overview.html
Linux common clock framework(2)_clock provider
http://www.wowotech.net/pm_subsystem/clock_provider.html
Linux common clock framework(3)_实现逻辑分析
http://www.wowotech.net/pm_subsystem/clock_framework_core.html
Linux PM domain framework(1)_概述和使用流程
http://www.wowotech.net/pm_subsystem/pm_domain_overview.html
Linux cpuidle framework(1)_概述和软件架构
http://www.wowotech.net/pm_subsystem/cpuidle_overview.html
Linux cpuidle framework(2)_cpuidle core
http://www.wowotech.net/pm_subsystem/cpuidle_core.html
Linux cpuidle framework(3)_ARM64 generic CPU idle driver
http://www.wowotech.net/pm_subsystem/cpuidle_arm64.html
Linux cpuidle framework(4)_menu governor
http://www.wowotech.net/pm_subsystem/cpuidle_menu_governor.html
Linux PM QoS framework(1)_概述和软件架构
http://www.wowotech.net/pm_subsystem/pm_qos_overview.html
Linux PM QoS framework(2)_PM QoS class
http://www.wowotech.net/pm_subsystem/pm_qos_class.html
Linux PM QoS framework(3)_per-device PM QoS
http://www.wowotech.net/pm_subsystem/per_device_pm_qos.html
Linux power supply class(1)_软件架构及API汇整
http://www.wowotech.net/pm_subsystem/psy_class_overview.html
Linux Regulator Framework(1)_概述
http://www.wowotech.net/pm_subsystem/regulator_framework_overview.html
Linux Regulator Framework(2)_regulator driver
http://www.wowotech.net/pm_subsystem/regulator_driver.html
Linux CPU core的电源管理(1)_概述
http://www.wowotech.net/pm_subsystem/cpu_core_pm_overview.html
Linux CPU core的电源管理(2)_cpu topology
http://www.wowotech.net/pm_subsystem/cpu_topology.html
Linux CPU core的电源管理(3)_cpu ops
http://www.wowotech.net/pm_subsystem/cpu_ops.html
Linux CPU core的电源管理(5)_cpu control及cpu hotplug
http://www.wowotech.net/pm_subsystem/cpu_hotplug.html
linux cpufreq framework(1)_概述
http://www.wowotech.net/pm_subsystem/cpufreq_overview.html
Linux cpufreq framework(2)_cpufreq driver
http://www.wowotech.net/pm_subsystem/cpufreq_driver.html
linux cpufreq framework(3)_cpufreq core
http://www.wowotech.net/pm_subsystem/cpufreq_core.html
linux cpufreq framework(4)_cpufreq governor
http://www.wowotech.net/pm_subsystem/cpufreq_governor.html
linux cpufreq framework(5)_ARM big Little driver
http://www.wowotech.net/pm_subsystem/arm_big_little_driver.html
Linux进程冻结技术
http://www.wowotech.net/pm_subsystem/237.html
Common Clock Framework系统结构
http://www.wowotech.net/pm_subsystem/ccf-arch.html
Android Power HAL
开发工具介绍
《PyVISA介绍》
…
Power Management开发的一般流程的更多相关文章
- Linux下Power Management开发总结
本文作为一个提纲挈领的介绍性文档,后面会以此展开,逐渐丰富. 1. 前言 在 <开发流程>中介绍了PM开发的一般流程,重点是好的模型.简单有效的接口参数.可量化的测试环境以及可独性强的输出 ...
- Zephyr的Power Management
1 关于Zephyr Zephyr是Linux基金会维护的微内核项目,来源于WindRiver向Zephyr捐赠的Rocket RTOS内核.主要用于开发针对物联网设备的实时操作系统. Zephyr操 ...
- 简单几招助您加速 ARM 容器应用开发和测试流程
随着5G时代的临近,低延迟网络.AI硬件算力提升.和智能化应用快速发展,一个万物智联的时代必将到来.我们需要将智能决策.实时处理能力从云延展到边缘和IoT设备端.阿里云容器服务推出了边缘容器,支持云- ...
- Git 分支-利用分支进行开发的工作流程
3.4 Git 分支 - 利用分支进行开发的工作流程 利用分支进行开发的工作流程 现在我们已经学会了新建分支和合并分支,可以(或应该)用它来做点什么呢?在本节,我们会介绍一些利用分支进行开发的工作流程 ...
- cocos2d-x 3.11 游戏开发环境搭建流程
cocos2d-x 3.11.1 游戏开发环境搭建流程 1. 准备下面的软件 1) Windows7 64Bit+ VS2013 (VC++) 这个不用多说. 2) cocos2d-x-3.11.1. ...
- Grunt搭建自动化web前端开发环境--完整流程
Grunt搭建自动化web前端开发环境-完整流程 jQuery在使用grunt,bootstrap在使用grunt,百度UEditor在使用grunt,你没有理由不学.不用! 1. 前言 各位web前 ...
- 微信小程序开发的基本流程
微信小程序开发的基本流程 一,微信小程序简介 1,微信小程序简称小程序,张小龙在微信公开课 Pro 上发布的小程序正式上线,时间是2017年1月9日. 2,微信小程序这个词可以分解为“微信”和“小程序 ...
- APP开发的基本流程
一个独立App开发人的自白:做APP就是一场赌局,你要会押注 下面我们就直接来看下APP从业者必知的整个APP开发标准流程. 一般的APP开发及上线流程 步骤如下: 首先,制作一款APP,必须要有相关 ...
- 开发安卓安装流程(codorva+ionic)
开发安卓安装流程 0 安装操作系统 Win10 用户名称尽量英文字母加数字,避免编码问题 1 安装Java sdk 1.8.0_45 所需文件 jdk-8u45-windows-x64 1. ...
随机推荐
- JavaScript 垃圾回收
在公司经常会听到大牛们讨论时说道内存泄露神马的,每每都惊羡不已,最近精力主要用在了Web 开发上,读了一下<JavaScript高级程序设计>(书名很唬人,实际作者写的特别好,由浅入深)了 ...
- iOS UINavigationController(内容根据iOS编程编写)
我们知道 UITabBarController 对象,可以通过使用该对象,用户可以切换不同的屏幕.当要切换的各个屏幕之间没有相互依存关系的时候,该对象可以很好的完成任务.但是当多个屏幕互有关系的时候, ...
- oracle运算符
单引号('): 在Oracle中,应该只运用单引号将文本和字符和日期括起来,不能运用引号(包括单双引号)将数字括起来. 双引号("): 在Oracle中,单双引号意思不同.双引号被用来将包含 ...
- SqlDateTime overflow. Must be between 1/1/1753 12:00:00 AM and 12/31/9999 11:59:59 PM.
相信很多人进行数据存储时,会遇上如标题的异常错误. 其实也不算上一个错误. 当你的程序中有宣告一个字段的数据类型为DateTime时,但你又没有赋值给它,就进行存储时,它就会得到这样一个结果. 看看下 ...
- Razor 语法初级使用,不断更新此文章
有兴趣的可以看看菜鸟教程的 http://www.runoob.com/aspnet/razor-cs-loops.html 1.ViewData展示登陆的Session信息 Controller ...
- c#使用Split分割换行符 \r\n
c# 使用Split分割 换行符,方法如下(其余方法有空再添加): string str = "aa" + "\r\n" + "bb"; ...
- 分金币 bzoj 3293
分金币(1s 128M) coin [问题描述] 圆桌上坐着n个人,每人有一定数量的金币,金币总数能被n整除.每个人可以给他左右相邻的人一些金币,最终使得每个人的金币数目相等.你的任务是求出被转手的 ...
- openresty 前端开发入门三之JSON篇
这章主要介绍一下,lua怎么返回一个json字符串,怎么把一个table转成json字符串,又怎么把一个json字符串转成json 其实很简答,直接使用cjson库的encode.decode方法即可 ...
- linux vi 命令大全
进入vi的命令 vi filename :打开或新建文件,并将光标置于第一行首 vi +n filename :打开文件,并将光标置于第n行首 vi + filename :打开文件,并将光标置于最后 ...
- 高效 Java Web 开发框架 JessMA v3.4.1
JessMA 是功能完备的高性能 Full-Stack Web 应用开发框架,内置可扩展的 MVC Web 基础架构和 DAO 数据库访问组件(内部已提供了 Hibernate.MyBatis 与 J ...