IMX6S上的稳定CPU频率



我想在基于IMX6S的板上使CPU频率不变。即使是WFI呼叫也不应该影响。到目前为止,我看到处理器期间的明显CPU频率下降处于WFI模式。

根据IMX6S的技术参考手册,低功率模式,处理器将在WFI之后转移,由CLPCR寄存器的LPM位配置(第855页(。我将LPM位设置为0x0,其中提到的运行模式。从我的理解中,这应该足以使处理器处于任何形式的睡眠模式(等待或停止IMX(。

这背后还有其他东西吗?我在这里错过了什么吗?

假设我使用非Linux自定义环境。


附录(我如何测量(:

实验看起来以下内容:1.与WFI

p1 = ArmPmuGetCpuCycles()
Sleep(100 miliseconds)   <- here it goes to WFI
p2 = ArmPmuGetCpuCycles()
p2 - p1 = 600 microseconds

2。没有wfi

p1 = ArmPmuGetCpuCycles()
Sleep(100 miliseconds)   <- WFI is removed
p2 = ArmPmuGetCpuCycles()
p2 - p1 = 100 miliseconds

CPU睡眠模式和DVFS频率设置通常是正交节能技术。

wfi通常可以触发时钟门控(停止时钟逻辑,该逻辑已知闲置等待中断,但通常不会更改频率或电压,因为这些操作可能很慢(。通常由高级内核驱动器(例如CPUFREQ。

(处理动态变化的电压和频率

DVFS策略的主要输入之一是使用动态CPU频率,因此,如果您的软件在OS空闲循环中花费大量时间(它将在内部调用WFI(,那么较高级别的逻辑将决定您正在利用CPU并开始降低频率以节省电源。

UPDATE 鉴于您是使用PMU测量频率,因此您看到的是PMU停止由于时钟门控而不是频率更改。通常,如果您想保留一些系统时间概念,则需要一个计时器外围设备,该计时器外围不会被放入较低的功率模式;这些用例完全可用于此用例,但可能具有更粗的测量粒度。

最新更新