电压与频率如何配置和使用?

Comake Online


作者| Sigmastar技术运营官


本次专题主要讲解电压与频率如何配置和使用。



电压,频率,温度 与DVFS


DVFS全称Dynamic Voltage and Frequency Scaling,即动态电压频率调整。这项技术可以根据芯片运行的应用程序的计算需求,动态调整电压和频率,从而达到节能的目的。


Cpufreq技术其实也就是软件根据系统的负载,动态的去调整电压和频率来平衡性能和功耗。


总体而言,Cpufreq包含两部分内容,一是策略部分,该部分与具体CPU无关;而是driver部分,与具体平台实现策略有关系。


ssd20x/ssd22x默认策略 ondemand


主要的策略,如下表所示:


策略名 策略说明 ondemand 平时以低速运行,系统负载提高时按需提高频率 performance CPU以最高频率运行。



简单讲:ondemand 按需快速动态调整CPU频率, 一有cpu计算量的任务,就会立即达到最大频率运行,等执行完毕就立即回到最低频率。


hw配置


涉及到电压和频率配置如下:默认支持1个pgio口,实现两种电压的控制。不同的电压支持不同的cpu 频率。以222d为例pioneer3.dtsi。




用户层接口位置:


/sys/devices/system/cpu/cpufreq/policy0


voltage_available:支持电压

 cat /sys/devices/system/voltage/core/voltage_available 

Vcore(mV)       vid_0(85)

[0]     900             0

[1]     1000            1


scaling_available_frequencies:可用频率

cat /sys/devices/system/cpu/cpufreq/policy0/scaling_available_frequencies

  800000 1000000 



scaling_driver:则会显示该 CPU 所使用的变频驱动程序

cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_driver 

Mstar cpufreq


scaling_governor:则会显示当前的管理策略,往这个上echo其他类型会有相应的转变。


scaling_max_freq 最大调节频率

scaling_min_freq:最小调节频率

 cat /sys/devices/system/cpu/cpufreq/policy0/scaling_min_freq 

800000


cat /sys/devices/system/cpu/cpufreq/policy0/scaling_max_freq 

1000000


scaling 驱动程序


kernel\drivers\sstar\cpufreq\pioneer3\cpufreq.c 核心实现如下 获取cpu温度: cat /sys/devices/virtual/mstar/msys/TEMP_R


static int g_sCurrentTempThreshLo = 40;

static int g_sCurrentTempThreshHi = 60;


static int monitor_temp_thread_handler(void *data)

{

    while (!kthread_should_stop())

    {

        msleep_interruptible(1000);


        g_sCurrentTemp = ms_get_temp();


#ifdef CONFIG_SS_VOLTAGE_CTRL

        if(get_core_voltage() > VOLTAGE_CORE_900 && g_sCurrentTemp > g_sCurrentTempThreshHi )

            set_core_voltage(VOLTAGE_DEMANDER_TEMPERATURE, VOLTAGE_CORE_900);

        if(get_core_voltage() < VOLTAGE_CORE_1000 && g_sCurrentTemp < g_sCurrentTempThreshLo )

            set_core_voltage(VOLTAGE_DEMANDER_TEMPERATURE, VOLTAGE_CORE_1000);

#endif

    }


    return 0;

}


相应sys的接口位置:



策略和驱动使用总结:


1. 如果有高负载任务,内核按照ondemand的策略,按最高频率运行。内核电压自动提升。


2. 如果是低负载任务,内核按照ondemand的策略,按最低频率运行。内核电压降低。溫度/電壓控制实现:


--當溫度低於攝氏40度,會升壓到1.0V

--當溫度高於攝氏60度,會降壓到0.9V

--溫度介於40~60度,不會有動作


》》原帖地址


End.



往期回顾


微信刷掌支付搭载SSC9351Q


星宸科技智能门锁方案介绍


SSD222Q在工业HMI中的新应用


星宸科技智能网关方案介绍


星宸科技智能家居全家桶介绍





扫码进入论坛

原厂答疑|产品选型|官方资源



扫码咨询客服

SDK下载|芯片、开发板购买


X 提交 下一题

查看更多