全志A133 android10 thermal温控策略配置调试

一,功能介绍

Thermal简称热控制系统,其功能是通过temperature sensor(温度传感器)测量当前CPU、GPU等设备的温度值,然后根据此温度值,影响CPU、GPU等设备的调频策略,对CPU、GPU等设备的最大频率进行限制,最终实现对CPU、GPU等设备温度的闭环控制,避免SOC温度过高。


二,DTS配置

源码位置:longan/kernel/linux-4.9/arch/arm64/boot/dts/sunxi/sun50iw10p1.dtsi

thermal-zones {
        cpu_thermal_zone {
                polling-delay-passive = <500>; //温度超过阈值,轮询温度周期(ms)
                polling-delay = <1000>; //温度未超过阈值,轮询温度周期(ms)
                thermal-sensors = <&ths 0>;
                sustainable-power = <1200>; //温度达到预设温度最大值,系统可分配的最大power
                k_po = <66>;
                k_pu = <132>;
                k_i = <0>;

                cpu_trips: trips {
                        cpu_threshold: trip-point@0 {
                                temperature = <70000>; //代表系统温控在70度左右开启
                                type = "passive";
                                hysteresis = <0>;
                        };
                        cpu_target: trip-point@1 {
                                temperature = <90000>; //代表系统最高温度是90度左右
                                type = "passive";
                                hysteresis = <0>;
                        };
                        cpu_crit: cpu_crit@0 {
                                temperature = <110000>; //代表系统到达110度就会过温关机
                                type = "critical";
                                hysteresis = <0>;
                        };
                };
				cooling-maps {
                           map0 {
                                   trip = <&cpu_target>;
                                   cooling-device = <&cpu0
                                   THERMAL_NO_LIMIT
                                   THERMAL_NO_LIMIT>;
                                   contribution = <1024>; //cpu分配功率权重,通过调整cooling device对应的contribution,可以调整降频顺序和降频尺度
                           };
                   /*      map1{
                                   trip = <&cpu_target>;
                                   cooling-device = <&gpu
                                   THERMAL_NO_LIMIT
                                   THERMAL_NO_LIMIT>;
                                   contribution = <1024>;
                           };      */
                   };
           };
           gpu_thermal_zone{
                   polling-delay-passive = <500>;
                   polling-delay = <1000>;
                   thermal-sensors = <&ths 1>;
                   sustainable-power = <1100>;
           };
           ddr_thermal_zone{
                   polling-delay-passive = <0>;
                   polling-delay = <0>;
                   thermal-sensors = <&ths 2>;
           };
   };

temperature: 可根据产品温控规格,适当调整。

  1. 提高该参数,会允许系统在高温情况下运行更快,性能更好。当然,也会让产品的温度更高,所以需要注意,修改该参数后能否满足产品温度要求和高温测试等。
  2. 降低该参数就会在一定程度上降低高温情况下的性能,可以让产品运行在较低的温度。

三,调试方法

1. 查看sensor温度

查看thermal_zone的类型

#cat sys/class/thermal/thermal_zone0/type
cpu_thermal_zon

查看thermal_zone温度

#cat sys/class/thermal/thermal_zone0/temp
36000

温度单位为mC,也就是36摄氏度。

2. 模拟温度

thermal有温度模拟功能,可以通过模拟温度校验温度策略是否符合预期。

设置thermal_zone0的模拟温度
#echo 80000 > /sys/class/thermal/thermal_zone0/emul_temp
关闭thermal_zone0的模拟温度功能
#echo 0 > /sys/class/thermal/thermal_zone0/emul_temp

3. 关闭温控

a. 通过调试节点关闭温控

确认cpu温控为thermal_zone0

#cat /sys/class/thermal/thermal_zone0/type
cpu_thermal_zone

关闭温控策略

#echo disabled > /sys/class/thermal/thermal_zone0/mode

接触所有cooling device的限制

#echo 0 > /sys/class/thermal/thermal_zone0/cdev*/cur_state
b. 通过修改dts节点关闭温控

以关闭cpu温控为例,删除cpu_thermal_zone下的其他节点和属性

cpu_thermal_zone{
	polling‑delay‑passive = <0>;
	polling‑delay = <0>;
	thermal‑sensors = <&ths 0>;
};
<think>好的,我现在需要帮助用户解决全志A133芯片在Android 10系统上横屏显示的问题。首先,我需要回忆之前学过的相关知识,特别是关于全志平台屏幕配置的方法。 用户提到了几个引用,其中引用[1]是关于适配触摸屏的,引用[2]提到了修改sys_config.fex文件,引用[3]是关于屏幕旋转的build.prop配置。我需要把这些信息结合起来。 首先,横屏显示通常涉及显示方向和触摸校准两个方面。根据全志平台的常见配置方法,sys_config.fex文件中的屏幕参数设置是关键。用户提供的引用[2]提到了这个文件的路径,可能需要修改screen_width和screen_height的值,或者调整旋转参数如lcd_rotation。例如,将分辨率从1366x768改为768x1366可能适用于横屏,但需要确认硬件支持。 接下来,引用[3]中提到在build.prop中加入ro.sf.hwrotation属性,比如设置为90度旋转。这应该也是必要的一步,但需要确保系统服务支持这个属性,并且可能影响应用程序的布局。 另外,触摸屏的校准也很重要,引用[1]是关于触摸屏驱动的适配,可能需要检查触摸屏的坐标是否与旋转后的屏幕匹配。可能需要调整触摸驱动参数或使用工具校准。 可能的步骤是: 1. 修改sys_config.fex中的屏幕分辨率和旋转参数。 2. 更新build.prop中的旋转属性。 3. 校准触摸屏,确保触摸输入与显示方向一致。 还需要注意不同版本SDK路径的差异,用户需要根据实际路径调整。此外,可能需要重新编译系统镜像并刷机测试,这会有一定的风险,建议用户备份数据。 用户的问题可能涉及这些步骤中的遗漏或错误配置,需要逐一检查。例如,是否修改了正确的配置文件,参数是否正确,以及是否重新打包和烧录了固件。同时,不同硬件版本可能有不同的配置方式,需要参考具体的文档或社区经验。</think>针对全志A133 Android 10横屏显示问题,需通过系统参数调整和固件配置实现。以下是具体操作步骤: ### 一、屏幕方向基础配置 1. **修改sys_config.fex显示参数** - 路径:`/lichee/tools/pack/chips/sun8iw5p1/configs/vstar/sys_config.fex` - 关键参数调整: ```ini [lcd0_para] lcd_x = 768 # 原1366调整为物理横屏宽度 lcd_y = 1366 # 原768调整为物理竖屏度 lcd_rotation = 0 # 可选0/90/180/270,需配合硬件排线方向[^2] ``` - 注意:若硬件排线已固定方向,需优先设置`lcd_rotation`参数 2. **Android层强制旋转** - 修改`system/build.prop`文件: ```properties ro.sf.hwrotation=90 # 可设置0/90/180/270度系统级旋转[^3] ``` ### 二、触摸屏校准(必选步骤) ```diff # 修改触摸驱动参数 [ctp_para] ctp_screen_max_x = 1366 # 保持与逻辑分辨率一致 ctp_screen_max_y = 768 # 实际显示方向改变时需交换数值 ctp_revert_x_flag = 1 # X轴镜像翻转 ctp_revert_y_flag = 1 # Y轴镜像翻转 ``` 需通过`getevent`工具验证触摸坐标与显示区域的映射关系[^1] ### 三、系统服务适配 1. 在`frameworks/base/services/core/java/com/android/server/wm/DisplayRotation.java`中检查方向锁定逻辑: ```java // 确保未设置强制竖屏标志 Settings.Global.getInt(mContext.getContentResolver(), Settings.Global.USER_ROTATION_LOCKED, 0) == 0; ``` 2. SurfaceFlinger配置检查: ```shell adb shell dumpsys SurfaceFlinger | grep "Display orientation" ``` ### 四、固件更新流程 1. 修改后执行打包命令: ```bash cd /lichee && ./build.sh -p sun8iw5p1_android -b vstar pack ``` 2. 使用PhoenixSuit工具烧录新固件
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值