![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
android thermal
文章平均质量分 96
kc专栏
深入探索android Framework层代码,博客持续更新中!!!
展开
-
温控daemon(三)sensor初始化
既上一篇博客继续分析main函数,上一篇博客我们分析了devices_init device的初始化,这篇博客先是分析保持KTM工作,后面主要分析sensor的初始化,。1. 保持KTM工作我们先来看如下,先是创建了一个kernel的client,然后因为有kernel 的device,所以会调用device_clnt_request函数 kernel_dev = devices_m...原创 2019-01-22 15:10:03 · 3431 阅读 · 0 评论 -
温控daemon(八)总结
温控的daemon,可以分为device、sensor、algorithm三大块。1. device一般为cpu、gpu等,具体可以调频、拔核等。2. sensor一般为温度的sensor,每个sensor会启动两个thread:其中一个thread用来检测sensor的温度,上层会设置thresholds到sensor驱动,然后daemon会使用poll等待驱动是事件,当温度大...原创 2019-02-28 15:47:09 · 910 阅读 · 0 评论 -
温控驱动(四)msm-tsens (2)设置温控传感器的threshold
这篇博客我们结合thermal-engine与驱动一起分析,如果设置温度传感器的threshold,以及thermal-engine的wait函数如何结束。一、thermal-engine的流程之前我们在博客 温控daemon(三)sensor初始化中分析过sensor监控温度的流程,以及在温控daemon(六)Monitor算法这两篇博客结合分析可以知道如何算法结合sensor控制温度。...原创 2019-01-22 15:05:27 · 2070 阅读 · 0 评论 -
温控驱动(一)msm_thermal(1)
之前我们分析了温控在用户空间的daemon程序,这里我们分析温控的驱动代码。我们分析驱动代码会结合daemon程序。温控的驱动,在daemon启动之前会监控温度、是否降频或者拔核。而在daemon启动之后会接管这块。一、msm_thermal的probe函数我们先从msm_thermal.c的驱动初始化分析,device在dts里面。static struct of_device_i...原创 2019-01-22 15:06:20 · 3826 阅读 · 0 评论 -
温控驱动(三)msm-tsens(1)流程
msm-tsens驱动主要是获取各个sensor的温度,我们先看下dts关于msm-tsens的device 476 tsens: tsens@4a8000 { 477 compatible = "qcom,msm8909-tsens"; 478 reg = <0x4a8000 0x2000>,...原创 2019-01-22 15:05:41 · 2103 阅读 · 0 评论 -
温控驱动(二)msm_thermal(2)
上一篇博客我们分析到用户空间在操作/sys/module/msm_thermal/parameters/enabled节点的时候,会去执行msm_thermal的set_enabled函数,然后又会执行interrupt_mode_init函数,我们继续分析。一、interrupt_mode_init函数这个函数执行之后用户空间的thermal-engine就接手了KTM cpu调频等功能...原创 2019-01-22 15:05:52 · 1742 阅读 · 0 评论 -
温控daemon(二)启动参数解析、device初始化
这样我们主要开始将thermal-engine的流程。1. thermal-engine启动先从启动开始说起,在init.target.rc中定义了thermal-engine为一个service,并且属于main class,随main服务一起启动。service thermal-engine /system/vendor/bin/thermal-engine class m...原创 2019-01-22 15:10:09 · 4659 阅读 · 1 评论 -
温控daemon(七)ss算法
monitor算法是一种静态算法,超过阈值就限制为多少频率,或者做什么处理,ss不一样它是一种动态算法。下面我们就从代码层面进行分析。也是在main函数中调用了ss_algo_init函数。1. ss_algo_init我们来看下这个函数的前半段函数,这里主要先是过滤配置中的setting,然后创建sensor的device的client,然后就是获取devie信息,还有就是将devi...原创 2019-01-22 15:10:42 · 2336 阅读 · 1 评论 -
温控daemon(一)概述
thermal-engine是一套通过检测android设备上的各个sensor是否温度过高,来限制cpu频率、cpu热插拔、gpu频率、carmera帧率,modem、LCD等各个模块的性能。温控模块分为用户层的thermal-engine和kernel层的KTM,当thermal-engine起来后会接管KTM的温控,thermal-engine的算法分为Threshold control...原创 2019-01-22 15:09:58 · 2759 阅读 · 0 评论 -
温控daemon(六)Monitor算法
Monitor算法温控的常见算法之一,在main函数中调用了thermal_monitor函数.Monitor算法是一种静态算法,当超过每一个设置的温度值就会调频,当小于clr的温度就会停止调频算法。1. thermal_monitor函数thermal_monitor函数先是从dev_list中获取了各个device_info放入device_info_arr中,然后过滤setting放...原创 2019-01-22 15:10:37 · 3442 阅读 · 0 评论 -
温控daemon(五)socket监控
这篇博客我们主要分析thermal-engine的socket监控,包括应用client的注册回调,以及client发送thermal消息都是通过socket。在thermal-engine启动分析的时候我们看到其创建了4个socket。1. socket初始化我们从main函数的thermal_server_init函数分析,这个函数其实流程很简单,对创建的4个socket,therma...原创 2019-01-22 15:10:32 · 2139 阅读 · 0 评论 -
温控daemon(四)加载配置文件
这篇博客我们主要分析thermal-engine中如何加载配置文件,包括代码中和配置文件。这里主要分析下thermal和ss算法的配置。加载配置,在main函数中主要涉及如下代码。 init_settings(&thermal_settings); pid_init_data(&thermal_settings);//pid算法我们平台disable后续分析 the...原创 2019-01-22 15:10:26 · 1679 阅读 · 0 评论 -
温控驱动(五)dts参数解析、节点作用
我们先看下dts中,各个参数的分析如下:poll-ms代表KTM检测温度的间隔limit-temp KTM调频的温度temp-hysteresis 当温度降到limit-temp - temp-hysteresis 频率升到前面档位freq-step 每次调频的步长(就是cpu频率的档位)core-limit-temp代表KTM拔核(除cpu0)的温度core-temp-h...原创 2019-02-27 15:59:11 · 3621 阅读 · 0 评论