当前位置: 首页 > news >正文

linux cpu频率和AVS调压等级

1,linux常见的cpu频率对应的电压等级对应参数表如下:

频率(GHz)电压(V)
1.61.4
1.41.2
1.21.0
1.00.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">&#96;</span><span data-allow-html data-gradient="true" style="opacity: 0.5">&#96;</span><span data-allow-html data-gradient="true" style="opacity: 0.39999999999999997">&#96;</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-microvoltregulator-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,代码分析

 

http://www.dtcms.com/a/288341.html

相关文章:

  • 板子 5.29--7.19
  • 函数式编程和命令式编程
  • Python爬虫实战:研究psd-tools库相关技术
  • UI 程序退出卡顿问题分析:从真实案例深入理解退出清理路径负载问题
  • 【工具变量】地级市城市包容性绿色增长数据(2011-2023年)
  • vue3使用KeepAlive组件及一些注意事项
  • [spring6: Advice Advisor Advised]-快速理解
  • 基于深度学习的火灾智能检测系统设计与实现
  • 零基础学习性能测试第二章-linux服务器监控:网络iftop
  • HTTP与HTTPS技术细节及TLS密钥交换与证书校验全流程
  • 马走日题解
  • LeetCode Hot100【7. 整数反转】
  • MyBatis动态SQL全解析:五大核心标签实战指南
  • [每日随题11] 贪心 - 数学 - 区间DP
  • 路由器内部电子元器件详解
  • C++数据结构————二叉树
  • 模电基础-电压和电阻
  • RISC采用的3种流水技术的功能和区别分析
  • 【官方】OneCode 3.0 核心技术白皮书:注解驱动、可视编码与 AI 融合
  • 相角补偿全通滤波器设计:相位均衡(0~350Hz,15°超前)
  • 关于如何同步开发板的时间和现在一样:
  • MyBatis分页神器PageHelper深度解析
  • 【深度学习-Day 38】破解深度网络退化之谜:残差网络(ResNet)核心原理与实战
  • openmv小车追小球
  • 如何设计一个软件项目管理系统:架构设计合集(六)
  • QGIS制作的仪表盘工程
  • Redisson RLocalCachedMap 核心参数详解
  • Python工厂方法模式详解:从理论到实战
  • Python绘制数据(三)
  • 创意 C++ 文本冒险战斗游戏代码