丹东企业网站建设平台,教育网站开发文档,义乌网站建设,衡水网站优化推广和你一起终身学习#xff0c;这里是程序员Android 经典好文推荐#xff0c;通过阅读本文#xff0c;您将收获以下知识点: 一、高温触发 Kernel Exception 重启问题二、解决方案三、提高电池温度方案 一、 高温触发 Kernel Exception 重启问题 手机 电池温度 默认60度以上高温… 和你一起终身学习这里是程序员Android 经典好文推荐通过阅读本文您将收获以下知识点: 一、高温触发 Kernel Exception 重启问题二、解决方案三、提高电池温度方案 一、 高温触发 Kernel Exception 重启问题 手机 电池温度 默认60度以上高温会触发手机安全机制让手机管家或者重启。 由温度异常导致手机重启的部分 Log 如下 高温情况下Kernel Exception引起的重启问题 二、解决方案 此问题 需要驱动同事修改底层battery.c 文件中的一个地址不让其写为dead就不会重启。或者提高电池温度参数。 三、提高电池温度方案 提高电池温度的方案如下 1.修改mtk_battery_table.h /alps/kernel-4.4/drivers/misc/mediatek/include/mt-plat/mt6739/include/mach/mtk_battery_table.h * *///#define SPROCOMM_NTC //wang add#ifdef SPROCOMM_NTC#define NTC_COMP_RES 42#endif/* Qmax for battery */#define Q_MAX_L_CURRENT 0#define Q_MAX_H_CURRENT 10000 [-111,7](http://192.168.11.104/gitweb/?palps-mp-o1.mp1-V1.git;ablob;falps/kernel-4.4/drivers/misc/mediatek/include/mt-plat/mt6739/include/mach/mtk_battery_table.h;h7cb7b5e7e735a1907b941a6df5755c582ffca0ac;hb7cb7b5e7e735a1907b941a6df5755c582ffca0ac#l111) [116,8](http://192.168.11.104/gitweb/?palps-mp-o1.mp1-V1.git;ablob;falps/kernel-4.4/drivers/misc/mediatek/include/mt-plat/mt6739/include/mach/mtk_battery_table.h;h76ef73904571e7abf677cf9b73783b52131c467a;hb76ef73904571e7abf677cf9b73783b52131c467a#l116) int g_QMAX_SYS_VOL_T4[TOTAL_BATTERY_NUMBER] {36000, 36010, 36020, 36030};#define BIF_NTC_R 16000#if (BAT_NTC_10 1)-struct FUELGAUGE_TEMPERATURE Fg_Temperature_Table[21] {#define NTC_NUM 25 //wang add 20180528struct FUELGAUGE_TEMPERATURE Fg_Temperature_Table[NTC_NUM] {{-40, 195652},{-35, 148171},{-30, 113347}, [-132,12](http://192.168.11.104/gitweb/?palps-mp-o1.mp1-V1.git;ablob;falps/kernel-4.4/drivers/misc/mediatek/include/mt-plat/mt6739/include/mach/mtk_battery_table.h;h7cb7b5e7e735a1907b941a6df5755c582ffca0ac;hb7cb7b5e7e735a1907b941a6df5755c582ffca0ac#l132) [138,17](http://192.168.11.104/gitweb/?palps-mp-o1.mp1-V1.git;ablob;falps/kernel-4.4/drivers/misc/mediatek/include/mt-plat/mt6739/include/mach/mtk_battery_table.h;h76ef73904571e7abf677cf9b73783b52131c467a;hb76ef73904571e7abf677cf9b73783b52131c467a#l138) struct FUELGAUGE_TEMPERATURE Fg_Temperature_Table[21] {{45, 4917},{50, 4161},{55, 3535},- {60, 3014} {60, 3014}, {65, 2586}, {70, 2228}, {75, 1925}, {80, 1669}};#endif#if (BAT_NTC_47 1)-struct FUELGAUGE_TEMPERATURE Fg_Temperature_Table[21] {#define NTC_NUM 21 //wang add 20180528struct FUELGAUGE_TEMPERATURE Fg_Temperature_Table[NTC_NUM] {{-40, 1747920},{-35, 1245428},{-30, 898485}, 2. 修改mtk_ts_battery.c /alps/kernel-4.4/drivers/misc/mediatek/thermal/common/thermal_zones/mtk_ts_battery.c [-134,7](http://192.168.11.104/gitweb/?palps-mp-o1.mp1-V1.git;ablob;falps/kernel-4.4/drivers/misc/mediatek/thermal/common/thermal_zones/mtk_ts_battery.c;hf807c7272f610a9e61307eaebe0057ee0f157490;hbf807c7272f610a9e61307eaebe0057ee0f157490#l134) [134,7](http://192.168.11.104/gitweb/?palps-mp-o1.mp1-V1.git;ablob;falps/kernel-4.4/drivers/misc/mediatek/thermal/common/thermal_zones/mtk_ts_battery.c;he201c1fc84ba09e04f8d53a5ca11993848df1feb;hbe201c1fc84ba09e04f8d53a5ca11993848df1feb#l134) static int bat_temp 21234;/* static int battery_write_flag0; */-#define mtktsbattery_TEMP_CRIT 60000 /* 60.000 degree Celsius */#define mtktsbattery_TEMP_CRIT 80000 /* 60.000 degree Celsius */ //wang add 20180528#define mtktsbattery_dprintk(fmt, args...) \do { \ [-455,8](http://192.168.11.104/gitweb/?palps-mp-o1.mp1-V1.git;ablob;falps/kernel-4.4/drivers/misc/mediatek/thermal/common/thermal_zones/mtk_ts_battery.c;hf807c7272f610a9e61307eaebe0057ee0f157490;hbf807c7272f610a9e61307eaebe0057ee0f157490#l455) [455,8](http://192.168.11.104/gitweb/?palps-mp-o1.mp1-V1.git;ablob;falps/kernel-4.4/drivers/misc/mediatek/thermal/common/thermal_zones/mtk_ts_battery.c;he201c1fc84ba09e04f8d53a5ca11993848df1feb;hbe201c1fc84ba09e04f8d53a5ca11993848df1feb#l455) static int tsbat_sysrst_set_cur_state(struct thermal_cooling_device *cdev, unsigpr_debug();pr_debug(*****************************************);pr_debug();-- *(unsigned int *)0x0 0xdead; /* To trigger data abort to reset the system for thermal protection. */ //wang add 20180528 //*(unsigned int *)0x0 0xdead; /* To trigger data abort to reset the system for thermal protection. */}return 0;} 3. 修改 mtk_battery.c alps/kernel-4.4/drivers/power/mediatek/battery/mtk_battery.c [-2041,15](http://192.168.11.104/gitweb/?palps-mp-o1.mp1-V1.git;ablob;falps/kernel-4.4/drivers/power/mediatek/battery/mtk_battery.c;h424147210393fd33fb205b40414683f5549b3cc2;hb424147210393fd33fb205b40414683f5549b3cc2#l2041) [2041,15](http://192.168.11.104/gitweb/?palps-mp-o1.mp1-V1.git;ablob;falps/kernel-4.4/drivers/power/mediatek/battery/mtk_battery.c;h97a739dc0bbddd02b32c85c1c99da6006e81e746;hb97a739dc0bbddd02b32c85c1c99da6006e81e746#l2041) unsigned int TempConverBattThermistor(int temp)int i;unsigned int TBatt_R_Value 0xffff;- if (temp Fg_Temperature_Table[20].BatteryTemp) {- TBatt_R_Value Fg_Temperature_Table[20].TemperatureR; if (temp Fg_Temperature_Table[NTC_NUM - 1].BatteryTemp) { TBatt_R_Value Fg_Temperature_Table[NTC_NUM - 1].TemperatureR;} else if (temp Fg_Temperature_Table[0].BatteryTemp) {TBatt_R_Value Fg_Temperature_Table[0].TemperatureR;} else {RES1 Fg_Temperature_Table[0].TemperatureR;TMP1 Fg_Temperature_Table[0].BatteryTemp;- for (i 0; i 20; i) { for (i 0; i NTC_NUM; i) {if (temp Fg_Temperature_Table[i].BatteryTemp) {RES2 Fg_Temperature_Table[i].TemperatureR;TMP2 Fg_Temperature_Table[i].BatteryTemp; [-2078,13](http://192.168.11.104/gitweb/?palps-mp-o1.mp1-V1.git;ablob;falps/kernel-4.4/drivers/power/mediatek/battery/mtk_battery.c;h424147210393fd33fb205b40414683f5549b3cc2;hb424147210393fd33fb205b40414683f5549b3cc2#l2078) [2078,13](http://192.168.11.104/gitweb/?palps-mp-o1.mp1-V1.git;ablob;falps/kernel-4.4/drivers/power/mediatek/battery/mtk_battery.c;h97a739dc0bbddd02b32c85c1c99da6006e81e746;hb97a739dc0bbddd02b32c85c1c99da6006e81e746#l2078) int BattThermistorConverTemp(int Res)if (Res Fg_Temperature_Table[0].TemperatureR) {TBatt_Value -40;- } else if (Res Fg_Temperature_Table[20].TemperatureR) {- TBatt_Value 60; } else if (Res Fg_Temperature_Table[NTC_NUM - 1].TemperatureR) { TBatt_Value 80;} else {RES1 Fg_Temperature_Table[0].TemperatureR;TMP1 Fg_Temperature_Table[0].BatteryTemp;- for (i 0; i 20; i) { for (i 0; i (NTC_NUM - 1); i) {if (Res Fg_Temperature_Table[i].TemperatureR) {RES2 Fg_Temperature_Table[i].TemperatureR;TMP2 Fg_Temperature_Table[i].BatteryTemp; [-2098,7](http://192.168.11.104/gitweb/?palps-mp-o1.mp1-V1.git;ablob;falps/kernel-4.4/drivers/power/mediatek/battery/mtk_battery.c;h424147210393fd33fb205b40414683f5549b3cc2;hb424147210393fd33fb205b40414683f5549b3cc2#l2098) [2098,7](http://192.168.11.104/gitweb/?palps-mp-o1.mp1-V1.git;ablob;falps/kernel-4.4/drivers/power/mediatek/battery/mtk_battery.c;h97a739dc0bbddd02b32c85c1c99da6006e81e746;hb97a739dc0bbddd02b32c85c1c99da6006e81e746#l2098) int BattThermistorConverTemp(int Res)TBatt_Value (((Res - RES2) * TMP1) ((RES1 - Res) * TMP2)) / (RES1 - RES2);}- bm_trace([BattThermistorConverTemp] %d %d %d %d %d %d\n, RES1, RES2, Res, TMP1, TMP2, TBatt_Value); bm_trace([BattThermistorConverTemp] %d %d %d %d %d %d, wwwwwNTC_NUM %d\n, RES1, RES2, Res, TMP1, TMP2, TBatt_Value, NTC_NUM);return TBatt_Value;} [-2334,8](http://192.168.11.104/gitweb/?palps-mp-o1.mp1-V1.git;ablob;falps/kernel-4.4/drivers/power/mediatek/battery/mtk_battery.c;h424147210393fd33fb205b40414683f5549b3cc2;hb424147210393fd33fb205b40414683f5549b3cc2#l2334) [2334,8](http://192.168.11.104/gitweb/?palps-mp-o1.mp1-V1.git;ablob;falps/kernel-4.4/drivers/power/mediatek/battery/mtk_battery.c;h97a739dc0bbddd02b32c85c1c99da6006e81e746;hb97a739dc0bbddd02b32c85c1c99da6006e81e746#l2334) int force_get_tbat(bool update)bat_temperature_val force_get_tbat_internal(update);- while (counts 5 bat_temperature_val 60) {- bm_err([force_get_tbat]over60 count%d, bat_temp%d\n, counts, bat_temperature_val); while (counts 5 bat_temperature_val 80) {//wang submit 20180524 bm_err([force_get_tbat]over80 count%d, bat_temp%d\n, counts, bat_temperature_val);bat_temperature_val force_get_tbat_internal(true);counts;} 4.修改 mtk_battery_internal.h alps/kernel-4.4/drivers/power/mediatek/battery/mtk_battery_internal.h [-34,7](http://192.168.11.104/gitweb/?palps-mp-o1.mp1-V1.git;ablob;falps/kernel-4.4/drivers/power/mediatek/battery/mtk_battery_internal.h;h6c2293cbfad5a14e479c095779d82e88d1032bcb;hb6c2293cbfad5a14e479c095779d82e88d1032bcb#l34) [34,7](http://192.168.11.104/gitweb/?palps-mp-o1.mp1-V1.git;ablob;falps/kernel-4.4/drivers/power/mediatek/battery/mtk_battery_internal.h;h304fc84470f8bdfdece2439cc5376b15c0b4dfba;hb304fc84470f8bdfdece2439cc5376b15c0b4dfba#l34) #define SHUTDOWN_TIME 40#define AVGVBAT_ARRAY_SIZE 30#define INIT_VOLTAGE 3450-#define BATTERY_SHUTDOWN_TEMPERATURE 60#define BATTERY_SHUTDOWN_TEMPERATURE 80/* *//* typedef and Struct*/ 参考文献 【腾讯文档】Android Framework 知识库https://docs.qq.com/doc/DSXBmSG9VbEROUXF5 友情推荐 Android 开发干货集锦 至此本篇已结束。转载网络的文章小编觉得很优秀欢迎点击阅读原文支持原创作者如有侵权恳请联系小编删除欢迎您的建议与指正。同时期待您的关注感谢您的阅读谢谢 点击阅读原文为大佬点赞