Linux驱动学习记录 cpu主频

以imx6ull芯片为例
imx6ull芯片主频是792MHz

查看cpu信息

cat /proc/cpuinfo
proc/cpuinfo
processor       : 0
model name      : ARMv7 Processor rev 5 (v7l)
BogoMIPS        : 3.00
Features        : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae
CPU implementer : 0x41
CPU architecture: 7
CPU variant     : 0x0
CPU part        : 0xc07
CPU revision    : 5

Hardware        : Freescale i.MX6 UltraLite (Device Tree)
Revision        : 0000
Serial          : 112cb9d75d51389a

BogoMIPS这一条,此时 BogoMIPS为 3.00,BogoMIPS是 Linux系统中
衡量处理器运行速度的一个“尺子”,处理器性能越强,主频越高,BogoMIPS值就越大。
BogoMIPS只是粗略的计算 CPU性能,并不十分准确。

目录/sys/bus/cpu/devices/cpu0/cpufreq中的文件记录了cpu频率的相关

[root@100ask:/sys/bus/cpu/devices/cpu0/cpufreq]# ls
affected_cpus     cpuinfo_transition_latency     scaling_cur_freq  scaling_min_freq
cpuinfo_cur_freq  related_cpus                   scaling_driver    scaling_setspeed
cpuinfo_max_freq  scaling_available_frequencies  scaling_governor  stats
cpuinfo_min_freq  scaling_available_governors    scaling_max_freq

此目录中记录了 CPU频率等信息,这些文件的含义如下:
cpuinfo_cur_freq:当前 cpu工作频率,从 CPU寄存器读取到的工作频率。
cpuinfo_max_freq:处理器所能运行的最高工作频率(单位: KHz)。
cpuinfo_min_freq :处理器所能运行的最低工作频率(单位: KHz)。
cpuinfo_transition_latency:处理器切换频率所需要的时间(单位:ns)。
scaling_available_frequencies:处理器支持的主频率列表(单位: KHz)。
scaling_available_governors:当前内核中支持的所有 governor(调频)类型。
scaling_cur_freq:保存着 cpufreq模块缓存的当前 CPU频率,不会对 CPU硬件寄存器进
行检查。
scaling_driver:该文件保存当前 CPU所使用的调频驱动。
scaling_governor:governor(调频)策略,Linux内核一共有 5中调频策略,
①、Performance,最高性能,直接用最高频率,不考虑耗电。
②、Interactive,一开始直接用最高频率,然后根据 CPU负载慢慢降低。
③、Powersave,省电模式,通常以最低频率运行,系统性能会受影响,一般不会用这个!
④、Userspace,可以在用户空间手动调节频率。
⑤、Ondemand,定时检查负载,然后根据负载来调节频率。负载低的时候降低 CPU频率,
这样省电,负载高的时候提高 CPU频率,增加性能。
scaling_max_freq:governor(调频)可以调节的最高频率。
cpuinfo_min_freq:governor(调频)可以调节的最低频率。
stats目录下给出了 CPU各种运行频率的统计情况,比如 CPU在各频率下的运行时间以及变频次数。

查看 stats目录下的 time_in_state文件可以看到 CPU在各频率下的工作时间

假如我们想让 CPU 一直工作在 792MHz那该怎么办?
在linux图形界面配置选项:
CPU Power Management
-> CPU Frequency scaling
-> Default CPUFreq governor

你可能感兴趣的:(嵌入式,linux驱动,arm开发,arm,驱动开发)