考虑到电源管理的需求涉及处理器和各种设备,一方面是处理器尽可能减少功耗,另一方面是设备尽可能减少功耗。图5-30Linux电源管理各个功能从图5-30可见Linux内核的电源管理功能有与处理器相关的CPUIdle和CPUFreq,也有与设备相关的runtime pm,另外还有与整个系统待机时SLM相关的低功耗电源管理功能。下面分别对这些功能框架进行介绍。具体的驱动同样会在SoC电源管理部分进行讲解。对具体设备的电源管理实现,将在设备驱动中进行详细分析。......
2023-11-22
目前嵌入式设备很多都是电池供电,这类设备电池续航能力成为人们重点关注的指标之一,这就引出了一个新的技术方向———电源管理技术。
首先了解一下嵌入式芯片功耗和哪些因素相关:
The active power for a CMOS device is defined as:P=CV2F,where P=active power needed for switching,C=total capacitance being switched,V=operating voltage and F=switching frequency。
这段英文说明了影响功耗的因素,C主要和芯片的逻辑单元的状态相关,通常逻辑单元关掉时C的值比较低;V是操作电压;F是工作频率。注意功耗的需求是在稳定工作的前提之下的,而从公式中明显看出影响最大的因素是V。围绕着C、V和F会有很多电源管理技术的实现,后续会有详细的解析。
接下来以DM 3730为例了解一下主芯片和电源管理芯片的连接,如图1-4所示。
(www.chuimin.cn)
图1-4 DM 3730与电源管理芯片连接框图
图1-4是引自《DM 3730芯片手册》中第239页的框图,其中PRCM是power reset clock management的缩写,它是对电源、启动信号和时钟进行管理的模块。从图中我们看到时钟信号(如sys_32k)和多个电源(如vdd开头的连接)都是由电源芯片(Power IC)提供的,为什么要提供多个电源呢?这是因为SoC中不同的工作单元需要的电压不同,如果都要求高电压,根据之前的公式,功耗影响会比较大,通过隔离不同的工作电压可以降低整体的功耗。电源管理技术的大部分操作就是围绕着这几路电源和时钟展开的。
这里我们看到一路电源的名字是vdda_sram,这说明芯片内部有sram,这部分memory在系统启动和电源管理的一些特殊操作时起到至关重要的作用,另外这部分memory访问效率非常高,可以用来提高系统性能。
在图中还有诸多疑问,比如PRCM详细内容,具体功能是什么?两个I2C接口的作用是什么?多路电源(如vdd_mpu_iva等)具体功能是什么?其他部分的信号起什么作用?这里先了解基本概念,这些疑问会在后续电源管理的详解中进行说明。
有关深入剖析Linux内核与设备驱动的文章
考虑到电源管理的需求涉及处理器和各种设备,一方面是处理器尽可能减少功耗,另一方面是设备尽可能减少功耗。图5-30Linux电源管理各个功能从图5-30可见Linux内核的电源管理功能有与处理器相关的CPUIdle和CPUFreq,也有与设备相关的runtime pm,另外还有与整个系统待机时SLM相关的低功耗电源管理功能。下面分别对这些功能框架进行介绍。具体的驱动同样会在SoC电源管理部分进行讲解。对具体设备的电源管理实现,将在设备驱动中进行详细分析。......
2023-11-22
DM 3730的I2C控制器框架如图7-4所示。图7-4引自《DM 3730芯片手册》中第2798页的框图。关于DM 3730I2C的驱动部分,主要分析相关初始化和总线传输的操作。由于I2C作为控制和获取状态信息,数据量并不大,而且相关的操作频率并不高,这样在中断中进行相关的处理,对系统的影响并不大。......
2023-11-22
1框架总体设计从输入设备框架的需求可知,内核的整个输入流程应该分为下层的各种输入设备和上层与用户的控制信息交互两个方面。从图6-1可见,输入设备系统框架的核心部分从底到上分为input driver,input core和event handler三个部分。应用层则要根据输入设备的事件进行相应的操作,为了给应用层统一的接口,输入设备框架对于输入事件进行了规范。......
2023-11-22
DM 3730的USB主机控制器框架如图7-17所示。Linux内核为各种USB总线控制器开发了标准的操作接口,EHCI同样提供了统一的操作接口。......
2023-11-22
整个系统启动和初始化的过程,Linux内核是在主处理器启动之后才会执行。不同的处理器启动流程并不相同,这就要求Linux内核能支持各种处理器的初始化操作。Linux内核各个模块,大部分设计时做到了体系结构无关。Linux内核是一个庞大的系统,最终生成的操作系统代码的执行文件非常大。......
2023-11-22
内存管理是Linux内核非常重要的功能,可以说是最基础的功能之一。图4-31存储系统层次结构整个内存管理的首要需求自然是内存物理空间的管理。特别是视频应用需求的不断增长使得内存管理的需求也发生了变化,由于图像分辨率以及显示分辨率的不断提高,而协处理器通常又需要连续的物理内存,这样就有对于几兆甚至十几兆连续内存管理的需求。而原有的Linux内核内存管理并不能满足这种需求,这样就需要开发新的内存管理方法。......
2023-11-22
图3-3Linux内核整体框架③bridges:桥梁层。Linux内核通过统一的接口操作设备,这样就屏蔽了各个设备的差异,从而降低了和硬件的耦合关系。Linux内核为了简化实现,将共享资源的进程作为线程。考虑到外部事件需要对执行流程进行转换,另外不同的应用执行流程之间需要切换,这就要在Linux内核的逻辑层抽象出调度器这一逻辑功能。......
2023-11-22
也正是因为Linux内核的唯一性,各个不同发布版本拥有相同的框架。Linux内核是在整个Linux系统的最底层,它负责管理硬件,运行用户程序,并保持系统整体的安全性和完整性。可以说是Linux系统的根和灵魂。图3-1中看到Linux内核还有另一层面的含义。这对于Linux内核同样适用。所以对Linux内核的剖析、学习和研究也不能独立于系统进行,而是要综合考虑应用、内核和硬件等各方面的信息和内容。这样才能更全面、深刻地理解Linux内核。......
2023-11-22
相关推荐