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

相关文章

python获取指定名字的程序的文件路径的两种方法

《python获取指定名字的程序的文件路径的两种方法》本文主要介绍了python获取指定名字的程序的文件路径的两种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 最近在做项目,需要用到给定一个程序名字就可以自动获取到这个程序在Windows系统下的绝对路径,以下

JavaScript中的高级调试方法全攻略指南

《JavaScript中的高级调试方法全攻略指南》什么是高级JavaScript调试技巧,它比console.log有何优势,如何使用断点调试定位问题,通过本文,我们将深入解答这些问题,带您从理论到实... 目录观点与案例结合观点1观点2观点3观点4观点5高级调试技巧详解实战案例断点调试:定位变量错误性能分

Python实现批量CSV转Excel的高性能处理方案

《Python实现批量CSV转Excel的高性能处理方案》在日常办公中,我们经常需要将CSV格式的数据转换为Excel文件,本文将介绍一个基于Python的高性能解决方案,感兴趣的小伙伴可以跟随小编一... 目录一、场景需求二、技术方案三、核心代码四、批量处理方案五、性能优化六、使用示例完整代码七、小结一、

Python中 try / except / else / finally 异常处理方法详解

《Python中try/except/else/finally异常处理方法详解》:本文主要介绍Python中try/except/else/finally异常处理方法的相关资料,涵... 目录1. 基本结构2. 各部分的作用tryexceptelsefinally3. 执行流程总结4. 常见用法(1)多个e

PHP应用中处理限流和API节流的最佳实践

《PHP应用中处理限流和API节流的最佳实践》限流和API节流对于确保Web应用程序的可靠性、安全性和可扩展性至关重要,本文将详细介绍PHP应用中处理限流和API节流的最佳实践,下面就来和小编一起学习... 目录限流的重要性在 php 中实施限流的最佳实践使用集中式存储进行状态管理(如 Redis)采用滑动

MyBatis-plus处理存储json数据过程

《MyBatis-plus处理存储json数据过程》文章介绍MyBatis-Plus3.4.21处理对象与集合的差异:对象可用内置Handler配合autoResultMap,集合需自定义处理器继承F... 目录1、如果是对象2、如果需要转换的是List集合总结对象和集合分两种情况处理,目前我用的MP的版本

JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法

《JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法》:本文主要介绍JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法,每种方法结合实例代码给大家介绍的非常... 目录引言:为什么"相等"判断如此重要?方法1:使用some()+includes()(适合小数组)方法2

JWT + 拦截器实现无状态登录系统

《JWT+拦截器实现无状态登录系统》JWT(JSONWebToken)提供了一种无状态的解决方案:用户登录后,服务器返回一个Token,后续请求携带该Token即可完成身份验证,无需服务器存储会话... 目录✅ 引言 一、JWT 是什么? 二、技术选型 三、项目结构 四、核心代码实现4.1 添加依赖(pom

504 Gateway Timeout网关超时的根源及完美解决方法

《504GatewayTimeout网关超时的根源及完美解决方法》在日常开发和运维过程中,504GatewayTimeout错误是常见的网络问题之一,尤其是在使用反向代理(如Nginx)或... 目录引言为什么会出现 504 错误?1. 探索 504 Gateway Timeout 错误的根源 1.1 后端

Python自动化处理PDF文档的操作完整指南

《Python自动化处理PDF文档的操作完整指南》在办公自动化中,PDF文档处理是一项常见需求,本文将介绍如何使用Python实现PDF文档的自动化处理,感兴趣的小伙伴可以跟随小编一起学习一下... 目录使用pymupdf读写PDF文件基本概念安装pymupdf提取文本内容提取图像添加水印使用pdfplum