Linux内核移植之主频设置

一.  Linux内核移植

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

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


 

二.  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    : 5Hardware    : 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	: 5Hardware	: 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	: 5Hardware	: 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。跟之前比,降低了。


 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/133233.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[pytorch]手动构建一个神经网络并且训练

0.写在前面 上一篇博客全都是说明类型的,实际代码能不能跑起来两说,谨慎观看.本文中直接使用fashions数据实现softmax的简单训练并且完成结果输出.实现一个预测并且观测到输出结果. 并且更重要的是,在这里对一些训练的过程,数据的形式,以及我们在softmax中主要做什么以及怎么…

19.7 Boost Asio 传输序列化数据

序列化和反序列化是指将数据结构或对象转换为一组字节,以便在需要时可以将其存储在磁盘上或通过网络传输,并且可以在需要时重新创建原始对象或数据结构。 序列化是将内存中的对象转换为字节的过程。在序列化期间,对象的状态被编码为一组字节…

数字化转型:云表低代码开发助力制造业腾飞

数字化转型已成为制造业不可避免的趋势。为了应对市场快速变化、提高运营效率以及降低成本,制造业企业积极追求更加智能化、敏捷的生产方式。在这个转型过程中,低代码技术作为一种强大的工具,正逐渐崭露头角,有望加速制造业的数字…

Java设计模式——策略模式

1.策略模式简介 策略模式:策略模式是一种行为型模式,它将对象和行为分开,将行为定义为 一个行为接口 和 具体行为的实现。策略模式最大的特点是行为的变化,行为之间可以相互替换。每个if判断都可以理解为就是一个策略。本模式使得…

WindowsServer2019-搭建FTP服务器

这里写自定义目录标题 一、基础配置IP地址安装FTP服务检查连通性Windows10连接FTP服务 二、了解和使用FTP具体模块及其配置1、FTP IP地址和域限制2、FTP SSL设置3、FTP当前会话4、FTP防火墙5、FTP目录浏览6、FTP请求筛选7、FTP日志8、FTP身份验证9、FTP授权规则10、FTP消息11、…

云栖大会72小时沉浸式精彩回顾

计算,为了无法计算的价值 2023 杭州云栖大会震撼落幕 自2015年,云计算支撑着移动互联网创新 AI时代,继续支撑所有开发者的创新与梦想 当大会主题再次回归 让我们也打开时空隧道 一起回顾72小时云栖之旅 打造一朵AI时代最开放的云 随着…

Pinia的十个简答小案例

1. 使用Pinia进行状态管理: import { defineStore } from piniaexport const useCounterStore defineStore({id: counter,state: () > ({count: 0}),actions: {increment() {this.count},decrement() {this.count--}} }) 2. 在组件中使用Pinia: &…

【算法| 差分 No.1】AcWing 797. 差分 AcWing 798. 差分矩阵

个人主页:兜里有颗棉花糖 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 兜里有颗棉花糖 原创 收录于专栏【手撕算法系列专栏】 🍔本专栏旨在提高自己算法能力的同时,记录一下自己的学习过程,希望对大家有所帮…

基于单片机的语音存储与回放系统设计

博主主页:单片机辅导设计 博主简介:专注单片机技术领域和毕业设计项目。 主要内容:毕业设计、简历模板、学习资料、技术咨询。 文章目录 主要介绍一、控制系统设计1.1 系统方案设计1.2 系统工作原理 二、硬件电路设计总电路设计图 三、 软件设…

Android 应用流量监控实践

背景 得物Apm系统本身包含网络接口性能监控的能力,但接口监控主要关注的是接口的耗时、异常率等信息,没有流量消耗相关维度的统计信息,并且一部分流量消耗可能来自于音视频等其他特殊场景,在接口监控的盲区外。 为了了解用户目前…

知识注入以对抗大型语言模型(LLM)的幻觉11.6

知识注入以对抗大型语言模型(LLM)的幻觉 摘要1 引言2 问题设置和实验2.1 幻觉2.2 生成响应质量 3 结果和讨论3.1 幻觉3.2 生成响应质量 4 结论和未来工作 摘要 大型语言模型(LLM)内容生成的一个缺点是产生幻觉,即在输…

Java与Redis的集成

目录 Java连接Redis 导入依赖 Redis服务器准备 建立连接 Java操作Redis常用类型数据 Redis字符串(String) Redis哈希(Hash) Redis列表(List) Redis集合(Set) Redis有序集合(Sorted Set) Redis在项目应用…

Bi-TTCOF-Zn助力CO2还原制CO

精确调控氧化还原单元的组分、空间取向或连接模式对于深入了解高效的人工光合整体反应至关重要,但对于异质结构光催化剂而言,还很难实现。 基于此,华南师范大学兰亚乾教授和陈宜法教授等人报道了一系列用于人工光合综合反应的氧化还原分子结…

XShelll-修改快捷键-xftp-修改编辑器

文章目录 1.XShelll-修改快捷键2.Xftp-修改文本编辑器3.总结 1.XShelll-修改快捷键 工具>选项 鼠标键盘,右键编辑,新建快捷键。 复制粘贴改成shiftc,shiftv。更习惯一些。 2.Xftp-修改文本编辑器 xftp修改服务器文件默认的编辑器,是记…

(14)学习笔记:动手深度学习(Pytorch神经网络基础)

文章目录 神经网络的层与块块的基本概念自定义块 问答 神经网络的层与块 块的基本概念 以多层感知机为例, 整个模型接受原始输入(特征),生成输出(预测), 并包含一些参数(所有组成层…

mac电脑系统清理软件CleanMyMac X2024破解版下载

基本上,不管是win版还是Mac版的电脑,其装机必备就是一款电脑系统清理软件,就比如Mac,目前在市面上,电脑系统清理软件是非常多的。 对于不熟悉系统的用户来说,使用一些小众工具,往往很多用户都不…

腾讯云CVM S5服务器4核8G配置性能测评和优惠价格表

腾讯云4核8G服务器CVM标准型S5实例性能测评,包括CPU型号、内存、系统盘、CVM实例规格性能测评,腾讯云4核8G租用优惠价格表,腾讯云服务器网txyfwq.com分享腾讯云4核8G服务器CVM S5性能测评和优惠价格表: 腾讯云4核8G服务器CVM S5性…

C语言之认识柔性数组(flexible array)

在学习之前,我们首先要了解柔性数组是放在结构体当中的,知道这一点,我们就开始今天的学习吧! 1.柔性数组的声明 在C99中,结构中的最后一个元素允许是未知大小的数组,这就叫做柔性数组成员 这里的结构是结构…

青翼科技-国产化ARM系列TES720D-KIT

板卡概述 TES720D-KIT是专门针对我司TES720D(基于复旦微FMQL20S400的全国产化ARM核心板)的一套开发套件,它包含1个TES720D核心板,加上一个TES720D-EXT扩展底板。 FMQL20S400是复旦微电子研制的全可编程融合芯片,在单…

element的表单校验正常手机号码以及输入框填写“不详”的情况

element的表单校验正常手机号码以及输入框填写“不详”的情况 <el-col :span"6"><el-form-item label"手机号码" prop"phoneNumber" class"grid-content bg-purple"><el-input v-model"testForm.phoneNumber&quo…