Linux低功耗管理-new幻灯片

上传人:每**** 文档编号:119515833 上传时间:2022-07-15 格式:PPT 页数:69 大小:258KB
收藏 版权申诉 举报 下载
Linux低功耗管理-new幻灯片_第1页
第1页 / 共69页
Linux低功耗管理-new幻灯片_第2页
第2页 / 共69页
Linux低功耗管理-new幻灯片_第3页
第3页 / 共69页
资源描述:

《Linux低功耗管理-new幻灯片》由会员分享,可在线阅读,更多相关《Linux低功耗管理-new幻灯片(69页珍藏版)》请在装配图网上搜索。

1、2021/8/21基于SEP4020的嵌入式Linux低功耗管理2021/8/221.嵌入式系统低功耗的必要性o是sep4020的需要o是整个嵌入式系统发展的趋势o更是整个大环境的趋势2021/8/232.嵌入式系统功耗来源分析 ocpuoSdramoLcd背光oLcdo音频,网卡等设备2021/8/24嵌入式系统的低功耗策略o前提:n认为硬件的设计和选型已经确定,不考虑硬件设计上的低功耗策略;n此时功耗水平在极大程度上取决于软件的设计;n本课题的研究方向主要是从系统软件的角度来实现低功耗。2021/8/25总体方针1:o充分利用sep4020的硬件特性:因为最终耗能的是硬件,所以在考虑采用软

2、件方法降低功耗的时候,要充分考虑硬件的功能和性能,即在保障系统实现的基础上怎样组织硬件运作而使功耗降低。全速执行、待机和睡眠等行为都是利用CPU的固有能力。处理器功耗策略处理器功耗策略2021/8/26总体方针2:o充分提高平台设备的使用效率正如我们在之前如提到的,所谓一个嵌入式统,真正耗电的部分不仅仅是集中在cpu,一些外围设备更是主要的耗电大户,比如我们之前讲到的lcd和背光,如何让这些设备高效的使用也成为系统能够低功耗而需要改进的方面之一。外围设备功耗策略外围设备功耗策略2021/8/27总体方针3:o充分利用Linux的低功耗特性:系统级低功耗设计一般是在操作系统层实现。因为操作系统管

3、理系统所有软硬件资源,并获取系统的各种状态信息,控制硬件设备的状态。因此,在操作系统中实现全局功耗控制是最佳选择。而Linux作为一种优秀的操作系统,自身所带的电源管理及低功耗特性更是我们所需要好好加以利用的。系统功耗策略系统功耗策略2021/8/28SEP4020微处理的硬件特性:o拥有独立的时钟和功耗管理模块pmc;o支持动态变换工作电压;o支持多种工作模式:nNormalnSlownIdlenSleepo支持动态地控制各子模块的时钟源,降低系统的整体功耗2021/8/29对策1:o处理器负荷较轻时,降低处理器的时钟速度;o在处理器没有负载的时候,自动进入idle模式;o在处理器长时间不用

4、时,进入sleep模式;o将处理器所不需要的的模块关闭;2021/8/210对策1需要研究的工作:o如何判断系统负载?相应的策略o由于sleep模式是将外部所有模块关闭,进入SDRAM 的数据自刷新,如何在模块关闭前保存外设状态以便能在wakeup之后仍然能够正常运行?o动态改变系统时钟时,PLL有一定的稳定时间,在这段时间内系统会怎么样?oLinux暂不支持fiq,但是sleep的wakeup的一种最重要的方式就是通过fiq,如何让linux支持这一点?2021/8/211充分提高平台设备的使用效率o 设备驱动程序在处理器和外设之间进行通信,直接对硬件进行操作,可以充分利用硬件的特性。在功耗

5、管理的软件系统中,它也是软件的底层,是以上各层软件的基础。驱动层向上面各层提供函数调用接口,这些函数充分利用外设的功耗模式来降低外设的功耗。2021/8/212对策2:o利用linux驱动系统层面的共同特性,补充电源管理函数,实现暂停,继续等功能。o利用各个驱动所独有的特性进行优化(例:热敏打印,lcd屏的用户层面的策略)o关于耗电大户LCD和背光:LCD:(1)降低LCD的刷新率。降低LCD刷新率后,可以减少SDRAM,总线的使用和减少功耗;(2)在不使用屏幕的时候关闭LCD控制器。背光:背光:在必要的时候降低背光亮度,甚至关闭背光;2021/8/213对策2所需要的工作:o系统接口低功耗部

6、分的支持;o驱动自身低功耗的支持;o外设硬件的支持(比如背光亮度可调节);2021/8/214Linux的低功耗特性:oLinux支持两种电源管理标准:APM(Advanced Power Managememt)和ACPI(Advanced Configuration and Power Interface)。oAPM是传统的高级电源管理方案,目前仍然使用在许多基于Linux便携式设备中;而ACPI则提供了更为灵活的电脑和设备管理接口。o这两个标准不能同时运行。缺省情况下,Linux运行ACPI。但是无论是APM还是ACPI都是基于pc平台的技术,特别是acpi技术暂无用到arm架构上的解决方

7、案。2021/8/215oArm架构能支持的linux电源方案只有apmo其实本质上来说apm也不适用于arm架构,因为APM技术是基于bios的,嵌入式设备没有bios。为了适应这个标准,所以内核为arm系统创建一个虚拟的字符设备与用户空间进行通讯.这就是/arch/arm/kernel/amp.c Linux的低功耗特性2:2021/8/216对策3:o通过利用Linux内核的apm机制,实现系统的挂起(类似pc的睡眠状态),但是也是最能节省系统功耗的一步;o这一部分是整个低功耗中最最复杂的一部分,可以参考一下三星这部分实现的流程:linux内核对S3C2410睡眠模式的支持.mht202

8、1/8/217对策3需要的工作:o这一部分是整个低功耗中最最复杂的一部分,可以参考一下三星这部分实现的流程:linux内核对S3C2410睡眠模式的支持.mht2021/8/218总结:o充分利用sep4020的硬件特性,充分提高平台设备的使用效率,充分利用Linux的低功耗特性这三个部分是紧密结合不可分割的。在每一个功能的实现都会涉及到其他几个部分的内容,预期的目标就是解决所设想的技术点,并将所有的分散的技术组合成一套行之有效的完整的低功耗解决方案。o通过一套完整的测试方案将低功耗的效果实实在在的用数字展示出来。2021/8/219低功耗是一个硬件和软件相结合的综合课题,需要通过非常深入的了

9、解你的硬件平台,并将所有可能的低功耗策略通过软件(驱动,内核,上层应用程序,乃至bootloader的整合)来实现。2021/8/2202009.9.3后总结2021/8/2212.关于apmoApm机制的实现分为两个大部分:电源管理部分和设备驱动部分o设备驱动部分:在调用电源管理部分前先会调用驱动使驱动进入suspend,也就是我们要为每个驱动实现suspend和resume函数o电源管理部分:主要要实现一个结构体:static struct pm_ops pxa_pm_ops=.pm_disk_mode=PM_DISK_FIRMWARE,.prepare=sep4020_pm_prepar

10、e,.enter=sep4020_pm_enter,.finish=sep4020_pm_finish,;2021/8/222Apm(2)o驱动设备部分:(以nandflash为例,需添加以下功能)nstatic int sep4020_nand_suspend(struct platform_device*dev,pm_message_t pm)no切断时钟nnstatic int sep4020_nand_resume(struct platform_device*dev)no重新供给时钟,并初始化硬件n2021/8/223系统低功系统低功耗的实现耗的实现目标在于管理较大的、非常见的重大电

11、源状态改变,目标在于管理较大的、非常见的重大电源状态改变,用于减少产品设备在长时间的空闲之后,减少电源消用于减少产品设备在长时间的空闲之后,减少电源消耗耗。主要实现方式:。主要实现方式:apm技术,系统的挂起技术,系统的挂起/恢复恢复(sleep)cpu级级设备驱动级设备驱动级系统平台级系统平台级通过系统监测将闲置的设备置于省电模式。通过系统监测将闲置的设备置于省电模式。主要实现方式:可以从用户态对主要实现方式:可以从用户态对sys文件目文件目录动态进行单个驱动设备的管理(模块时钟)录动态进行单个驱动设备的管理(模块时钟)通过用户态应用程序对cpu,设备,以及整个系统统一管理,以取得最好的优化

12、策略实现方式:借鉴apmd实现自己的策略cpu的动态管理,目标在于频繁发生、更高的动态管理,目标在于频繁发生、更高粒度的电源状态改变范围之内的管理粒度的电源状态改变范围之内的管理主要实现方式:主要实现方式:idle,动态主频,动态主频 机制策略用户态应用程序2021/8/224cpu级:o已实现任务idle时让cpu进入idle模式:oIdle的深化:n由于在linux中,任务间的调度依靠10ms一次的硬件时钟滴答完成,也就是说每10ms就会产生一次timer的硬件中断。n同时idle进程会被中断唤醒,因此即使系统没有任何负载,处理器还是会以1秒钟100次的频率频繁进出idle模式,这样会大大

13、降低系统在idle模式下的时间,而频繁的处理器工作模式切换也将导致功耗上升。n因此可以修改内核源码,通过牺牲任务的响应速度(将硬件滴答改为100ms)来增大系统处于idle模式的时间,减小系统的功耗。o主频动态管理暂未动2021/8/225设备驱动级o已完成系统与设备驱动接口,能够从用户态(shell终端下就可操作)来单独管理驱动o驱动的管理只使用与平台架构设备,即platform驱动,因此需对一些驱动进行改造(如smc),否则无法实现驱动的电源管理o一些特殊驱动的suspend和resume函数需要仔细商榷,如uart等2021/8/226系统平台级o按照linux电源管理技术中的apm来实

14、现o通过对mini2440开发板的使用已基本摸清系统挂起的整个流程o在sep4020上实现了简单的挂起,成功验证了芯片在操作系统中sleep,并唤醒的功能2021/8/227至2009.10.19进展:2021/8/228o总的来说前阶段的工作主要是走通硬件,基本实现了机制部分的所有功能,包括SEP4020各种工作模式在Linux下的实现,Linux电源管理的接口实现(APM技术)。2021/8/229下一阶段的重心:精细机制部分o现在对机制部分的实现还是比较粗,更多是为了走通硬件,证明能实现,比如在很多驱动部分的suspend,resume中我直接填空的。o对设备驱动层的功耗优化可以再做深层

15、次研究,很多设备芯片支持低功耗模式n例:SDRAM拥有power down模式,DM9161也有相应的power reduce模式。2021/8/230再论cpu_idleoconfig NO_IDLE_HZobool Dynamic tick timerohelpo Select this option if you want to disable continuous timer tickso and have them programmed to occur as required.This option saveso power as the system can remain in

16、idle state for longer.o By default dynamic tick is disabled during the boot,and can beo manually enabled with:o echo 1 /sys/devices/system/timer/timer0/dyn_ticko Alternatively,if you want dynamic tick automatically enabledo during boot,pass dyntick=enable via the kernel command string.o Please note

17、that dynamic tick may affect the accuracy ofo timekeeping on some platforms depending on the implementation.o Currently at least OMAP,PXA2xx and SA11x0 platforms are knowno to have accurate timekeeping with dynamic tick.2021/8/231增加suspend的范围:o不仅是plartform类型的device可以使用电源管理,系统的sys_timer也可以。o没什么大作用,因为

18、sleep本身就是将所有模块时钟关闭的2021/8/232系统低功系统低功耗的实现耗的实现目标在于管理较大的、非常见的重大电源状态改变,目标在于管理较大的、非常见的重大电源状态改变,用于减少产品设备在长时间的空闲之后,减少电源消用于减少产品设备在长时间的空闲之后,减少电源消耗耗。主要实现方式:。主要实现方式:apm技术,系统的挂起技术,系统的挂起/恢复恢复(sleep)cpu级级设备驱动级设备驱动级系统平台级系统平台级通过系统监测将闲置的设备置于省电模式。通过系统监测将闲置的设备置于省电模式。主要实现方式:可以从用户态对主要实现方式:可以从用户态对sys文件目文件目录动态进行单个驱动设备的管理

19、(模块时钟)录动态进行单个驱动设备的管理(模块时钟)通过用户态应用程序对cpu,设备,以及整个系统统一管理,以取得最好的优化策略实现方式:借鉴apmd实现自己的策略cpu的动态管理,目标在于频繁发生、更高的动态管理,目标在于频繁发生、更高粒度的电源状态改变范围之内的管理粒度的电源状态改变范围之内的管理主要实现方式:主要实现方式:idle,动态主频,动态主频 机制策略用户态应用程序用户态应用程序2021/8/233至2009.12.15进展总结o完成了系统级休眠唤醒机制:睡眠时板级电流从270mA锐减至100mA(evb1.5,不开启lcd等耗电模块)o完成了设备驱动级的电源管理的摸索和实现,可

20、通过用户程序或sys目录单独管理设备驱动的开启和关闭。o加入了lcd背光关闭的支持(系统从490mA降为270mA)o新增对cpu变频的支持。2021/8/234Linux动态变频技术o为什么要实现o内核所提供的技术o内核部分需要的工作ocpufreq的客户端程序cpufreqd2021/8/235为什么要实现变频?o虽然cpu在板级中已不是主要的耗电源,但是仍然占着举足轻重的位置o细化功耗管理的颗粒度,为应用程序提供更多的功耗节省机制o可行性论证没有问题:armkiller的nand驱动代码中有变频的实现,自己也实现了变频(cpu,timer,uart),sdram接口已留好2021/8/2

21、36为什么要实现变频2?o对普通的应用,系统可以运行在维持平台运作的最低频率,在有处理任务时,变频机制会自动切换到合适的高主频,并且在任务结束时重回省电的低主频。在打开所有模块时:nSEP4020在运行在88M时板级功耗为:250mAnSEP4020在运行在56M时板级功耗为:215mAnSEP4020在运行在32M时板级功耗为:180mA2021/8/237为什么要实现变频3?o实现的一些工作是我们一直需要去做但是一直没有动力做的n变频会涉及到大量模块的参数的重新配置,作为cpu原厂,我们需要把这些参数彻底掌握n对这些参数的充分理解,能对现有系统进行优化,提升整体系统的效率n使用发现一些参数

22、还是太过保守(sdram,nand),我们的通用配置在系统降为32M时仍能正常工作。2021/8/238Linux动态变频技术o为什么要实现o内核所提供的技术o内核部分需要的工作ocpufreq的客户端程序cpufreqd2021/8/239内核所提供的技术1:o目的:变频技术是指CPU硬件本身支持在不同的频率下运行,系统在运行过程中可以根据随时可能发生变化的系统负载情况动态在这些不同的运行频率之间进行切换,从而达到对性能和功耗做到二者兼顾的目的。o来源:虽然多个处理器生产厂家都提供了对变频技术的支持,但是其硬件实现和使用方法必然存在着细微甚至巨大的差别。这就使得每个处理器生产厂家都需要按照其

23、特殊的硬件实现和使用方法向内核中添加代码,从而让自己产品中的变频技术在 Linux 中得到支持和使用。然而,这种内核开发模式所导致的后果是各个厂家的实现代码散落在 Linux 内核代码树的各个角落里,各种不同的实现之间没有任何代码是共享的,这给内核的维护以及将来添加对新的产品的支持都带来了巨大的开销,并直接导致了 cpufreq 内核子系统的诞生。2021/8/240内核所提供的技术2:cpu freq module(with/sys interface)performancepowersaveuserspaceonmandconservativeSystem driver(timer,sdr

24、am)lcdNandFlashsmcSEP4020In-kernelgonvernorspower_savedcpu_speedUser-levelgonvernorsCPU-Specificdriverscpufreqd2021/8/241内核所提供的技术3:oLinux内部共有五种对频率的管理策略userspace,conservative,ondemand,powersave 和 performance o 1.performance:CPU会固定工作在其支持的最高运行频率上;o 2.powersave:CPU会固定工作在其支持的最低运行频率上。因此这两种 governors 都属于静态

25、 governor,即在使用它们时 CPU 的运行频率不会根据系统运行时负载的变化动态作出调整。这两种 governors 对应的是两种极端的应用场景,使用 performance governor 体现的是对系统高性能的最大追求,而使用 powersave governor 则是对系统低功耗的最大追求。2021/8/242o3.Userspace:最早的 cpufreq 子系统通过 userspace governor 为用户提供了这种灵活性。系统将变频策略的决策权交给了用户态应用程序,并提供了相应的接口供用户态应用程序调节 CPU 运行频率使用。(可以使用Dominik 等人开发了 cpu

26、frequtils 工具包)o4.ondemand:userspace是内核态的检测,效率低。而ondemand正是人们长期以来希望看到的一个完全在内核态下工作并且能够以更加细粒度的时间间隔对系统负载情况进行采样分析的 governor。2021/8/243o5.conservative:ondemand governor 的最初实现是在可选的频率范围内调低至下一个可用频率。这种降频策略的主导思想是尽量减小对系统性能的负面影响,从而不会使得系统性能在短时间内迅速降低以影响用户体验。但是在 ondemand governor 的这种最初实现版本在社区发布后,大量用户的使用结果表明这种担心实际上是

27、多余的,ondemand governor 在降频时对于目标频率的选择完全可以更加激进。因此最新的 ondemand governor 在降频时会在所有可选频率中一次性选择出可以保证 CPU 工作在 80%以上负荷的频率,当然如果没有任何一个可选频率满足要求的话则会选择 CPU 支持的最低运行频率。大量用户的测试结果表明这种新的算法可以在不影响系统性能的前提下做到更高效的节能。在算法改进后,ondemand governor 的名字并没有改变,而 ondemand governor 最初的实现也保存了下来,并且由于其算法的保守性而得名 conservative。Ondemand降频更加激进,c

28、onservative降频比较缓慢保守2021/8/244内核所提供的技术4:cpufreq技术在用户态所呈现的接口:技术在用户态所呈现的接口:ocpuinfo_max_freq cpuinfo_min_freq:分别给出了 CPU 硬件所支持的最高运行频率及最低运行频率,ocpuinfo_cur_freq 则会从 CPU 硬件寄存器中读取 CPU 当前所处的运行频率。oGovernor在选择合适的运行频率时只会在 scaling_max_freq 和 scaling_min_freq 所确定的频率范围内进行选择oscaling_cur_freq 返回的是 cpufreq 模块缓存的 CPU

29、当前运行频率,而不会对 CPU 硬件寄存器进行检查。oscaling_available_governors 会告诉用户当前有哪些 governors 可供用户使用o scaling_driver 则会显示该 CPU 所使用的变频驱动程序 oScaling_governor 则会显示当前的管理策略,往这个上echo其他类型会有相应的转变。oscaling_setspeed:需将governor类型切换为userspace,才会出现,往这个文件echo数值,会切换主频2021/8/245以下是将以下是将governor切换为切换为ondemand后生成的后生成的ondemand文件夹下出现的配置

30、文件。文件夹下出现的配置文件。osampling_rate:当前使用的采样间隔,单位:微秒osampling_rate_min:允许使用的最短采样间隔osampling_rate_max:允许使用的最长采样间隔 oup_threshold:表明了系统负载超过什么百分比时 ondemand governor 会自动提高 CPU 的运行频率oignore_nice_load:ignore_nice_load 文件可以设置为 0 或 1(0 是默认设置)。当这个参数设置为 1 时,任何具有“nice”值的处理器不计入总处理器利用率。在设置为 0 时,所有处理器都计入利用率。osampling_dow

31、n_factor:2021/8/246使用方法:ocd sys/devices/system/cpu/cpu0/cpufreq/目录o#echo userspace scaling_governor切换工作方式为userspaceoecho 32000 scaling_min_freq 设置最小工作频率(khz,3200088000)oecho 64000 scaling_setspeed 设置成想要的工作频率(khz)2021/8/247Linux动态变频技术o为什么要实现o内核所提供的技术o内核部分需要的工作ocpufreq的客户端程序cpufreqd2021/8/248需要的工作:o开启

32、cpu变频技术,完成与操作系统的接口。o为和变频相关的所有驱动模块添加相应的变频处理。2021/8/249开启cpu变频技术:o1.在arch/arm/mach-sep4020/cpufreq.co2.实现核心结构体cpufreq_driver:nstatic struct cpufreq_driver sep4020_driver=nn.flags=CPUFREQ_STICKY,n.verify=sep4020_verify_speed,n.target=sep4020_target,n.get=sep4020_getspeed,n.init=sep4020_cpu_init,n.name=

33、SEP4020 Freq,n;o3.注册变频驱动结构体:cpufreq_register_driver(&sep4020_driver)2021/8/250oCpufreq.c这个文件承担的责任有:n1.完成变频的初始化任务:频率的上限,下限;默认的变频策略等n2.提供频率信息输出,频率控制的接口,用户可以同sys目录来实现获取cpufreq模块的信息及配置n3.当系统要求产生变频时,完成频率重配置-系统参数重配置-向驱动发送变频消息2021/8/251o系统参数重配置主要是sdram和timer的参数:oSdram:根据系统主频的变化重新配置sdram的时序oTimer:因为timer的初始

34、值是按照88M的主频配置的,一旦系统主频变化,则会导致系统ticks不准确。2021/8/252o流程:系统参数重配置-完成频率重配置-系统参数重配置-向驱动发送变频消息o/the sequence below is important,this is experience.oif(freqs.new cur)osep4020_update_sdram_timings(cur,freqs.new);osep4020_freq_reconfig(freqs.new);osep4020_systimer_reconfig(freqs.new);oif(freqs.new cur)osep4020_

35、update_sdram_timings(cur,freqs.new);ocpufreq_notify_transition(&freqs,CPUFREQ_POSTCHANGE);2021/8/253驱动的变频实现模板:struct notifier_block sep4020_serial_freq_transition;ostatic int sep4020_serial_cpufreq_transition(struct notifier_block*nb,unsigned long val,void*data)o和该驱动相关的变频操作;oostatic inline int sep40

36、20_serial_cpufreq_register(void)oo sep4020_serial_freq_transition.notifier_call=sep4020_serial_cpufreq_transition;o return cpufreq_register_notifier(&sep4020_serial_freq_transition,CPUFREQ_TRANSITION_NOTIFIER);o2021/8/254驱动的变频实现模板续:ostatic inline void sep4020_serial_cpufreq_deregister(void)oo cpufre

37、q_unregister_notifier(&sep4020_serial_freq_transition,CPUFREQ_TRANSITION_NOTIFIER);oo在驱动的init或probe函数中调用注册函数:sep4020_serial_cpufreq_register();o在驱动的exit或remove函数中调用删除函数:sep4020_serial_cpufreq_deregister();2021/8/255Linux动态变频技术o为什么要实现o内核所提供的技术o内核部分需要的工作ocpufreq的客户端程序cpufreqd2021/8/256cpufreqd概述:oLinu

38、x 动态变频管理 cpufreq 提供了操作系统级别的变频功能,同时需要用户层来制定和执行策略。cpufreq后台进程cpufreqd 就是用来监测系统的运行状况,并根据不同的状况设定 CPU 的工作频率的。2021/8/257cpufreqd交叉编译过程:编译 sysfsutils-2.1.0 编译 cpufrequtils-002编译 cpufreqd-2.2.12021/8/258cpufreqd使用:o首先根据系统需要来修改cpufreqd 的配置文件cpufreqd.conf,该配置文件决定了 cpufreqd的行为。Cpufreqd 及内核中的 cpufreq驱动是针对桌面电脑开发

39、的,其中很多和桌面相关的接口比如 acpi、apm等我们没有用到(apm我暂时还没打开,在内核中针对4020已实现),下面针对我们使用到的功能来介绍 cpufreqd.conf 的写法。它的完整介绍可参看/share/man/man5/cpufreqd.conf.5。ocpufreqd.conf 分三个部分:General、Profile 和 Rule。2021/8/259General部分部分oGeneralopidfile=/var/run/cpufreqd.pid /因为cpufreq是后台执行,kill的时候需要这个id号opoll_interval=2/poll_interval(单

40、位是秒,可以设为小数)是 cpufreqd 读取系统状态的时间间隔,每一次读取状态后,都会根据当前状态来给各个Rule 打分得分最高的Rule对应的 Profile将被执行,关于rule下面会详细谈osuspend_interval=10/名为 Powersave Low 的 Profile 的执行时间长达 suspend_interval(单位是秒,应该设为整数)时,系统将自动进入睡眠状态overbosity=0/verbosity 指示 syslogd 后台进程记录 cpufreqd 进程的运行信息等级o#enable_remote=1 /如果想手动选择 cpufreqd 执行的 Prof

41、ile,需要在 cpufreqd.conf 的 General 栏中设置enable_remote=1并在 cpufreqd 命令后加上-m 选项,即可。这样就可以通过命令 cpufreqd-get 打印出 cpufreqd.conf 中所有可用的 Profile,通过命令 cpufreqd-set n,来选择执行第n 条profileo/General2021/8/260profile部分oProfile 可以有多个profileoname=Performance High ominfreq=100%/minfreq 和 maxfreq定义了该 Profile 允许的频率范围,可以用绝对频率

42、表示,单位默认是 KHz,比如 minfreq=42000 表示最低频率为 42MHz;也可以用内核允许的最高频率(由 u-boot的启动频率决定)的百分比表示omaxfreq=100%opolicy=performance。/performance 会让系统运行在指定频率范围minfreq,maxfreq内的最高频率,powersave 会让系统运行在 minfreq,maxfreq内的最低频率o/Profile o oProfile oname=Powersave Low ominfreq=42000 omaxfreq=42000 opolicy=performance /即使是power

43、save我们使用的内核策略还是performance,其实这里也可以使用powersave,只要主频一样,那本质还是一样的o/Profile2021/8/261Ruleo每个 Rule的满分由自身条件的个数决定,有 n个条件的 Rule的满分是(100+n)%,比如上面所列的名为“CPU not busy”的 Rule满分为 101%,名为“Movie Watcher”的Rule 满分为 102%。如果存在两个 Rule都为满分时,分数较高的Movie Watcher将被执行。如果两个Rule 得分相同,那么位置靠前的优先执行。o#full score=101%oRule 可以有多个ruleo

44、name=CPU not busy/name是该 Rule的名字ocpu_interval=0-15/cpu 的占有率范围,比如cpu_interval=0-15表示 cpu 占用率为 0%15%,oprofile=Powersave Lowo/Ruleo#full score=102%oRuleoname=Movie Watcheroprograms=mplayer,madplay /表示当前运行的程序有 mplayer 或madplayocpu_interval=0-100oprofile=Performance Higho/Rule2021/8/262后续的工作:o实现并细化各个驱动模块

45、的电源管理:根据sep4020的功耗分析报告,相对比较耗电的部分主要为lcd,usbd,mac,dma等驱动名称完成情况lcd已完成,作为参考模板已完成,作为参考模板Usb deviceUsb host以太网Sd卡串口(4个)音频2021/8/263后续的工作2:o实现并细化各个驱动模块的变频处理:根据各模块对时钟频率的依赖关系,cpu变频会对其有影响的有:串口,sd,iis,smc,nand等驱动名称完成情况串口已完成已完成uart0,作为,作为参考模板参考模板sdiissmcnand2021/8/264后续的工作3:o用户层策略:n可以借鉴的有:apmd,cpufreqd2021/8/26

46、5细化电源管理,动态变频o电源管理:n12.24 完成统一的时钟管理驱动,更方便的管理每个模块。2021/8/266模块名称可否单独管理(时钟,电源,变频)耗电情况(88M)驱动改动复杂性优先级Timer在操作系统中无法单在操作系统中无法单独管理独管理无需改动无需改动无无IIS可以可以1.4mA中等,需要将驱动转变中等,需要将驱动转变为为plartform结结构构2SMC可以可以1.4mA中等,需要将驱动转变中等,需要将驱动转变为为plartform结结构构2MAC可以可以(没有变频没有变频)7.4mA简单简单0USBD可以可以5mA简单简单0UART(0-3)可以可以7mA(一共一共)复杂复

47、杂3SSI可以可以2.2mA复杂,需要单独编写复杂,需要单独编写ssi驱动驱动4MMC/SD可以可以2.3mA简单简单1EMI必要模块必要模块无需改动无需改动无无DMAC在操作系统中始终使在操作系统中始终使用用暂不改动暂不改动无无pwm暂时没用,可以关闭暂时没用,可以关闭LCDC可以可以7.7mA基本完成基本完成0必要模块必要模块(再定再定)无需改动无需改动无无2021/8/267模块名称优先级时钟管理电源管理(suspend,resume)变频管理LCDC0yynUSBD0ynnMAC0yn不需要不需要MMC/SD1SMC2IIS2UART(0-3)3SSI42021/8/2682009.12.29o做时钟管理的时候要注意:千万不能在相应模块时钟还未使能的时候操作这个模块的寄存器,会导致cpu down掉。(ether驱动有这个问题,下一版修订掉)部分资料从网络收集整理而来,供大家参考,感谢您的关注!

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!