Days 33 ElfBoard 固定CPU频率

2024-02-18 04:36
文章标签 cpu 固定 频率 33 days elfboard

本文主要是介绍Days 33 ElfBoard 固定CPU频率,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!


ELF 1开发板选用的是主频800MHz NXP的i.MX6ULL处理器。根据实际的应用场景,如果需要降低CPU功耗,其中一种方法可以将CPU频率固定为节能模式,下面以这款开发板为例给小伙伴们介绍一下固定CPU频率的方法。

先来介绍一下与CPU频率相关的命令:
1.列出/sys/devices/system/cpu/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种调频策略:
①conservative:在CPU负载较低时,调节CPU的工作频率为较低的频率,以保证能源和散热的平衡。而当CPU负载较高时,调节CPU的工作频率为较高的频率,以提高计算机的性能。
②ondemand:定时检查负载,然后根据负载来调节频率。负载低的时候降低CPU频率,这样省电,负载高的时候提高CPU频率,增加性能。
③userspace:可以在用户空间手动调节频率。
④powersave:省电模式,通常以最低频率运行,系统性能会受影响,一般不会用这个。
⑤performance:最高性能,直接用最高频率,不考虑耗电。
scaling_max_freq:governor(调频)可以调节的最高频率。
scaling_min_freq:governor(调频)可以调节的最低频率。
stats:该目录给出了CPU各种运行频率的统计情况,比如CPU在各频率下的运行时间以及变频次数。
2.使用如下命令查看当前CPU频率:
root@ELF1:~# cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq
792000
当前CPU频率为792MHz,工作频率是最高的,其他的值如下:
root@ELF1:~# cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_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_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
可以看出,当前CPU支持198MHz、396MHz、528Mhz和792MHz四种频率切换,其中调频策略为performance,也就是最高性能,直接用最高频率,不考虑耗电。
 
例如固定CPU频率为198MHz,具体修改方法有两种
1.修改文件系统
当用户有修改CPU频率需求时,ELF 1支持通过指令的方式调节CPU频率。
(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
(2)查看当前频率:
root@ELF1:~#  cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq
198000                                                  //当前频率
上述修改方法仅在终端中临时生效,如果想要断电不丢失,可以将修改频率的命令写进开机自启脚本中:
(1)开机自启脚本路径/etc/rc.local:
root@ELF1:~#  vi /etc/rc.local
(2)添加如下命令到开机自启脚本:
echo userspace > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
echo 198000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed
效果如下:


(3)保存退出并重启开发板。
(4)查看当前频率:
root@ELF1:~# cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq
198000                                                  //当前频率
可以看到CPU频率已经固定为198MHz了。

2.修改内核:
通过图形化界面配置Linux内核的CPU调频策略:
需要先执行“make imx6ull_elf1_defconfig”命令生成.config,然后再使用图形界面进行配置,因为“make menuconfig”进行图形配置时,是从.config中读取出来的。
elf@ubuntu:~/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@ubuntu:~/work/ELF/linux-4.1.15-elf1$ make imx6ull_elf1_defconfig   //生成.config
elf@ubuntu:~/work/ELF/linux-4.1.15-elf1$ make menuconfig
打开Linux内核的图形化配置界面,进入如下路径:
CPU Power Management
   -> CPU Frequency scaling
      -> Default CPUFreq governor
打开默认调频策略选择界面,选择“powersave”,选择以后保存退出图形化配置界面。


此时最新的配置会更新到.config,编译内核之前需要把.config文件中的配置复制到imx6ull_elf1_defconfig中,作为新的配置文件。
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
编译完成以后把新的zImage拷贝到开发板替换掉旧的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
当前CPU频率为198MHz了。查看scaling_governor文件看一下当前的调频策略:
root@ELF1:~# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
powersave
当前的CPU调频策略为powersave,也就是省电模式,该模式下系统运行在最低频率,功耗相应降低,但系统性能会受影响。
好啦,以上就是修改CPU固定频率的方法啦,希望对小伙伴们学习有所帮助哦!

这篇关于Days 33 ElfBoard 固定CPU频率的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/720078

相关文章

Android如何获取当前CPU频率和占用率

《Android如何获取当前CPU频率和占用率》最近在优化App的性能,需要获取当前CPU视频频率和占用率,所以本文小编就来和大家总结一下如何在Android中获取当前CPU频率和占用率吧... 最近在优化 App 的性能,需要获取当前 CPU视频频率和占用率,通过查询资料,大致思路如下:目前没有标准的

Go使用pprof进行CPU,内存和阻塞情况分析

《Go使用pprof进行CPU,内存和阻塞情况分析》Go语言提供了强大的pprof工具,用于分析CPU、内存、Goroutine阻塞等性能问题,帮助开发者优化程序,提高运行效率,下面我们就来深入了解下... 目录1. pprof 介绍2. 快速上手:启用 pprof3. CPU Profiling:分析 C

Ubuntu固定虚拟机ip地址的方法教程

《Ubuntu固定虚拟机ip地址的方法教程》本文详细介绍了如何在Ubuntu虚拟机中固定IP地址,包括检查和编辑`/etc/apt/sources.list`文件、更新网络配置文件以及使用Networ... 1、由于虚拟机网络是桥接,所以ip地址会不停地变化,接下来我们就讲述ip如何固定 2、如果apt安

MySQL的cpu使用率100%的问题排查流程

《MySQL的cpu使用率100%的问题排查流程》线上mysql服务器经常性出现cpu使用率100%的告警,因此本文整理一下排查该问题的常规流程,文中通过代码示例讲解的非常详细,对大家的学习或工作有一... 目录1. 确认CPU占用来源2. 实时分析mysql活动3. 分析慢查询与执行计划4. 检查索引与表

Python在固定文件夹批量创建固定后缀的文件(方法详解)

《Python在固定文件夹批量创建固定后缀的文件(方法详解)》文章讲述了如何使用Python批量创建后缀为.md的文件夹,生成100个,代码中需要修改的路径、前缀和后缀名,并提供了注意事项和代码示例,... 目录1. python需求的任务2. Python代码的实现3. 代码修改的位置4. 运行结果5.

SpringBoot实现基于URL和IP的访问频率限制

《SpringBoot实现基于URL和IP的访问频率限制》在现代Web应用中,接口被恶意刷新或暴力请求是一种常见的攻击手段,为了保护系统资源,需要对接口的访问频率进行限制,下面我们就来看看如何使用... 目录1. 引言2. 项目依赖3. 配置 Redis4. 创建拦截器5. 注册拦截器6. 创建控制器8.

使用Python检查CPU型号并弹出警告信息

《使用Python检查CPU型号并弹出警告信息》本教程将指导你如何编写一个Python程序,该程序能够在启动时检查计算机的CPU型号,如果检测到CPU型号包含“I3”,则会弹出一个警告窗口,感兴趣的小... 目录教程目标方法一所需库步骤一:安装所需库步骤二:编写python程序步骤三:运行程序注意事项方法二

Java程序到CPU上执行 的步骤

相信很多的小伙伴在最初学习编程的时候会容易产生一个疑惑❓,那就是编写的Java代码究竟是怎么一步一步到CPU上去执行的呢?CPU又是如何执行的呢?今天跟随小编的脚步去化解开这个疑惑❓。 在学习这个过程之前,我们需要先讲解一些与本内容相关的知识点 指令 指令是指导CPU运行的命令,主要由操作码+被操作数组成。 其中操作码用来表示要做什么动作,被操作数是本条指令要操作的数据,可能是内存地址,也

win10不用anaconda安装tensorflow-cpu并导入pycharm

记录一下防止忘了 一、前提:已经安装了python3.6.4,想用tensorflow的包 二、在pycharm中File-Settings-Project Interpreter点“+”号导入很慢,所以直接在cmd中使用 pip install -i https://mirrors.aliyun.com/pypi/simple tensorflow-cpu下载好,默认下载的tensorflow

定位cpu占用过高的线程和对应的方法

如何定位cpu占用过高的线程和对应的方法? 主要是通过线程id找到对应的方法。 1 查询某个用户cpu占用最高的进程号 top -u 用户名 2 查询这个进程中占用cpu最高的线程号 top –p 进程号-H    3 查询到进程id后把进程相关的代码打印到jstack文件 jstack -l pid > jstack.txt 4 在jstack文件中通过16进制的线程id搜索到