当前位置: 首页 > news >正文

[IMX6DL] CPU频率调节模式以及降频方法

本文转自http://blog.csdn.net/kris_fei/article/details/51822435

Kernel branch: 3.0.35

CPU的频率调节模式:
1. Performance.  不考虑耗电,只用最高频率。
2. Interactive.  直接上最高频率,然后看CPU负荷慢慢降低。
3. Powersave.    通常以最低频率运行,流畅度会受影响,一般不会用这个吧!
4. Userspace.    可以在用户空间手动调节频率。
5. Ondemand.    定期检查负载,根据负载来调节频率。

cpu频率相关的目录:
root@tek_mx6:/sys/devices/system/cpu/cpuX, X表示cpu number.

root@tek_mx6:/sys/devices/system/cpu/cpu0/cpufreq # ls
affected_cpus
cpuinfo_cur_freq
cpuinfo_max_freq
cpuinfo_min_freq
cpuinfo_transition_latency
related_cpus
scaling_available_frequencies
scaling_available_governors
scaling_cur_freq
scaling_driver
scaling_governor
scaling_max_freq
scaling_min_freq
scaling_setspeed
stats


工作模式:
当前支持的cpu调节模式可通过scaling_available_frequencies查看,
root@tek_mx6:/sys/devices/system/cpu/cpu0/cpufreq # cat scaling_available_governors
interactive conservative ondemand userspace powersave performance


可通过defconfig编译进去:
kernel_imx/arch/arm/configs/imx6_tek_android_defconfig:
CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
......
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
CONFIG_CPU_FREQ_GOV_POWERSAVE=y
CONFIG_CPU_FREQ_GOV_USERSPACE=y
CONFIG_CPU_FREQ_GOV_ONDEMAND=y
CONFIG_CPU_FREQ_GOV_INTERACTIVE=y
CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y

默认使用了performance,不过freescale在boot完成后改成了interactive.
device/fsl/tek_mx6/init.rc:
on property:sys.boot_completed=1
# Set default CPU frequency governor
# Set timer 40ms, min sample 60ms,hispeed at cpufreq MAX freq in freq_table at load 40%
    write /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor interactive

最终可通过scaling_governor文件查看。

工作频率:
当前支持的cpu调节模式可通过 scaling_available_frequencies 查看。
root@tek_mx6:/sys/devices/system/cpu/cpu0/cpufreq # cat scaling_available_frequencies
vailable_frequencies                                                          
996000 792000 396000


当前工作频率可通过scaling_cur_freq查看。

支持的频率以及最大频率是在文件: 

kernel_imx/arch/arm/mach-mx6/cpu_op-mx6.c

struct cpu_op *mx6_get_cpu_op(int *op)
{
if (cpu_is_mx6dl()) {
if (arm_max_freq == CPU_AT_1_2GHz) {
*op = num_cpu_op = ARRAY_SIZE(mx6dl_cpu_op_1_2G);
return mx6dl_cpu_op_1_2G;
} else if (arm_max_freq == CPU_AT_1GHz) {
*op = num_cpu_op = ARRAY_SIZE(mx6dl_cpu_op_1G);
return mx6dl_cpu_op_1G;
} else {
*op = num_cpu_op = ARRAY_SIZE(mx6dl_cpu_op);
return mx6dl_cpu_op;
}
} else if (cpu_is_mx6q()) {
......
} else {
......
}
}

 

根据平台以及默认的最大频率来选择对应的频率列表。


所以降频有两种方法:
1. 直接编译静态修改频率列表。
2. 通过scaling_max_freq文件动态写入。

转载于:https://www.cnblogs.com/Ph-one/p/11356103.html

相关文章:

  • 如何准备算法工程师面试,斩获一线互联网公司机器学习岗offer?
  • 常吃大蒜对人有什么好处与坏处?
  • 仙人掌果的功效与作用
  • 英文日记基础知识
  • MATLAB中图像的基本操作
  • Matlab基础:关于图像的基本操作
  • 查看当前Ubuntu系统的版本
  • ubuntu12.04 64位安装opencv-2.4.9
  • gcc 与 g++的区别
  • Linux中显示系统中USB信息的lsusb命令
  • uboot自定义添加命令
  • uboot移植spi驱动
  • 训练一个神经网络 能让她认得我
  • Matlab注释的几个方法
  • Matlab 图像平移、旋转、缩放、镜像
  • 《Java8实战》-第四章读书笔记(引入流Stream)
  • 08.Android之View事件问题
  • 2019年如何成为全栈工程师?
  • ComponentOne 2017 V2版本正式发布
  • Git 使用集
  • java中的hashCode
  • Spring Security中异常上抛机制及对于转型处理的一些感悟
  • vue中实现单选
  • 不发不行!Netty集成文字图片聊天室外加TCP/IP软硬件通信
  • 官方新出的 Kotlin 扩展库 KTX,到底帮你干了什么?
  • 聚类分析——Kmeans
  • 开放才能进步!Angular和Wijmo一起走过的日子
  • 马上搞懂 GeoJSON
  • 码农张的Bug人生 - 见面之礼
  • 浅谈JavaScript的面向对象和它的封装、继承、多态
  • 思否第一天
  • 系统认识JavaScript正则表达式
  • 阿里云API、SDK和CLI应用实践方案
  • #LLM入门|Prompt#1.7_文本拓展_Expanding
  • $.proxy和$.extend
  • (4)通过调用hadoop的java api实现本地文件上传到hadoop文件系统上
  • (delphi11最新学习资料) Object Pascal 学习笔记---第5章第5节(delphi中的指针)
  • (Redis使用系列) Springboot 使用redis实现接口幂等性拦截 十一
  • (附源码)计算机毕业设计SSM教师教学质量评价系统
  • (十六)Flask之蓝图
  • (十五)devops持续集成开发——jenkins流水线构建策略配置及触发器的使用
  • (转)甲方乙方——赵民谈找工作
  • *ST京蓝入股力合节能 着力绿色智慧城市服务
  • .bat批处理出现中文乱码的情况
  • .net打印*三角形
  • .NET基础篇——反射的奥妙
  • .Net接口调试与案例
  • .NET与java的MVC模式(2):struts2核心工作流程与原理
  • .NET正则基础之——正则委托
  • .NET中的Event与Delegates,从Publisher到Subscriber的衔接!
  • .w文件怎么转成html文件,使用pandoc进行Word与Markdown文件转化
  • [ 蓝桥杯Web真题 ]-布局切换
  • [22]. 括号生成
  • [Angular] 笔记 7:模块
  • [C++] 统计程序耗时