IMX8移植cpufreq子系统
CPUFreq的核心层位于drivers/cpufreq/cpufreq,c下,它为各个SoC的CPUFreq驱动的实现提供了一套统一的接口,并实现了一套notifier机制,可以在 CPUFreq的策略和频率改变的时候向其他模块发出通知。另外,在CPU运行频率发生变化的时候,内核的 loops perify常数也会发生相应变化。
LDFLAGS="" CC="$CC" make



cpuinfo_cur_freq: 当前cpu正在运行的工作频率
cpuinfo_max_freq:该文件指定了处理器能够运行的最高工作频率 (单位: 千赫兹)
cpuinfo_min_freq :该文件指定了处理器能够运行的最低工作频率 (单位: 千赫兹)
cpuinfo_transition_latency:该文件定义了处理器在两个不同频率之间切换时所需要的时间 (单位: 纳秒)
scaling_available_frequencies:所有支持的主频率列表 (单位: 千赫兹)
scaling_available_governors:该文件显示当前内核中支持的所有cpufreq governor类型
scaling_cur_freq:被governor和cpufreq核决定的当前CPU工作频率。该频率是内核认为该CPU当前运行的主频率
scaling_driver:该文件显示该CPU正在使用何种cpufreq driver
scaling_governor:通过echo命令,能够改变当前处理器的governor类型
scaling_max_freq:显示当前policy的上下限 (单位: 千赫兹)需要注意的是,当改变cpu policy时,需要首先设置scaling_max_freq, 然后才是scaling_min_freq
scaling_setspeed:如果用户选择了“userspace” governor, 那么可以设置cpu工作主频率到某一个指定值。
只需要这个值在scaling_min_freq 和 scaling_max_freq之间即可。
1、查看当前CPU支持的频率档位
cat scaling_available_frequencies
1300000 1235000 1170000 1040000 819000 598000 442000 299000
2、查看当前支持的governor
cat scaling_available_governors
ondemand userspace powersave interactive performance
performance表示不降频,
ondemand表示使用内核提供的功能,可以动态调节频率,
powersvae表示省电模式,通常是在最低频率下运行,
userspace表示用户模式,在此模式下允许其他用户程序调节CPU频率。
3、查看当前选择的governor
cat caling_governor
ondemand
4、查看系统支持多少核数
cat sys/devices/system/cpu/present
0-3
5、全开所有cpu ,在实际设置时,还需要(有root权限才可以设置)
"echo 0 > /proc/hps/enabled" (关闭cpu hotplug)
"echo performance > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor" (固定最高频)
echo 1 > /sys/devices/system/cpu/cpuX/online
X表示(0~3,不同平台CPU core 数是不一样的)
6、设置频率(可以先cat 出来当前的频率有哪些)
"cat /proc/cpufreq/cpufreq_ptpod_freq_volt"
[0] = { .cpufreq_khz = 1300000, .cpufreq_volt = 113750, .cpufreq_volt_org = 1250
00, },
[1] = { .cpufreq_khz = 1235000, .cpufreq_volt = 110000, .cpufreq_volt_org = 1231
25, },
[2] = { .cpufreq_khz = 1170000, .cpufreq_volt = 106250, .cpufreq_volt_org = 1206
25, },
[3] = { .cpufreq_khz = 1040000, .cpufreq_volt = 98750, .cpufreq_volt_org = 1150
00, },
[4] = { .cpufreq_khz = 819000, .cpufreq_volt = 95000, .cpufreq_volt_org = 1100
00, },
[5] = { .cpufreq_khz = 598000, .cpufreq_volt = 95000, .cpufreq_volt_org = 1050
00, },
[6] = { .cpufreq_khz = 442000, .cpufreq_volt = 95000, .cpufreq_volt_org = 1000
00, },
[7] = { .cpufreq_khz = 299000, .cpufreq_volt = 95000, .cpufreq_volt_org = 9500
0, },
"echo 0 >proc/cpufreq/cpufreq_oppidx"
设置后再cat 看一下当前的设置是否成功
"cat proc/cpufreq/cpufreq_oppidx"
cpufreq_oppidx = 0
OP(1300000, 113750),
OP(1235000, 110000),
OP(1170000, 106250),
OP(1040000, 98750),
OP(819000, 95000),
OP(598000, 95000),
OP(442000, 95000),
OP(299000, 95000),
7、查看当前状态有多少个CPU
cat sys/devices/system/cpu/online
IMX8移植cpufreq子系统的更多相关文章
- 基于tiny4412的Linux内核移植 -- PWM子系统学习(七)
作者信息 作者: 彭东林 邮箱:pengdonglin137@163.com QQ:405728433 平台简介 开发板:tiny4412ADK + S700 + 4GB Flash 要移植的内核版本 ...
- imx8移植opencv(3.0以上版本)笔记
基本步骤参考我同事的博客:https://blog.csdn.net/hunzhangzui9837/article/details/89846928 以下是在移植到imx8平台时的笔记和遇到的问题及 ...
- 基于tiny4412的Linux内核移植 -- PWM子系统学习(八)
作者信息 作者: 彭东林 邮箱:pengdonglin137@163.com QQ:405728433 平台简介 开发板:tiny4412ADK + S700 + 4GB Flash 要移植的内核版本 ...
- Linux动态频率调节系统CPUFreq之二:核心(core)架构与API
上一节中,我们大致地讲解了一下CPUFreq在用户空间的sysfs接口和它的几个重要的数据结构,同时也提到,CPUFreq子系统把一些公共的代码逻辑组织在一起,构成了CPUFreq的核心部分,这些公共 ...
- CPUFreq驱动
CPUFreq子系统位于 drivers/cpufreq目录下,负责进行运行过程中CPU频率和电压的动态调整,即DvFS( Dynamic Voltage Frequency Scaling,动态电压 ...
- 【原创】Linux cpufreq framework
背景 Read the fucking source code! --By 鲁迅 A picture is worth a thousand words. --By 高尔基 说明: Kernel版本: ...
- [转帖]Linux cpufreq 机制了解
Linux cpufreq 机制了解 https://www.cnblogs.com/armlinux/archive/2011/11/12/2396780.html 引用文章链接: http://w ...
- linux内核中有哪些子系统(框架)呢?
注意: 分析用的linux内核版本为5.1.3 1. RTC子系统 2. Remote Processor子系统 3. Remote Processor Message子系统 4. SCSI子系统 5 ...
- Linux 系统出现电流音解决方案
迫于Windows 系统最近的各种故障,今天脱坑换了openSUSE Linux ,在上网途中播放视频时偶尔会出现电流音,虽然影响不大,但是还是进行了一些排查. 通过观察电流音出现时的系统负载的波段, ...
随机推荐
- git 报错 error: failed to push some refs to .....
git push 代码的时候报错,报错如下: 这种报错是因为远程仓库的代码和本地仓库的代码不同步,对本地的代码进行一次拉取,再 git push 就可以解决了 通过如下命令进行代码合并 git pul ...
- Lock接口示例
Lock 的挂起 await() 唤醒signal() Lock 简单示例 public class LockDemo { public static void main(String[] args ...
- Zookeeper(2)---节点属性、监听和权限
之前通过客户端连接之后我们已经知道了zk相关的很多命令(Zookeeper(1)---初识). 节点属性: 现在我们就通过stat指令来看看节点都有哪些属性,或者使用get 指令和-s参数来查看节点数 ...
- 想买保时捷的运维李先生学Java性能之 生存与毁灭
一.判断对象是否存活 1.引用计数算法 给对象中添加一个引用计数器,每当有一个地方引用它时,计数器就加1:当引用失效时,计数器的值就减1:任何时刻计数器为0的对象是不可能再被使用的.引用计 ...
- 1. Spark Word Count
1. request: 2. scala: sc.textFile("input").flatMap(_.split(" ")).map((_,1)).redu ...
- Spider Storage Engine
这个引擎可以完成MySQL的数据库分片
- graph generation model
Generative Graph Models 第八章传统的图生成方法> The previous parts of this book introduced a wide variety of ...
- 「SHOI2014」三叉神经树
「SHOI2014」三叉神经树 给你一颗由\(n\)个非叶子结点和\(2n+1\)个叶子结点构成的完全三叉树,每个叶子结点有一个输出:\(0\)或\(1\),每个非叶子结点的输出为自己的叶子结点中较多 ...
- python0why study python
Python 越来越火爆 Python 在诞生之初,因为其功能不好,运转功率低,不支持多核,根本没有并发性可言,在计算功能不那么好的年代,一直没有火爆起来,甚至很多人根本不知道有这门语言. 随着时代的 ...
- 蒲公英 · JELLY技术周刊 Vol.29: 前端智能化在阿里的那些事
蒲公英 · JELLY技术周刊 Vol.29 前端智能化是指借助于 AI 和机器学习的能力拓展前端,使其拥有一些超出现阶段前端能力的特性,这将是未来前端方向中一场重要的变革.目前各家互联网厂商都有自己 ...