极力推荐Android 开发大总结文章:欢迎收藏程序员Android 力荐 ,Android 开发者需要的必备技能

本篇文章主要介绍展讯平台手机开发中的部分重启问题知识点,通过阅读本篇文章,您将收获以下内容:

一、 User 版本 默认开启 sysdump 方法

一、 User 版本 默认开启 sysdump 方法

首先,为什么要这么干?userdebug 版本无法复现,User 版本 可以复现,这样才有此默认开启sysdump的方案。

那么展讯平台user版本默认开启sysdump 方案

修改一下代码device\sprd\xxxx\common\rootdir\root\init.common.rcon post-fs-data 下添加:

// 设置 Ylog 默认开启开关 1 开启,0或不写 关闭
setprop persist.ylog.enabled 1
start ylog
// 设置sysdump 默认开关属性值 开启为true  关闭 falsesetprop debug.sysdump.enabled truesetprop persist.sys.eng.reset 0

在代码中添加后,可以进行一下操作查看是否成功

  1. 确认是否开启sysdump 开关*#*#83781#*#* (进入工程模式菜单)->DEBUG&LOG -> YLog-> Setting -> Sysdump Enable (开启sysdump)

  1. 确认是否开Ylog*#*#83781#*#* (进入工程模式菜单)->DEBUG&LOG -> YLog (开启ylog)

Ylog关闭,sysdump 开关默认开启

二、插入SD卡 抓取Sysdump log

注意事项 一定要 插入4G及以上的SD卡,否则无法抓的重启的dump log

一定要 插入4G及以上的SD卡,否则无法抓的重启的dump log

三、 sysdump log 分析

插入SD 卡后,成功dump log信息如下:

dump log 成功的界面

dump log成功后,我们需要解析 sysdump log,解析过程中需要使用对应版本的vmlinux(out/target/product/sp9832e_1h10_go/obj/KERNEL/vmlinux) 以及 crash_arm(vendor/sprd/tools/crash/crash_arm) 解析脚本来解析dumpcore 文件。

新建解析dump log目录

  1. 将 vmlinux 、crash_arm、 sysdump log 放置同一目录

cp out/target/product/sp9832e_1h10_go/obj/KERNEL/vmlinux reboot/

cp vendor/sprd/tools/crash/crash_arm reboot/

将 vmlinux crash_arm sysdump log 放置同一目录

  1. 将 sysdump 所有文件 追加到一个文件中

将sysdump 所有文件 追加到一个文件中

  1. 使用 crash_arm 脚本 联合 vmlinux 解析 sysdump log

使用 crash_arm 脚本 联合 vmlinux 解析sysdump log

  1. 使用 Log 命令 将 Crash log追加到指定文件中

使用 log 命令 读取log 到指定文件

  1. 查看log,分析重启的具体原因

重启log举例

四、展讯平台抓取重启 串口log的方案

  1. 调高 Kernel log 等级为 7kernel/arch/arm/boot/dts/<sprd-xx-yourboard>.dts,将bootargs = ""里修改loglevel字段 1 修改为 7 loglevel=7, console=ttyS1,115200n8 。loglevel 即可。

调高 **Kernel log** 等级为 **7**

  1. 将 logcat log 重定向到 串口

修改init.common.rc代码(device/sprd/sharkle/common/rootdir/root/init.common.rc)。logcat重定向** Service** .

+service logcat /system/bin/logcat -f /dev/kmsg *:w+ class main+ user root+ group log+ oneshoton bootchown system system /proc/wcn_gnss/startchown system system /proc/wcn_gnss/stop
  1. disabble SElinux

在 init.cpp (/system/core/init/init.cpp)中,让selinux_is_enforcing(void)函数直接返回false,同时注掉selinux_status_from_cmdline()函数。

#if 0static selinux_enforcing_status selinux_status_from_cmdline() {selinux_enforcing_status status = SELINUX_ENFORCING;import_kernel_cmdline(false, [&](const std::string& key, const std::string& value, bool in_qemu) {        if (key == "androidboot.selinux" && value == "permissive") {status = SELINUX_PERMISSIVE;}});    return status;
}#endifstatic bool selinux_is_enforcing(void){#if 0if (ALLOW_PERMISSIVE_SELINUX) {        return selinux_status_from_cmdline() == SELINUX_ENFORCING;}    return true;#elsereturn false;#endif}

五、展讯平台判断重启类型

  1. 在main.log 中查看

在 main.log 中搜索关键字 bootmode

搜索关键字 bootmode

2.在 phone.info 文件中查看

在 Ylog ->poweron->aplog 目录下的phone.info 文件中 搜索关键字 bootmode

搜索关键字 bootmode

六、展讯平台关闭 sysdump 与watchdog关联

关闭sysdump 与watchdog 关联,防止开启sysdump 后watchdog被默认关闭,导致无法抓取复现到重启log的dump。kernel/drivers/soc/sprd/debug/sysdump/sysdump.c

            sysdump_status = 1;sprd_set_reboot_mode("dumpenable");set_sysdump_enable(1);//****************-           sysdump_enable_watchdog(0);//*************} else if (!strncmp(sysdump_buf, "off", 3)) {pr_emerg("sprd_sysdump_write: disable user version sysdump!!!\n");sysdump_status = 0;

删除 sysdump_enable_watchdog

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

如有侵权,请联系小编,小编对此深感抱歉,届时小编会删除文章,立即停止侵权行为,请您多多包涵。

既然都看到这里,领两个红包在走吧!以下两个红包每天都可以领取

1.支付宝搜索 522398497,或扫码支付宝红包海报。

支付宝扫一扫,每天领取大红包

2.微信红包,微信扫一扫即可领取红包

微信扫一扫,每天领取微信红包

小礼物走一走,来简书关注我

Android Framework 框架系列之 展讯手机重启相关推荐

  1. Android Framework 框架系列之PowerManager

    极力推荐Android 开发大总结文章:欢迎收藏程序员Android 力荐 ,Android 开发者需要的必备技能 本篇文章主要介绍 Android 开发中的部分知识点,通过阅读本篇文章,您将收获以下 ...

  2. Android Framework 框架系列之 MTK 功耗解决方案

    极力推荐Android 开发大总结文章:欢迎收藏程序员Android 力荐 ,Android 开发者需要的必备技能 本篇文章主要介绍手机开发中的功耗部分知识点,功耗直接影响到手机的待机时间,通过阅读本 ...

  3. Android 开发 框架系列 百度语音合成

    Android 开发 框架系列 百度语音合成 官方文档:http://ai.baidu.com/docs#/TTS-Android-SDK/6d5d6899 官方百度语音合成控制台:https://c ...

  4. Android Framework框架分析

    转自:微点阅读  https://www.weidianyuedu.com/content/2617738210126.html Android framework analysis (partI z ...

  5. mtk,展讯等手机平台知识杂烩

    mtk 采用联法科技的MT6205.MT6217.MT6218.MT6219.MT6226.MT6227.MT6228基带芯片,芯片均采用ARM7 的核. MT6305.MT6305B为电源管理芯片 ...

  6. 鹅厂流出两份Android Framework技术宝典火了,完整版 PDF 限时开放下载

    前言 最近互联网大厂的"裁员潮"愈演愈烈-- 如何破局?我想最重要的一点:不断提升个人价值. Android Framework的重要性 Android Framework 开发虽 ...

  7. Android Framework开发大揭秘!从小白到大佬的进阶之路

    听到有些Android开发工程师说去面试腾讯的时候,面试官上来就问: 安卓的系统架构了解吗? 有没有过Framework的开发经验? 由此可见,Framework在Android开发中占着举足轻重的地 ...

  8. android 多个catch,【Android开发坑系列】之try-catch

    try { mViewPager.postDelayed(new Runnable() { @Override public void run() { getCurrentPage().render( ...

  9. android framework架构文件详情

    摘要:转自:http://www.tuicool.com/articles/777r6rB,感谢博主分享.简介之前的研究太偏向应用层功能实现了,很多原理不了解没有详记,为了全面了解,重新梳理应用框架层 ...

  10. 关于android各种双卡手机获取imei,imsi的处置(mtk,展讯,高通等)

    2019独角兽企业重金招聘Python工程师标准>>> 关于android各种双卡手机获取imei,imsi的处理(mtk,展讯,高通等) 目前国内对于双卡智能手机的需求还是很大的, ...

最新文章

  1. Codeforces#363 Div2
  2. EOS 共识机制 (4)出块流程
  3. 用GDAL/OGR去读shapefile
  4. Java 的布局管理器GridBagLayout的使用方法【图文说明】
  5. bzoj 1797: [Ahoi2009]Mincut 最小割 (网络流)
  6. linux 命令find
  7. VS2013下使用QT和MFC的错误解决方案
  8. python循环抓取图片_【Python系列】第2篇:批量下载图片
  9. [干货]手把手教你写一个安卓app
  10. python安装os模块_python安装os
  11. c语言中取小数函数,C / C++ 保留小数函数(setprecision(n)的一些用法总结)
  12. 使用容联云通信实现发送验证码
  13. MySQL DBA的修炼与未来,看看老司机们怎么说?
  14. matlab集群版,分布式Matlab计算集群建立方法与Demo
  15. 怎么回答TCP的三次握手问题
  16. REXROTH比例阀的运用和特点
  17. django框架之中间件
  18. 2010年IT十大人物猜想
  19. 使用Zerotier+Moon结点内网穿透
  20. Java注解和反射,Java教程马士兵全集

热门文章

  1. 嵌入式Linux开发-根文件系统本地挂载
  2. c语言实现水仙花数 三个for循环 适合C语言初学者 大一学生
  3. Linux安装PHP(yum安装和编译安装)
  4. 基于Javascript和CSS的FLIP动画思路
  5. 冬季养胃就多喝红茶哦
  6. JVM性能监控 - jinfo查看和设置JVM配置参数
  7. 8.3 JVM命令行监控——jinfo
  8. Win 教程 Win7实现隔空投送
  9. XTUOJ 1176 I Love Military Chess(模拟)
  10. K8s系列之:Init Container初始化容器