首页 > 其他 > 详细

SWT 重启案例分析(三)

时间:2019-08-09 15:30:28      阅读:110      评论:0      收藏:0      [点我收藏+]

技术分享图片

极力推荐文章:欢迎收藏
Android 干货分享

技术分享图片

阅读五分钟,每日十点,和您一起终身学习,这里是程序员Android

本篇文章主要介绍 Android 开发中的部分知识点,通过阅读本篇文章,您将收获以下内容:

一、 高温触发 Kernel Exception 重启问题
二、解决方案
三、提高电池温度方案

一、 高温触发 Kernel Exception 重启问题

手机 电池温度 默认60度以上高温会触发手机安全机制,让手机管家或者重启。

由温度异常导致手机重启的部分 Log 如下:
技术分享图片

二、解决方案

此问题 需要驱动同事修改底层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/?p=alps-mp-o1.mp1-V1.git;a=blob;f=alps/kernel-4.4/drivers/misc/mediatek/include/mt-plat/mt6739/include/mach/mtk_battery_table.h;h=7cb7b5e7e735a1907b941a6df5755c582ffca0ac;hb=7cb7b5e7e735a1907b941a6df5755c582ffca0ac#l111) [+116,8](http://192.168.11.104/gitweb/?p=alps-mp-o1.mp1-V1.git;a=blob;f=alps/kernel-4.4/drivers/misc/mediatek/include/mt-plat/mt6739/include/mach/mtk_battery_table.h;h=76ef73904571e7abf677cf9b73783b52131c467a;hb=76ef73904571e7abf677cf9b73783b52131c467a#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?20180528

+struct?FUELGAUGE_TEMPERATURE?Fg_Temperature_Table[NTC_NUM]?=?{

????????????????{-40,?195652},

????????????????{-35,?148171},

????????????????{-30,?113347},

@@ [-132,12](http://192.168.11.104/gitweb/?p=alps-mp-o1.mp1-V1.git;a=blob;f=alps/kernel-4.4/drivers/misc/mediatek/include/mt-plat/mt6739/include/mach/mtk_battery_table.h;h=7cb7b5e7e735a1907b941a6df5755c582ffca0ac;hb=7cb7b5e7e735a1907b941a6df5755c582ffca0ac#l132) [+138,17](http://192.168.11.104/gitweb/?p=alps-mp-o1.mp1-V1.git;a=blob;f=alps/kernel-4.4/drivers/misc/mediatek/include/mt-plat/mt6739/include/mach/mtk_battery_table.h;h=76ef73904571e7abf677cf9b73783b52131c467a;hb=76ef73904571e7abf677cf9b73783b52131c467a#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?20180528

+struct?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/?p=alps-mp-o1.mp1-V1.git;a=blob;f=alps/kernel-4.4/drivers/misc/mediatek/thermal/common/thermal_zones/mtk_ts_battery.c;h=f807c7272f610a9e61307eaebe0057ee0f157490;hb=f807c7272f610a9e61307eaebe0057ee0f157490#l134) [+134,7](http://192.168.11.104/gitweb/?p=alps-mp-o1.mp1-V1.git;a=blob;f=alps/kernel-4.4/drivers/misc/mediatek/thermal/common/thermal_zones/mtk_ts_battery.c;h=e201c1fc84ba09e04f8d53a5ca11993848df1feb;hb=e201c1fc84ba09e04f8d53a5ca11993848df1feb#l134) @@?static?int?bat_temp?=?21234;

?/*?static?int?battery_write_flag=0;?*/

-#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/?p=alps-mp-o1.mp1-V1.git;a=blob;f=alps/kernel-4.4/drivers/misc/mediatek/thermal/common/thermal_zones/mtk_ts_battery.c;h=f807c7272f610a9e61307eaebe0057ee0f157490;hb=f807c7272f610a9e61307eaebe0057ee0f157490#l455) [+455,8](http://192.168.11.104/gitweb/?p=alps-mp-o1.mp1-V1.git;a=blob;f=alps/kernel-4.4/drivers/misc/mediatek/thermal/common/thermal_zones/mtk_ts_battery.c;h=e201c1fc84ba09e04f8d53a5ca11993848df1feb;hb=e201c1fc84ba09e04f8d53a5ca11993848df1feb#l455) @@?static?int?tsbat_sysrst_set_cur_state(struct?thermal_cooling_device?*cdev,?unsig

????????????????pr_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/?p=alps-mp-o1.mp1-V1.git;a=blob;f=alps/kernel-4.4/drivers/power/mediatek/battery/mtk_battery.c;h=424147210393fd33fb205b40414683f5549b3cc2;hb=424147210393fd33fb205b40414683f5549b3cc2#l2041) [+2041,15](http://192.168.11.104/gitweb/?p=alps-mp-o1.mp1-V1.git;a=blob;f=alps/kernel-4.4/drivers/power/mediatek/battery/mtk_battery.c;h=97a739dc0bbddd02b32c85c1c99da6006e81e746;hb=97a739dc0bbddd02b32c85c1c99da6006e81e746#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/?p=alps-mp-o1.mp1-V1.git;a=blob;f=alps/kernel-4.4/drivers/power/mediatek/battery/mtk_battery.c;h=424147210393fd33fb205b40414683f5549b3cc2;hb=424147210393fd33fb205b40414683f5549b3cc2#l2078) [+2078,13](http://192.168.11.104/gitweb/?p=alps-mp-o1.mp1-V1.git;a=blob;f=alps/kernel-4.4/drivers/power/mediatek/battery/mtk_battery.c;h=97a739dc0bbddd02b32c85c1c99da6006e81e746;hb=97a739dc0bbddd02b32c85c1c99da6006e81e746#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/?p=alps-mp-o1.mp1-V1.git;a=blob;f=alps/kernel-4.4/drivers/power/mediatek/battery/mtk_battery.c;h=424147210393fd33fb205b40414683f5549b3cc2;hb=424147210393fd33fb205b40414683f5549b3cc2#l2098) [+2098,7](http://192.168.11.104/gitweb/?p=alps-mp-o1.mp1-V1.git;a=blob;f=alps/kernel-4.4/drivers/power/mediatek/battery/mtk_battery.c;h=97a739dc0bbddd02b32c85c1c99da6006e81e746;hb=97a739dc0bbddd02b32c85c1c99da6006e81e746#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/?p=alps-mp-o1.mp1-V1.git;a=blob;f=alps/kernel-4.4/drivers/power/mediatek/battery/mtk_battery.c;h=424147210393fd33fb205b40414683f5549b3cc2;hb=424147210393fd33fb205b40414683f5549b3cc2#l2334) [+2334,8](http://192.168.11.104/gitweb/?p=alps-mp-o1.mp1-V1.git;a=blob;f=alps/kernel-4.4/drivers/power/mediatek/battery/mtk_battery.c;h=97a739dc0bbddd02b32c85c1c99da6006e81e746;hb=97a739dc0bbddd02b32c85c1c99da6006e81e746#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/?p=alps-mp-o1.mp1-V1.git;a=blob;f=alps/kernel-4.4/drivers/power/mediatek/battery/mtk_battery_internal.h;h=6c2293cbfad5a14e479c095779d82e88d1032bcb;hb=6c2293cbfad5a14e479c095779d82e88d1032bcb#l34) [+34,7](http://192.168.11.104/gitweb/?p=alps-mp-o1.mp1-V1.git;a=blob;f=alps/kernel-4.4/drivers/power/mediatek/battery/mtk_battery_internal.h;h=304fc84470f8bdfdece2439cc5376b15c0b4dfba;hb=304fc84470f8bdfdece2439cc5376b15c0b4dfba#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*/

至此,本篇已结束,如有不对的地方,欢迎您的建议与指正。同时期待您的关注,感谢您的阅读,谢谢!

技术分享图片

SWT 重启案例分析(三)

原文:https://www.cnblogs.com/wangjie1990/p/11326935.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!