[STM32MP2] STM32MP157D的CPU频率问题

[复制链接]
 楼主| flycamelaaa 发表于 2024-8-16 16:27 | 显示全部楼层 |阅读模式
我使用的Linux版本是:6.1.28,我的电源管理是分立式原件,"VDD_CORE"实际是1.212V,设备树中是这样的:

vddcore: regulator-vddcore {
    compatible = "regulator-fixed";
    regulator-name = "vddcore";
    regulator-min-microvolt = <1200000>;
    regulator-max-microvolt = <1350000>;
    regulator-always-on;
    regulator-boot-on;
};
如果按照上面这样设置我的/sys/devices/system/cpu/cpufreq/下面就是空的,但是我把"regulator-min-microvolt = <1200000>;"中的1200000改为1350000就正常了,这是为什么?
cen9ce 发表于 2024-8-31 21:06 | 显示全部楼层
在Linux内核中,CPU频率调节(cpufreq)通常与电源管理紧密相关。CPU频率调节依赖于电源电压的稳定性,以确保CPU能够在不同的工作频率下正常运行
cen9ce 发表于 2024-8-31 21:18 | 显示全部楼层
一般来说如果电源电压设置不当,可能会导致CPU频率调节无法正常工作,从而使得/sys/devices/system/cpu/cpufreq/目录为空
d1ng2x 发表于 2024-8-31 22:23 | 显示全部楼层
其实楼主可以在你的设备树(Device Tree)中,vddcore的电源管理设置如下:vddcore: regulator-vddcore {    compatible = "regulator-fixed";    regulator-name = "vddcore";    regulator-min-microvolt = <1200000>;    regulator-max-microvolt = <1350000>;    regulator-always-on;    regulator-boot-on;}
d1ng2x 发表于 2024-8-31 22:23 | 显示全部楼层
正常来说,重要的是regulator-min-microvolt和regulator-max-microvolt,它们定义了电源电压的最小和最大值。在你的情况下,实际的VDD_CORE电压是1.212V(即1212000微伏),而设备树中设置的最小电压是1200000微伏
ex7s4 发表于 2024-8-31 22:44 | 显示全部楼层
如果实际电压低于设备树中设置的最小电压,可能会导致内核无法正确识别和配置CPU频率调节器。当你将regulator-min-microvolt从1200000微伏改为1350000微伏时,实际上是放宽了电压范围,使得实际电压1.212V落在了新的范围内,从而使得CPU频率调节器能够正常工作
zhizia4f 发表于 2024-8-31 22:47 | 显示全部楼层
正常了就可以了吧,我觉得,但是为啥改成1350000我也没看懂,哈哈
kaif2n9j 发表于 2024-8-31 23:02 | 显示全部楼层
电压范围不匹配,实际电压1.212V不在设备树中设置的最小和最大电压范围内,导致CPU频率调节器无法初始化
l1uyn9b 发表于 2024-8-31 23:19 | 显示全部楼层
内核可能在初始化CPU频率调节器时,检查了实际电压是否在设备树中定义的范围内,如果不匹配,则不初始化cpufreq子系统
lamanius 发表于 2024-8-31 23:41 | 显示全部楼层
为了确保CPU频率调节器能够正常工作,建议将设备树中的电压范围设置为实际电压的合理范围,或者调整实际电压以匹配设备树中的设置
liu96jp 发表于 2024-8-31 23:53 | 显示全部楼层
其实,如果实际电压是固定的,那么设备树中的设置应该反映这一点
您需要登录后才可以回帖 登录 | 注册

本版积分规则

824

主题

4298

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部

824

主题

4298

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部