ELF 1開發(fā)板選用的是主頻800MHz NXP的i.MX6ULL處理器。根據(jù)實(shí)際的應(yīng)用場景,如果需要降低CPU功耗,可以將CPU頻率固定為節(jié)能模式,下面以這款開發(fā)板為例給小伙伴們介紹一下固定CPU頻率的方法。

1.列出/sys/devices/system/cpu/cpu0/cpufreq/目錄下的文件:
當(dāng)前CPU工作頻率,從CPU寄存器讀取到的工作頻率
處理器所能運(yùn)行的最高工作頻率(單位:KHz)
處理器所能運(yùn)行的最低工作頻率(單位:KHz)
處理器切換頻率所需要的時間(單位:ns)
處理器支持的主頻率列表(單位:KHz)
該文件保存當(dāng)前CPU所使用的調(diào)頻驅(qū)動
①conservative:在CPU負(fù)載較低時,調(diào)節(jié)CPU的工作頻率為較低的頻率,以保證能源和散熱的平衡。而當(dāng)CPU負(fù)載較高時,調(diào)節(jié)CPU的工作頻率為較高的頻率,以提高計算機(jī)的性能
②ondemand:定時檢查負(fù)載,然后根據(jù)負(fù)載來調(diào)節(jié)頻率。負(fù)載低的時候降低CPU頻率,這樣省電,負(fù)載高的時候提高CPU頻率,增加性能
③userspace:可以在用戶空間手動調(diào)節(jié)頻率
④powersave:省電模式,通常以最低頻率運(yùn)行,系統(tǒng)性能會受影響,一般不會用這個
⑤performance:最高性能,直接用最高頻率,不考慮耗電
governor(調(diào)頻)可以調(diào)節(jié)的最高頻率
governor(調(diào)頻)可以調(diào)節(jié)的最低頻率
該目錄給出了CPU各種運(yùn)行頻率的統(tǒng)計情況,比如CPU在各頻率下的運(yùn)行時間以及變頻次數(shù)
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 //當(dāng)前頻率
792000
root@ELF1:~# cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_min_freq //可調(diào)最低頻率
198000
root@ELF1:~# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor //調(diào)頻策略
performance
root@ELF1:~# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies //支持的主頻率
198000 396000 528000 792000
(1)設(shè)置為用戶模式,修改頻率為198000:
root@ELF1:~# echo userspace > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governorroot@ELF1:~# echo 198000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed
root@ELF1:~# cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq198000 //當(dāng)前頻率
root@ELF1:~# vi /etc/rc.local
echo userspace > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governorecho 198000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed

(4)查看當(dāng)前頻率:
root@ELF1:~# cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq198000 //當(dāng)前頻率
elf:~/work/ELF/linux-4.1.15-elf1$ . /opt/fsl-imx-x11/4.1.15-2.0.0/environment-setup-cortexa7hf-neon-poky-linux-gnueabielf:~/work/ELF/linux-4.1.15-elf1$ make imx6ull_elf1_defconfig //生成.configelf:~/work/ELF/linux-4.1.15-elf1$ make menuconfig
CPU Power ManagementCPU Frequency scalingDefault CPUFreq governor

elf@ubuntu:~/work/ELF/linux-4.1.15-elf1$ cp .config arch/arm/configs/imx6ull_elf1_defconfigelf@ubuntu:~/work/ELF/linux-4.1.15-elf1$ make imx6ull_elf1_defconfigelf@ubuntu:~/work/ELF/linux-4.1.15-elf1$ make zImage
root@ELF1:~# cp /run/media/sda1/zImage /run/media/mmcblk1p1root@ELF1:~# syncroot@ELF1:~# reboot
root@ELF1:~#?cat?/sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq198000
root@ELF1:~# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governorpowersave
18030183032