Android Thermal HAL 降龙十八掌
基本概念
参阅下面两篇文章,就可以大概了解一些概念的内容了
https://source.android.com/devices/architecture/hidl/thermal-mitigation
https://blog.csdn.net/feelabclihu/article/details/107873407
功能实现
这里我们不做讲解,直接给参考例子,基本拿来可以用
》Thermal HAL 2.0的实现
https://github.com/LineageOS/android_hardware_google_pixel/tree/lineage-18.1/thermal
》sepolicy相关设置
https://github.com/LineageOS/android_hardware_google_pixel-sepolicy/tree/lineage-19.0/thermal
》thermal_info_config配置文件,根据自身系统配置
https://github.com/LineageOS/android_device_google_taimen/blob/lineage-17.1/thermal_info_config.json
测试
技巧一:
执行 adb shell dumpsys thermalservice 可以查看温度的信息,例如:

技巧二:
Linux kernel中有模拟温度的方式,编内核时打开选项开关CONFIG_THERMAL_EMULATION=y,这样就会看到如下这个值:
/sys/class/thermal/thermal_zone0/emul_temp
之后测试可以:
echo 100000 > /sys/class/thermal/thermal_zone0/emul_temp
然后使用dumpsys thermalservice 查看这个模拟的温度值
VTS/CTS测试
几个相关的测试项
run vts -m VtsHalThermalV2_0TargetTest
run vts -m VtsHalThermalV1_0TargetTest
run vts -m VtsHalThermalV1_1TargetTest
run cts -m CtsOsTestCases -t android.os.cts.PowerManager_ThermalTest
补充
/frameworks/base/services/core/java/com/android/server/power/ThermalManagerService.java
Android framework中有去注册监听器,检测Thermal HAL 的回调事件,高温时可能出发shutdown
private void shutdownIfNeeded(Temperature temperature) {
if (temperature.getStatus() != Temperature.THROTTLING_SHUTDOWN) {
return;
}
final PowerManager powerManager = getContext().getSystemService(PowerManager.class);
switch (temperature.getType()) {
case Temperature.TYPE_CPU:
// Fall through
case Temperature.TYPE_GPU:
// Fall through
case Temperature.TYPE_NPU:
// Fall through
case Temperature.TYPE_SKIN:
powerManager.shutdown(false, PowerManager.SHUTDOWN_THERMAL_STATE, false);
break;
case Temperature.TYPE_BATTERY:
powerManager.shutdown(false, PowerManager.SHUTDOWN_BATTERY_THERMAL_STATE, false);
break;
}
}
关于温度的几个等级可以参考 https://source.android.com/devices/architecture/hidl/thermal-mitigation
触发这些事件的温度就是我们在thermal_info_config.json配置的, 如果不需要触发回调事件可以设置 "Monitor":false
"Sensors":[
{
"Name":"cpu-thermal",
"Type":"CPU",
"HotThreshold":[
"NAN",
"NAN",
"NAN",
95.0,
"NAN",
"NAN",
125.0
],
"VrThreshold":"NAN",
"Multiplier":0.001,
"Monitor":false
}
]
Android Thermal HAL 降龙十八掌的更多相关文章
- 【转】【Android】HAL分析
原文网址:http://www.cnblogs.com/lcw/p/3335505.html HAL概述 以下是基于android4.0.3,对应其他低版本的代码,可能有所差异,但基本大同小异. An ...
- 【Android】HAL分析
HAL概述 以下是基于android4.0.3,对应其他低版本的代码,可能有所差异,但基本大同小异. Android的HAL是为了保护一些硬件提供商的知识产权而提出的,是为了避开linux的GPL束缚 ...
- 关于Android的HAL的一些理解
之前一直在学习基于Linux内核的一些字符型驱动的编程,对Linux内核驱动也算有了一些基本的了解吧,后来也做过一些基于Linux内核的驱动开发,像基于Android的CC1101高频模块的驱动开发, ...
- Android Camera HAL浅析
1.Camera成像原理介绍 Camera工作流程图 Camera的成像原理可以简单概括如下: 景物(SCENE)通过镜头(LENS)生成的光学图像投射到图像传感器(Sensor)表面上,然后转为电信 ...
- Android硬件抽象层(HAL)深入剖析(三)【转】
前面分析了android HAL层是如何搜索硬件模块的动态共享库的,其实就是在"system/lib/hw/"或者"/vendor/lib/hw/"这两个路径下 ...
- Android硬件抽象层(HAL)深入剖析(二)【转】
上一篇我们分析了android HAL层的主要的两个结构体hw_module_t(硬件模块)和hw_device_t(硬件设备)的成员,下面我们来具体看看上层app到底是怎么实现操作硬件的? 我们知道 ...
- Android硬件抽象层(HAL)深入剖析(一)【转】
作为一个搞android驱动或者说搞底层的人,我觉得对于hal那是必须要掌握的,而且必须达到一定深度,于是我总结了一下,将整个自己的分析思路写下来. 主要是看android源代码,根据源代码得到的思路 ...
- Android硬件抽象层(HAL)深入剖析(二)
上一篇我们分析了android HAL层的主要的两个结构体hw_module_t(硬件模块)和hw_device_t(硬件设备)的成员,下面我们来具体看看上层app到底是怎么实现操作硬件的? 我们知道 ...
- Android系统HAL开发实例
1.前言 Android系统使用HAL这种设计模式,使得上层服务与底层硬件之间的耦合度降低,在文件: AOSP/hardware/libhardware/include/hardware/hardwa ...
随机推荐
- YbtOJ#482-爬上山顶【凸壳,链表】
正题 题目链接:https://www.ybtoj.com.cn/contest/116/problem/2 题目大意 \(n\)个点,\(x\)坐标递增,第\(i\)个点向第\(j\)个点连边. 开 ...
- Selenium自动化结合Mysql数据项目实战操作
前言 web自动化结合Mysql做一些实战操作,今天实战的场景是通过读取web页面字段名与数据库相应的表中的字段名进行对比 - 注:商城是自己搭建在本地,小伙伴需要源码请私聊 解决思路 第一步:获取w ...
- vue成就购物城的功能 (展示增删改查)
<!DOCTYPE html><html> <!DOCTYPE html> <html> <head> <meta charset=& ...
- Dapr + .NET Core实战(十-终篇)K8S运行Dapr
工作原理 为了实现在k8s上安装Dapr,Dapr需要部署dapr-sidecar-injector.dapr-operator.dapr-placement和dapr-sentry服务. dapr- ...
- 从0到1使用Kubernetes系列——Kubernetes入门
基本概念 Docker 是什么 Docker 起初是 dotCloud 公司创始人 Solomon Hykes 在法国的时候发起的一项公司内部项目,Docker 是基于 dotCloud 公司多年云服 ...
- Python小知识之对象的比较
好久不见 国庆回了趟老家,躺平了10天.作息时间基本和小学生差不多,8.9点就睡了, 那滋味别提多舒服了.时间也和小时候过得一样慢了...长时间不更新,还是不行滴,粉都快掉没了. 今天就结合日常生活的 ...
- Windows Terminal 美化教程
Windows Terminal 美化教程 1.安装Windows Terminal 在微软商店搜索Windows Terminal下载即可 2.安装相应的插件 使用管理员权限打开Windows Te ...
- 洛谷4234最小差值生成树 (LCT维护生成树)
这也是一道LCT维护生成树的题. 那么我们还是按照套路,先对边进行排序,然后顺次加入. 不过和别的题有所不同的是: 在本题中,我们需要保证LCT中正好有\(n-1\)条边的时候,才能更新\(ans\) ...
- 洛谷1501 Tree II(LCT,路径修改,路经询问)
这个题是一个经典的维护路径信息的题,对于路径上的修改,我们只需要把对应的链\(split\)上来,然后修改最上面的点就好,注意pushdown的时候的顺序是先乘后加 然后下传乘法标记的时候,记得把对应 ...
- SpringBoot-自动装配2
配置文件到底能写什么?怎么写? SpringBoot官方文档中有大量的配置,直接去记忆的话,好像不是我们程序员的行事风格! 分析自动配置原理 能自动配置的组件一般都有命名为下面规则的两个类: xxxx ...