ELF 1开发板选用的是主频800MHz NXP的i.MX6ULL处理器。根据实际的应用场景,如果需要降低CPU功耗,可以将CPU频率固定为节能模式,下面以这款开发板为例给小伙伴们介绍一下固定CPU频率的方法。
1.列出/sys/devices/system/cpu/cpu0/cpufreq/目录下的文件:
当前CPU工作频率,从CPU寄存器读取到的工作频率
处理器所能运行的最高工作频率(单位:KHz)
处理器所能运行的最低工作频率(单位:KHz)
处理器切换频率所需要的时间(单位:ns)
处理器支持的主频率列表(单位:KHz)
该文件保存当前CPU所使用的调频驱动
①conservative:在CPU负载较低时,调节CPU的工作频率为较低的频率,以保证能源和散热的平衡。而当CPU负载较高时,调节CPU的工作频率为较高的频率,以提高计算机的性能
②ondemand:定时检查负载,然后根据负载来调节频率。负载低的时候降低CPU频率,这样省电,负载高的时候提高CPU频率,增加性能
③userspace:可以在用户空间手动调节频率
④powersave:省电模式,通常以最低频率运行,系统性能会受影响,一般不会用这个
⑤performance:最高性能,直接用最高频率,不考虑耗电
governor(调频)可以调节的最高频率
governor(调频)可以调节的最低频率
该目录给出了CPU各种运行频率的统计情况,比如CPU在各频率下的运行时间以及变频次数
792000
792000
root@ELF1:~# cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_min_freq //最低工作频率
198000
root@ELF1:~# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq //当前频率
792000
root@ELF1:~# cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_min_freq //可调最低频率
198000
root@ELF1:~# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor //调频策略
performance
root@ELF1:~# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies //支持的主频率
198000 396000 528000 792000
(1)设置为用户模式,修改频率为198000:
root@ELF1:~# echo userspace > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
root@ELF1:~# echo 198000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed
root@ELF1:~# cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq
198000 //当前频率
root@ELF1:~# vi /etc/rc.local
echo userspace > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
echo 198000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed
(4)查看当前频率:
root@ELF1:~# cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq
198000 //当前频率
elf/work/ELF/linux-4.1.15-elf1$ . /opt/fsl-imx-x11/4.1.15-2.0.0/environment-setup-cortexa7hf-neon-poky-linux-gnueabi :~
elf/work/ELF/linux-4.1.15-elf1$ make imx6ull_elf1_defconfig //生成.config :~
elf/work/ELF/linux-4.1.15-elf1$ make menuconfig :~
CPU Power Management
CPU Frequency scaling
Default CPUFreq governor
elf@ubuntu:~/work/ELF/linux-4.1.15-elf1$ cp .config arch/arm/configs/imx6ull_elf1_defconfig
elf@ubuntu:~/work/ELF/linux-4.1.15-elf1$ make imx6ull_elf1_defconfig
elf@ubuntu:~/work/ELF/linux-4.1.15-elf1$ make zImage
root@ELF1:~# cp /run/media/sda1/zImage /run/media/mmcblk1p1
root@ELF1:~# sync
root@ELF1:~# reboot
root@ELF1:~# cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq
198000
root@ELF1:~# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
powersave
18030183032