Linux内核移植之主频设置

一.  Linux内核移植

正点原子 ALPHA开发板已经添加到 Linux内核里面去了,前面文章关于如何添加已经掌握。但是,还有一些驱动的问题需要修改。

正点原子 I.MX6U-ALPHA 开发板所使用的 I.MX6ULL 芯片主频都是 792MHz 的,也就是NXP 官方宣传的 800MHz 版本。 本文就以 792MHz 的核心板为例讲解。
开始设置CPU主频与超频测试之前,需要做一些准备工作,所做的准备工作的文章地址如下:


 

二.  Linux内核移植之更改CPU主频

"ALPHA开发板系统启动" 文章最后,开发板可以正常从 Nand-Flash启动了。这里继续上一篇文章中开发板的状态。在此基础上,设置 CPU的主频。

1.  设置 I.MX6U-ALPHA 开发板工作在 792MHz

(1)  进入 开发板调试串口终端,如下所示:

root@ATK-IMX6U:~# icm20608: version magic '4.1.15-g19f085b-dirty SMP preempt mod_unload modversions ARMv7 p2v8 ' should be '4.1.15 SMP preempt mod_unload modversions ARMv6 p2v8 '

root@ATK-IMX6U:~# 
root@ATK-IMX6U:~# 
(2) 进入上面的命令行后,输入如下命令查看 cpu 信息:
root@ATK-IMX6U:~# cat /proc/cpuinfo
processor    : 0
model name    : ARMv7 Processor rev 5 (v7l)
BogoMIPS    : 12.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        : 0000000000000000
root@ATK-IMX6U:~#

上面 CPU信息中有 BogoMIPS 这一条,此时 BogoMIPS 3.00 BogoMIPS Linux 系统中 衡量处理器运行速度的一个“尺子”,处理器性能越强,主频越高, BogoMIPS 值就越大。
BogoMIPS 只是粗略的计算 CPU 性能,并不十分准确。但是我们可以通过 BogoMIPS 值来大致
的判断当前处理器的性能。
(3)  进入到 根文件系统 下 /sys/bus/cpu/devices/cpu0/cpufreq 目录下查看 CPU的工作频率。
使用 "cat /proc/cpuinfo"命令,并 没有看到当前 CPU 的工作频率,那我们就转变另 一种方法查看当前 CPU 的工作频率。进入到目录 /sys/bus/cpu/devices/cpu0/cpufreq 中,此目录下 会有很多文件。如下 所示:

root@ATK-IMX6U:~# cd /sys/bus/cpu/devices/cpu0/cpufreq
root@ATK-IMX6U:/sys/bus/cpu/devices/cpu0/cpufreq# ls
affected_cpus               related_cpus                   scaling_governor
cpuinfo_cur_freq            scaling_available_frequencies  scaling_max_freq
cpuinfo_max_freq            scaling_available_governors    scaling_min_freq
cpuinfo_min_freq            scaling_cur_freq               scaling_setspeed
cpuinfo_transition_latency  scaling_driver                 stats
root@ATK-IMX6U:/sys/bus/cpu/devices/cpu0/cpufreq#

/sys/bus/cpu/devices/cpu0/cpufreq 目录中记录了 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 在各频率下的运行时间以及
变频次数。
查看当前CPU的调频策略为:
root@ATK-IMX6U:/sys/bus/cpu/devices/cpu0/cpufreq# cat scaling_governor
performance

查看当前CPU频率。使用如下命令查看当前 CPU 频率:
root@ATK-IMX6U:/sys/bus/cpu/devices/cpu0/cpufreq# cat cpuinfo_cur_freq 
792000

查看 处理器支持的主频率列表有哪些:

root@ATK-IMX6U:/sys/bus/cpu/devices/cpu0/cpufreq# cat scaling_available_frequencies 
198000 396000 528000 792000 

可以看出,当前 CPU 支持 198MHz 396MHz 528Mhz 792MHz 四种频率切换,其中调
频策略为 ondemand ,也就是定期检查负载,然后根据负载情况调节 CPU 频率。

(4)  更改当前CPU的调频策略。

注意:选用哪种调频策略可以在图形化界面进行配置,也可以通过"XXX_Defconfig"配置文件进行配置。

进入 之前添加了ALPHA开发板的 (NXP官方的)kernel内核源码根目录,进入 /arch/arm/configs目录下,打开 nand-Flash版开发板对应的配置文件:imx_v7_alientek_nand_defconfig。

通过图形化界面配置 Linux 内核的 CPU 调频策略,进入Kernel源码根目录下,输入“make menuconfig”命令,打开 Linux 内核的图形化配置界面如下:

进入 如下界面上的路径:

CPU Power Management 
 -> CPU Frequency scaling 
 -> Default CPUFreq governor

取消  "performance" 项,选中 "ondemand"项,如下所示:

保存更改后的配置:

root@ATK-IMX6U:~# cat /proc/cpuinfo
processor	: 0
model name	: ARMv7 Processor rev 5 (v7l)
BogoMIPS	: 8.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		: 0000000000000000
root@ATK-IMX6U:~# 

注意:选择以后退出图形化配置界面,然后编译 Linux 内核,一定不要清理工程!否则的话我们刚刚的设置就会被清理掉!!!

(5)  重新编译 kernel源码,生成 zImage镜像再在开发板上运行:

root@ATK-IMX6U:~# cat /proc/cpuinfo
processor	: 0
model name	: ARMv7 Processor rev 5 (v7l)
BogoMIPS	: 8.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		: 0000000000000000
root@ATK-IMX6U:~# 

进入/sys/bus/cpu/devices/cpu0/cpufreq目录下:

 查看当前CPU的调频策略:

root@ATK-IMX6U:/sys/bus/cpu/devices/cpu0/cpufreq# cat scaling_governor 
ondemand

查看 CPU 的当前频率:

root@ATK-IMX6U:/sys/bus/cpu/devices/cpu0/cpufreq# cat cpuinfo_cur_freq 
396000

可以看出,当前CPU的调频策略已经从 之前"performance" 更改为 "ondemand"模式。

当前CPU频率是 396Mhz。跟之前比,降低了。


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值