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中主要做什么以及怎么…

Linux 指令心法(十五)`flash_eraseall` 擦除整个Flash存储器

文章目录 flash_eraseall作用flash_eraseall命令的主要特点和使用场景flash_eraseall命令应用方法flash_eraseall命令可以解决哪些问题?flash_eraseall命令使用时注意事项 flash_eraseall作用 这个命令可以擦除整个Flash存储器,将所有数据清除为初始状态。使用这个…

19.7 Boost Asio 传输序列化数据

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

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

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

rust持续学习 raw pointer 1

c里头 float a 1; float* p &a; 是可以直接 int * p1 (int*)p; 来强转类型做一些事情的经过了解 rust里是这么操作的 unsafe {std::mem::transmute::<origin_type, target_type>(raw_bytes) };比如上面是四个u8,可以拼一个u32 然后是函数指针这个东西 fn foo()…

Java设计模式——策略模式

1.策略模式简介 策略模式&#xff1a;策略模式是一种行为型模式&#xff0c;它将对象和行为分开&#xff0c;将行为定义为 一个行为接口 和 具体行为的实现。策略模式最大的特点是行为的变化&#xff0c;行为之间可以相互替换。每个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、…

useContext本身并不能直接向下传递方法,

useContext本身并不能直接向下传递方法&#xff0c;但可以通过将其包装在自定义 hook 中来实现。 例如&#xff0c;假设你有一个 context 叫做 MyContext&#xff0c;其中包含一个函数叫做 myFunction。你可以创建一个新的 hook 来暴露这个函数&#xff1a; jsx import { use…

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

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

C++中不允许复制的类

C中不允许复制的类 假设您需要模拟国家的政体。一个国家只能有一位总统&#xff0c;而 President 类面临如下风险&#xff1a; President ourPresident; DoSomething(ourPresident); // duplicate created in passing by value President clone; clone ourPresident; // dup…

Pinia的十个简答小案例

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

力扣:151. 反转字符串中的单词(Python3)

题目&#xff1a; 给你一个字符串 s &#xff0c;请你反转字符串中 单词 的顺序。 单词 是由非空格字符组成的字符串。s 中使用至少一个空格将字符串中的 单词 分隔开。 返回 单词 顺序颠倒且 单词 之间用单个空格连接的结果字符串。 注意&#xff1a;输入字符串 s中可能会存在…

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

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

easypoi 导出Excel 使用总结

easypoi 导出Excel 导出Excel需要设置标题&#xff0c;且标题是多行&#xff0c;标题下面是列表头 设置表格标题 ExportParams headExportParams new ExportParams();StringBuilder buffer new StringBuilder("");buffer.append("1、课程名称&#xff1a;....…

DS图—图非0面积/bfs【数据结构】

DS图—图非0面积 题目描述 编程计算由"1"围成的下列图形的面积。面积计算方法是统计"1"所围成的闭合曲线中"0"点的数目。如图所示&#xff0c;在10*10的二维数组中&#xff0c;"1"围住了15个点&#xff0c;因此面积为15。 提示&…

软考 系统架构设计师系列知识点之数字孪生体(3)

接前一篇文章&#xff1a;软考 系统架构设计师系列知识点之数字孪生体&#xff08;2&#xff09; 所属章节&#xff1a; 第11章. 未来信息综合技术 第5节. 数字孪生体技术概述 3. 数字孪生体的关键技术 建模、仿真和基于数据融合的数字线程是数字孪生体的三项核心技术。能够做…

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

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

Android 应用流量监控实践

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

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

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

1.OpenResty系列之入门简介

OpenResty&#xff08;也称为ngx_openresty&#xff09;是一个基于Nginx的全功能Web应用服务器&#xff0c;它将Nginx与一组附加模块和Lua脚本语言集成在一起&#xff0c;以提供高性能的Web应用程序开发和扩展性。 Nginx是一个轻量级的、高性能的HTTP服务器和反向代理服务器&a…