展讯平台手机重启问题分析指南

2023-10-31 21:30

本文主要是介绍展讯平台手机重启问题分析指南,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

和你一起终身学习,这里是程序员Android

经典好文推荐,通过阅读本文,您将收获以下知识点:

一、 User 版本 默认开启 sysdump 方法
二、插入SD卡 抓取Sysdump log
三、 sysdump log 分析
四、展讯平台抓取重启 串口log的方案
五、展讯平台判断重启类型
六、展讯平台关闭 sysdump 与watchdog关联
七、展讯平台手动触发sysdump 方法

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

首先,为什么要这么干?
主要原因是,展讯平台部分重启问题,同样的代码,userdebug 版本无法复现,User 版本 可以复现,这样才有此默认开启sysdump的方案。

1.展讯平台user版本默认开启sysdump 方案

修改方案如下:
device\sprd\xxxx\common\rootdir\root\init.common.rc
在 on post-fs-data 下添加:

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

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

2.确认是否开启sysdump

*#*#83781#*#* (进入工程模式菜单) ->DEBUG&LOG -> YLog-> Setting -> Sysdump Enable (开启sysdump)

3. 确认是否开 Ylog

*#*#83781#*#*(进入工程模式菜单)->DEBUG&LOG -> YLog (开启ylog)

Ylog关闭,sysdump 开关默认开启

二、插入SD卡 抓取Sysdump log

1. 注意事项 一定要 插入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 放置同一目录

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

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

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

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

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

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

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

重启log举例

6.参考调试命令

32 位系统调试命令

./crash_arm -m phys_base=0X80000000 --cpus number2 vmlinux  all

64 位系统调试命令

./crash_arm64 vmlinux all -m phys_offset=0x80000000

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

1. 调高 Kernel log 等级为 7

修改代码路径如下:
kernel/arch/arm/boot/dts/<sprd-xx-yourboard>.dts,将bootargs = ""里修改loglevel字段 1 修改为 7 loglevel=7, console=ttyS1,115200n8 。

搜索关键字 loglevel 即可。

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

2. 将 logcat log 重定向到 串口

修改init.common.rc代码(device/sprd/sharkle/common/rootdir/root/init.common.rc)。
在 init 脚本中添加 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

3. disabble SElinux

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

#if 0
static 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

3. 在Sysdump中查看触发重启dump的类型

重启类型信息保存文件路径

Kernel panic 重启

手动触发sysdump 重启

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

关闭sysdump 与watchdog关联,防止开启sysdumpwatchdog被默认关闭,导致无法抓取复现到重启logdump

修改文件路径如下:

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

七、展讯平台手动触发sysdump方法

1. 在Kernel未完全死掉时候,触发SWT(优先方案)

手动触发方案:
同时按住音量+ 、音量- 、然后双击Power键

2. 在Kernel完全死掉,触发HWT

手动触发方案:
长按Power 键、 音量+

至此,本篇已结束。转载网络的文章,小编觉得很优秀,欢迎点击阅读原文,支持原创作者,如有侵权,恳请联系小编删除。同时感谢您的阅读,期待您的关注。

这篇关于展讯平台手机重启问题分析指南的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/318236

相关文章

详谈redis跟数据库的数据同步问题

《详谈redis跟数据库的数据同步问题》文章讨论了在Redis和数据库数据一致性问题上的解决方案,主要比较了先更新Redis缓存再更新数据库和先更新数据库再更新Redis缓存两种方案,文章指出,删除R... 目录一、Redis 数据库数据一致性的解决方案1.1、更新Redis缓存、删除Redis缓存的区别二

oracle数据库索引失效的问题及解决

《oracle数据库索引失效的问题及解决》本文总结了在Oracle数据库中索引失效的一些常见场景,包括使用isnull、isnotnull、!=、、、函数处理、like前置%查询以及范围索引和等值索引... 目录oracle数据库索引失效问题场景环境索引失效情况及验证结论一结论二结论三结论四结论五总结ora

element-ui下拉输入框+resetFields无法回显的问题解决

《element-ui下拉输入框+resetFields无法回显的问题解决》本文主要介绍了在使用ElementUI的下拉输入框时,点击重置按钮后输入框无法回显数据的问题,具有一定的参考价值,感兴趣的... 目录描述原因问题重现解决方案方法一方法二总结描述第一次进入页面,不做任何操作,点击重置按钮,再进行下

解决mybatis-plus-boot-starter与mybatis-spring-boot-starter的错误问题

《解决mybatis-plus-boot-starter与mybatis-spring-boot-starter的错误问题》本文主要讲述了在使用MyBatis和MyBatis-Plus时遇到的绑定异常... 目录myBATis-plus-boot-starpythonter与mybatis-spring-b

Redis主从复制实现原理分析

《Redis主从复制实现原理分析》Redis主从复制通过Sync和CommandPropagate阶段实现数据同步,2.8版本后引入Psync指令,根据复制偏移量进行全量或部分同步,优化了数据传输效率... 目录Redis主DodMIK从复制实现原理实现原理Psync: 2.8版本后总结Redis主从复制实

使用JavaScript将PDF页面中的标注扁平化的操作指南

《使用JavaScript将PDF页面中的标注扁平化的操作指南》扁平化(flatten)操作可以将标注作为矢量图形包含在PDF页面的内容中,使其不可编辑,DynamsoftDocumentViewer... 目录使用Dynamsoft Document Viewer打开一个PDF文件并启用标注添加功能扁平化

锐捷和腾达哪个好? 两个品牌路由器对比分析

《锐捷和腾达哪个好?两个品牌路由器对比分析》在选择路由器时,Tenda和锐捷都是备受关注的品牌,各自有独特的产品特点和市场定位,选择哪个品牌的路由器更合适,实际上取决于你的具体需求和使用场景,我们从... 在选购路由器时,锐捷和腾达都是市场上备受关注的品牌,但它们的定位和特点却有所不同。锐捷更偏向企业级和专

你的华为手机升级了吗? 鸿蒙NEXT多连推5.0.123版本变化颇多

《你的华为手机升级了吗?鸿蒙NEXT多连推5.0.123版本变化颇多》现在的手机系统更新可不仅仅是修修补补那么简单了,华为手机的鸿蒙系统最近可是动作频频,给用户们带来了不少惊喜... 为了让用户的使用体验变得很好,华为手机不仅发布了一系列给力的新机,还在操作系统方面进行了疯狂的发力。尤其是近期,不仅鸿蒙O

电脑显示hdmi无信号怎么办? 电脑显示器无信号的终极解决指南

《电脑显示hdmi无信号怎么办?电脑显示器无信号的终极解决指南》HDMI无信号的问题却让人头疼不已,遇到这种情况该怎么办?针对这种情况,我们可以采取一系列步骤来逐一排查并解决问题,以下是详细的方法... 无论你是试图为笔记本电脑设置多个显示器还是使用外部显示器,都可能会弹出“无HDMI信号”错误。此消息可能

mysql主从及遇到的问题解决

《mysql主从及遇到的问题解决》本文详细介绍了如何使用Docker配置MySQL主从复制,首先创建了两个文件夹并分别配置了`my.cnf`文件,通过执行脚本启动容器并配置好主从关系,文中还提到了一些... 目录mysql主从及遇到问题解决遇到的问题说明总结mysql主从及遇到问题解决1.基于mysql