AM5708 thermal探究

第一部分:看一个SOC模块的基本套路

1、在网上查资料,看模块工作原理,以及现有的别人整理的一些文档

2、查看芯片手册、硬件原理图,了解特定SOC(am5708)此模块的特性:模块的基本架构、供电、时钟、复位、信号、管脚、中断、寄存器等信息

3、结合u-boot/kernel具体代码查看/配置/编写调试相应驱动

4、与硬件工程师一起调试驱动

第二部分:以am5708 thermal为例说明

一、网上搜索

找到高通、瑞芯微平台相关的资料;与TI am5708差异较大,没有参考价值

二、查看TI am5708芯片手册

芯片手册18.4.6.2Thermal Management Related Registers(P4140)

1、综述

片内有五个温度传感器,每个温度传感器与一个电源域关联,并且是VBGAPTS的一部分。VBGAPTS有一个10为的ADC,ADC将温度值成比例的转换为数字输出值。每个VBGAPTS由专用的Thermal FSM控制。FSM是CTRL_MODULE_CORE的子模块。所有的FSM的时钟来源于L3INSTR_TS_GCLK。电源、复位、时钟由PRCM管理。

Thermal相关的寄存器可以分为以下几个部分:

-控制寄存器

-thermal alert comparators(thermal警告比较器)寄存器

-温度时间戳寄存器

-其他寄存器

-控制FIFOs

-控制提供给FSMs的时钟

手册中对以上提到的寄存器及shutdown机制作了说明,可详看手册。

2、关键点

(1)Alert有高阈值、低阈值设置,可屏蔽高低Alert输出;用一条中断线提示高低警告的发生,机制详见下图

(2)Shutdown机制为芯片内部机制,不向用户提供接口。高TSHUT阈值为123摄氏度,低TSHUT阈值为105摄氏度。高于123摄氏度芯片会shutdown,温度低于105摄氏度时才会启动。

(3)Timestamp寄存器中可以记录前五次的温度值及相应的测量次数。

(4)Table 18-13为寄存器值与温度值的对应表。

三:代码追踪

1、查看设备树

我们板卡的设备树文件为arch/arm/boot/dts/am570x-mid.dts

arch/arm/boot/dts/am570x-mid.dts中

#include "dra72x.dtsi"

#include "am57xx-idk-common.dtsi"

arch/arm/boot/dts/dra72x.dtsi中

#include "dra7.dtsi"

arch/arm/boot/dts/dra7.dtsi中

bandgap: bandgap@4a0021e0 {

reg = <0x4a0021e0 0xc

0x4a00232c 0xc

0x4a002380 0x2c

0x4a0023C0 0x3c

0x4a002564 0x8

0x4a002574 0x50>;

compatible = "ti,dra752-bandgap";

interrupts = <GIC_SPI 121 IRQ_TYPE_LEVEL_HIGH>;

#thermal-sensor-cells = <1>;

};

thermal_zones: thermal-zones {

#include "omap4-cpu-thermal.dtsi"

#include "omap5-gpu-thermal.dtsi"

#include "omap5-core-thermal.dtsi"

#include "dra7-dspeve-thermal.dtsi"

#include "dra7-iva-thermal.dtsi"

};

&cpu_thermal {

polling-delay = <500>; /* milliseconds */

};

"omap4-cpu-thermal.dtsi"、"omap5-gpu-thermal.dtsi"、"omap5-core-thermal.dtsi"、"dra7-dspeve-thermal.dtsi"、"dra7-iva-thermal.dtsi"分别对应CPU、GPU、CORE、DSP、IVA的温度配置。

2、驱动代码

(1)主要的驱动代码在

  1. Drivers/thermal/thermal_core.c
  2. Drivers/thermal/ti-soc-thermal/dra752-thermal-data.c
  3. Drivers/thermal/ti-soc-thermal/ti-thermal-common.c
  4. Drivers/thermal/ti-soc-thermal/ti-bandgap.c

(2)从Drivers/thermal/ti-soc-thermal/ti-bandgap.c的

module_platform_driver(ti_bandgap_sensor_driver);开始看起。

A)驱动注册时根据设备树中获得的"ti,dra752-bandgap",会匹配到

static const struct of_device_id of_ti_bandgap_match[]

{

……

{

.compatible = "ti,dra752-bandgap",

.data = (void *)&dra752_data,

},

……

}

B)Drivers/thermal/ti-soc-thermal/dra752-thermal-data.c中的dra752_data根据芯片手册,定义了此thermal支持的特性、时钟源、ADC值到温度值的转换数组、ti_thermal_expose_sensor、ti_thermal_remove_sensor、五个温度传感器(相应的寄存器及其内部偏移、Alert、shutdown阈值配置等)等信息。

C)匹配成功后会调用ti_bandgap_probe函数

int ti_bandgap_probe(struct platform_device *pdev)

{

  1. ti_bandgap_build中创建设备、获得资源;若支持软件TSHUT,获得中断相应管脚
  2. 若支持TSHUT

ti_bandgap_tshut_init(申请中断,注册中断处理函数)

  1. 时钟获取、时钟设置
  2. 设置alert和shutdown的阈值
  3. 对于每个sensor,若有register_cooling,注册cooling;调用expose_sensor
  4. 若支持TALERT,初始化talert(ti_bandgap_talert_init)//申请中断,注册中断处理函数

}

D)int ti_thermal_expose_sensor(struct ti_bandgap *bgp, int id, char *domain)

{

->ti_bandgap_get_sensor_data(bgp, id);//获得私有数据

->   data->ti_thermal= devm_thermal_zone_of_sensor_register(bgp->dev,id,data, ti_of_thermal_ops);

//解析设备树中thermal,注册、设置各温度传感器的设备信息和ops

->   ti_bandgap_set_sensor_data(bgp, id, data);//设置私有数据

->ti_bandgap_write_update_interval(bgp, data->sensor_id,

data->ti_thermal->polling_delay);//设置采样时间间隔

}

(3)特别说明

文档中加粗的为比较重要的函数;若需要更改默认的Alert阈值,在dra752_data.sensors.ts_data中;若需要在发生Alert、shutdown时添加相应操作,在各自相应的中断处理函数中添加(注意中断内部添加代码的注意事项)

四、文件系统中

和thermal相关的设备文件如下图

由代码可知,cooling_device0是属于MPU的,但内核代码只是注册了这个设备,没有相应的冷却机制

thermal_zone0对应MPU的温度

thermal_zone1对应GPU的温度

thermal_zone2对应CORE的温度

thermal_zone3对应DSP的温度

thermal_zone4对应IVA的温度

通过thermal_zone*/temp可以查看当前温度

通过thermal_zone*/type可以查看此zone对应的设备

AM5708 thermal探究相关推荐

  1. 板卡测评 | 基于TI AM5708开发板——ARM+DSP多核异构开发案例分享

    本次测评板卡是创龙科技旗下的TL570x-EVM,它是一款基于TI Sitara系列AM5708ARM Cortex-A15+浮点DSPC66x处理器设计的异构多核SOC评估板,由核心板和评估底板组成 ...

  2. 吴恩达《深度学习》第四门课(2)卷积神经网络:实例探究

    2.1为什么要进行实例探究 (1)就跟学编程一样,先看看别人怎么写的,可以模仿. (2)在计算机视觉中一个有用的模型,,用在另一个业务中也一般有效,所以可以借鉴. (3)本周会介绍的一些卷积方面的经典 ...

  3. 异步编程之Promise(2):探究原理

    异步编程系列教程: (翻译)异步编程之Promise(1)--初见魅力 异步编程之Promise(2):探究原理 异步编程之Promise(3):拓展进阶 异步编程之Generator(1)--领略魅 ...

  4. Lucene.net中文分词探究

    一.中文分词方式: 中文分词几种常用的方式: A. 单字分词 单字分词,顾名思义,就是按照中文一个字一个字地进行分词.如:我们是中国人,效果:我/们/是/中/国/人. B. 二分法 二分法,就是按两个 ...

  5. 查询在应用程序运行得很慢, 但在SSMS运行得很快的原因探究

    原文:查询在应用程序运行得很慢, 但在SSMS运行得很快的原因探究 查询在应用程序运行得很慢, 但在SSMS运行得很快的原因探究 -理解性能疑点 1      引言 内容来自http://www.so ...

  6. 中文NLP的分词真有必要吗?李纪为团队四项任务评测一探究竟 | ACL 2019

    作者| Yuxian Meng.Xiaoya Li.Xiaofei Sun.Qinghong Han.Arianna Yuan. Jiwei Li 译者 | Rachel 责编 | Jane 出品 | ...

  7. 聚类分析案例:探究用户对物品类别的喜好细分降维

    聚类分析案例:探究用户对物品类别的喜好细分降维 数据如下: order_products__prior.csv:订单与商品信息 字段:order_id, product_id, add_to_cart ...

  8. 如何优化计算机网络课程,计算机论文:探究如何优化计算机网络课程教学方法.docx...

    计算机论文:探究如何优化计算机网络课程教学方法 一.引言 计算机网络的飞速发展不但加速了全球信息化的进程,也使我们的生活方式发生了深刻的变革.我们正处在一个数字化.网络化.信息化的时代,网络已经成为经 ...

  9. 求数的绝对值一定是正数_「口袋数学」绝对值的几何意义探究及应用,培优课程...

    哈喽,大家好!我们又见面了,欢迎继续关注[轩爸辅导]的[口袋数学].日更[每日一学][每日一练],帮助孩子日积月累,考出好的成绩.配套辅导,哪里不会学哪里,哪里出错练哪里,帮助孩子提高效率. 从数轴上 ...

  10. 探究!一个数据包在网络中的心路历程

    来自:小林coding 前言 想必不少小伙伴面试过程中,会遇到「当键入网址后,到网页显示,其间发生了什么」的面试题. 还别说,这真是挺常问的这题,前几天坐在我旁边的主管电话面试应聘者的时候,也问了这个 ...

最新文章

  1. ​​《自然》2020年十大科学发现出炉:病毒,冷冻电镜与快速射电暴
  2. DJANGO获取用户访问IP
  3. 让Exchange 2010 (2007适用)可以收发外部邮件
  4. Vue学习之路1 小白起步
  5. 23种设计模式C++源码与UML实现--外观模式
  6. python学习网址
  7. Git 添加到Git 仓库
  8. java 日期处理 口诀_java时间处理常用方法工具类
  9. leetcode71. 简化路径 Unix 风格
  10. python爬新闻动态_Python爬取新闻动态评论
  11. sort函数的使用(c++) bool函数使用
  12. 【BZOJ2565】最长双回文串(回文树)
  13. 《Python核心编程》18.多线程编程(二)
  14. php 网上支付之易宝支付
  15. 【应用安全】垃圾短信电话不断?手机变卡变慢?可能是共享充电宝的锅……
  16. window计算机截屏快捷键,电脑截图是ctrl加什么键win7快捷键截图方法详解
  17. Android穿山甲SDK接入,已封装直接使用
  18. Excel无法vlookup事件
  19. 学习GestureDetectorCompat,实现卡片左右滑动消失效果
  20. 我的世界启动器制作教程

热门文章

  1. 洛谷 桶哥的问题——吃桶——题解
  2. python之二进制
  3. 职场达人教你如何做高效工作汇报!
  4. 截止失真放大电路_【电子干货377】晶体三极管的一些常见应用电路
  5. npn三种波形失真_三极管放大电路各点电压、电流波形图
  6. 厉害!他33岁破格晋升教授和博导,成果还打破国外技术垄断
  7. 天梯赛+01训练总结
  8. 中国“秃”如其来的头发经济
  9. 1_绪论 分布式机器学习
  10. 用123 组成的6位数 的java代码,输入一个三位的整数,计算其每位数字的累加之和。例如:输入整数123后,其每位数字累加之和为6(1+2+3),感激不尽...