exynos5410 TMU系统的critical情况处理方法

2023-11-21 00:20

本文主要是介绍exynos5410 TMU系统的critical情况处理方法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

根据TMU,将CPU的温升分为四种情况来处理,分别是下述情况:

THERMAL_TRIP_HOT
THERMAL_TRIP_ACTIVE
THERMAL_TRIP_PASSIVE
THERMAL_TRIP_CRITICAL

THERMAL_TRIP_HOT只是简单的调用该平台实现的notify函数即可。

THERMAL_TRIP_ACTIVE是主动降频,

THERMAL_TRIP_PASSIVE是被动降频。

主动降频和被动降频都是降低CPU主频来达到减少CPU发热的目的,但是两者还是有区别的,假如当前设定的CP最高主频是1.6G,主动降频就是调节CPU的频率低于1.6G,不限制CPU最高频率,被动降频就会把1.6G的上限向下设,比如1.2G,这样不论负载如何CPU的主频就不会超过1.2G。

THERMAL_TRIP_CRITICAL是要关闭系统,温度太高了,通常物理临界CPU的结温是120°C,三星的5410的最高结温是119°C。

drivers/thermal/thermal_sys.c

		case THERMAL_TRIP_CRITICAL:if (temp >= trip_temp) {pr_info("[TMU] CRITICAL: Need tripping\n");if (tz->ops->notify)ret = tz->ops->notify(tz, count,trip_type);if (ret) {pr_emerg("Critical temperature reached (%ld C), shutting down\n",temp/1000);orderly_poweroff(true);}}break;

即调用orderly_poweroff来关闭系统电源。

1. 工作温度
Ta 最高85度,只是表明在散热条件很好的情况下允许的环境温度,并不能表现为 CPU 在额定最高频率下的允许工作温度。
 
所以 5410 的 TMU 管理分为两步:
    - 在温度上升到trip门限的时候,通过限制DVFS最高level限制频率上升的方法来限制 CPU 性能
    - 如果降频调节温度的方法失败, CPU 温度持续上升,在上升到critical温度门限的时候,强制CPU关机。
 
在手机设计中通常的设计是将热量通过金属中框和LCD传导出去,其他的对体积没有要求的行业类应用中大部分是使用外加散热片的方法。
因为热阻的原因,可能环境温度60度时导流散热效果已经很弱。建议在加强散热导流的同时,引入主动散热机制。也就是加入散热风扇强制散热。
 
2. Power off
machine power off 过程最终会调用板子的 pm_power_off。在 TF4 环境中,调用的是 tf4_power_off (./arch/arm/mach-exynos/mach-tf4.c)。
tf4_power_off 的实现方法是通过释放 PS_HOLD 来通知 PMIC 掉电。在machine_init函数里会将pm_power_off指向该函数pm_power_off = tf4_power_off;

char poweroff_cmd[POWEROFF_CMD_PATH_LEN] = "/sbin/poweroff";
/*** orderly_poweroff - Trigger an orderly system poweroff* @force: force poweroff if command execution fails** This may be called from any context to trigger a system shutdown.* If the orderly shutdown fails, it will force an immediate shutdown.*/
int orderly_poweroff(bool force)
{int argc;char **argv = argv_split(GFP_ATOMIC, poweroff_cmd, &argc);static char *envp[] = {"HOME=/","PATH=/sbin:/bin:/usr/sbin:/usr/bin",NULL};int ret = -ENOMEM;struct subprocess_info *info;if (argv == NULL) {printk(KERN_WARNING "%s failed to allocate memory for \"%s\"\n",__func__, poweroff_cmd);goto out;}info = call_usermodehelper_setup(argv[0], argv, envp, GFP_ATOMIC);if (info == NULL) {argv_free(argv);goto out;}call_usermodehelper_setfns(info, NULL, argv_cleanup, NULL);ret = call_usermodehelper_exec(info, UMH_NO_WAIT);out:if (ret && force) {printk(KERN_WARNING "Failed to start orderly shutdown: ""forcing the issue\n");/* I guess this should try to kick off some daemon tosync and poweroff asap.  Or not even bother syncingif we're doing an emergency shutdown? */emergency_sync();kernel_power_off();}return ret;
}
EXPORT_SYMBOL_GPL(orderly_poweroff);

char poweroff_cmd[POWEROFF_CMD_PATH_LEN] = "/sbin/poweroff";
执行这个poweroff命令就可以使系统整机掉电。



这篇关于exynos5410 TMU系统的critical情况处理方法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/398476

相关文章

Spring Boot Controller处理HTTP请求体的方法

《SpringBootController处理HTTP请求体的方法》SpringBoot提供了强大的机制来处理不同Content-Type​的HTTP请求体,这主要依赖于HttpMessageCo... 目录一、核心机制:HttpMessageConverter​二、按Content-Type​处理详解1.

查看MySQL数据库版本的四种方法

《查看MySQL数据库版本的四种方法》查看MySQL数据库的版本信息可以通过多种方法实现,包括使用命令行工具、SQL查询语句和图形化管理工具等,以下是详细的步骤和示例代码,需要的朋友可以参考下... 目录方法一:使用命令行工具1. 使用 mysql 命令示例:方法二:使用 mysqladmin 命令示例:方

Linux系统调试之ltrace工具使用与调试过程

《Linux系统调试之ltrace工具使用与调试过程》:本文主要介绍Linux系统调试之ltrace工具使用与调试过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、ltrace 定义与作用二、ltrace 工作原理1. 劫持进程的 PLT/GOT 表2. 重定

Springboot实现推荐系统的协同过滤算法

《Springboot实现推荐系统的协同过滤算法》协同过滤算法是一种在推荐系统中广泛使用的算法,用于预测用户对物品(如商品、电影、音乐等)的偏好,从而实现个性化推荐,下面给大家介绍Springboot... 目录前言基本原理 算法分类 计算方法应用场景 代码实现 前言协同过滤算法(Collaborativ

JavaScript时间戳与时间的转化常用方法

《JavaScript时间戳与时间的转化常用方法》在JavaScript中,时间戳(Timestamp)通常指Unix时间戳,即从1970年1月1日00:00:00UTC到某个时间点经过的毫秒数,下面... 目录1. 获取当前时间戳2. 时间戳 → 时间对象3. 时间戳php → 格式化字符串4. 时间字符

Linux区分SSD和机械硬盘的方法总结

《Linux区分SSD和机械硬盘的方法总结》在Linux系统管理中,了解存储设备的类型和特性是至关重要的,不同的存储介质(如固态硬盘SSD和机械硬盘HDD)在性能、可靠性和适用场景上有着显著差异,本文... 目录一、lsblk 命令简介基本用法二、识别磁盘类型的关键参数:ROTA查询 ROTA 参数ROTA

Java中的getBytes()方法使用详解

《Java中的getBytes()方法使用详解》:本文主要介绍Java中getBytes()方法使用的相关资料,getBytes()方法有多个重载形式,可以根据需要指定字符集来进行转换,文中通过代... 目录前言一、常见重载形式二、示例代码三、getBytes(Charset charset)和getByt

nginx负载均衡及详细配置方法

《nginx负载均衡及详细配置方法》Nginx作为一种高效的Web服务器和反向代理服务器,广泛应用于网站的负载均衡中,:本文主要介绍nginx负载均衡及详细配置,需要的朋友可以参考下... 目录一、 nginx负载均衡策略1.1 基本负载均衡策略1.2 第三方策略1.3 策略对比二、 nginx配置2.1

一文带你搞懂Redis Stream的6种消息处理模式

《一文带你搞懂RedisStream的6种消息处理模式》Redis5.0版本引入的Stream数据类型,为Redis生态带来了强大而灵活的消息队列功能,本文将为大家详细介绍RedisStream的6... 目录1. 简单消费模式(Simple Consumption)基本概念核心命令实现示例使用场景优缺点2

Java调用Python的四种方法小结

《Java调用Python的四种方法小结》在现代开发中,结合不同编程语言的优势往往能达到事半功倍的效果,本文将详细介绍四种在Java中调用Python的方法,并推荐一种最常用且实用的方法,希望对大家有... 目录一、在Java类中直接执行python语句二、在Java中直接调用Python脚本三、使用Run