1,linux常見的cpu頻率對應的電壓等級對應參數表如下:
頻率(GHz) | 電壓(V) |
---|---|
1.6 | 1.4 |
1.4 | 1.2 |
1.2 | 1.0 |
1.0 | 0.8 |
2,avs調壓的幾種方式
linux內核宏解釋
Linux內核中,AVS調壓的實現依賴于一些宏定義和配置選項,這些宏定義幫助內核模塊化地管理電源策略。以下是幾個相關的宏:
(1)default_gov_userspace
- 定義:
default_gov_userspace
是一個內核配置選項,用于將默認的電源管理策略設置為userspace
。 - 作用:
userspace
策略允許用戶程序通過/sys/devices/system/cpu/cpufreq/
目錄下的文件手動調整CPU的頻率和電壓。這對于需要精細控制功耗和性能的場景非常有用。 - 配置方式:在內核配置中啟用該選項:
CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE=y<span data-allow-html data-gradient="true" style="opacity: 0.6">`</span><span data-allow-html data-gradient="true" style="opacity: 0.5">`</span><span data-allow-html data-gradient="true" style="opacity: 0.39999999999999997">`</span>
(2)CPUFREQ_GOV_PERFORMANCE
:定義performance
策略,始終以最高頻率和電壓運行。
(3)CPUFREQ_GOV_POWERSAVE
:定義powersave
策略,始終以最低頻率和電壓運行。
(4)CPUFREQ_GOV_ONDEMAND
:定義ondemand
策略,根據系統負載動態調整頻率和電壓。
# 查看當前CPU頻率
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq
# 查看CPU支持的所有頻率
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies
# 查看當前電壓(部分系統可能不支持)
cat /sys/class/power_supply/CPU_Voltage/voltage_now
3,手動設置策略和其他參數
echo userspace > /sys/devices/system/cpu/cpufreq/policy0/scaling_governor
手動設置頻率
echo 1600000 > /sys/devices/system/cpu/cpufreq/policy0/scaling_setspeed
查看電壓范圍
cat /sys/kernel/debug/regulator/vdd-cpu/min_uV
cat /sys/kernel/debug/regulator/vdd-cpu/max_uV
4,設備樹cpu頻率相關設置
&pmu {
? ? compatible = "arm,pmu";
? ? reg = <0x1000 0x1000>;
? ? clocks = <&clk_core>;
? ? voltage-range {
? ? ? ? compatible = "regulator-voltage";
? ? ? ? regulator-name = "vdd-cpu";
? ? ? ? regulator-min-microvolt = <800000>; // 最低電壓 800mV
? ? ? ? regulator-max-microvolt = <1200000>; // 最高電壓 1200mV
? ? ? ? regulator-always-on;
? ? };
};
regulator-min-microvolt
和regulator-max-microvolt
:定義電壓調節范圍,單位為微伏(μV)。
clocks
:定義CPU時鐘源,用于頻率管理。
(2)頻率與電壓的對應關系
cpu-frequency-table {
? ? compatible = "cpu-frequency-table";
? ? frequency-voltage {
? ? ? ? freq-1 = <1600000 1200000>; // 1.6GHz 對應 1200mV
? ? ? ? freq-2 = <1400000 1100000>; // 1.4GHz 對應 1100mV
? ? ? ? freq-3 = <1200000 1000000>; // 1.2GHz 對應 1000mV
? ? ? ? freq-4 = <1000000 900000>; // 1.0GHz 對應 900mV
? ? };
};
5,代碼分析
?