• 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)  进入 开发板调试串口终端,如下所示:

    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 '
    2. root@ATK-IMX6U:~#
    3. root@ATK-IMX6U:~#
    (2) 进入上面的命令行后,输入如下命令查看 cpu 信息:
    1. root@ATK-IMX6U:~# cat /proc/cpuinfo
    2. processor : 0
    3. model name : ARMv7 Processor rev 5 (v7l)
    4. BogoMIPS : 12.00
    5. Features : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae
    6. CPU implementer : 0x41
    7. CPU architecture: 7
    8. CPU variant : 0x0
    9. CPU part : 0xc07
    10. CPU revision : 5
    11. Hardware : Freescale i.MX6 Ultralite (Device Tree)
    12. Revision : 0000
    13. Serial : 0000000000000000
    14. 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的调频策略为:
    1. root@ATK-IMX6U:/sys/bus/cpu/devices/cpu0/cpufreq# cat scaling_governor
    2. performance

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

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

    1. root@ATK-IMX6U:/sys/bus/cpu/devices/cpu0/cpufreq# cat scaling_available_frequencies
    2. 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 内核的图形化配置界面如下:

    进入 如下界面上的路径:

    1. CPU Power Management
    2. -> CPU Frequency scaling
    3. -> Default CPUFreq governor

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

    保存更改后的配置:

    1. root@ATK-IMX6U:~# cat /proc/cpuinfo
    2. processor : 0
    3. model name : ARMv7 Processor rev 5 (v7l)
    4. BogoMIPS : 8.00
    5. Features : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae
    6. CPU implementer : 0x41
    7. CPU architecture: 7
    8. CPU variant : 0x0
    9. CPU part : 0xc07
    10. CPU revision : 5
    11. Hardware : Freescale i.MX6 Ultralite (Device Tree)
    12. Revision : 0000
    13. Serial : 0000000000000000
    14. root@ATK-IMX6U:~#

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

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

    1. root@ATK-IMX6U:~# cat /proc/cpuinfo
    2. processor : 0
    3. model name : ARMv7 Processor rev 5 (v7l)
    4. BogoMIPS : 8.00
    5. Features : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae
    6. CPU implementer : 0x41
    7. CPU architecture: 7
    8. CPU variant : 0x0
    9. CPU part : 0xc07
    10. CPU revision : 5
    11. Hardware : Freescale i.MX6 Ultralite (Device Tree)
    12. Revision : 0000
    13. Serial : 0000000000000000
    14. root@ATK-IMX6U:~#

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

     查看当前CPU的调频策略:

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

    查看 CPU 的当前频率:

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

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

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


     

  • 相关阅读:
    Adobe Illustrator 2024 v28.4.1 (macOS, Windows) - 矢量绘图
    mini-vue 代码块
    Linux aarch64交叉编译之 qlibc 基础C/C++库
    前端开发实践:vue中用qrcode库将超链接生成二维码图片
    用OCC+VS+Qt创建并显示一个几何
    SpringMVC------JavaEE(实现前后端交互)
    设计模式-创建型模式
    区块链相关
    uni-app微信小程序tab切换demo
    【后端框架】MyBatis(1)
  • 原文地址:https://blog.csdn.net/wojiaxiaohuang2014/article/details/133386833