
AI-摘要
Tianli GPT
AI初始化中...
介绍自己 🙈
生成本文简介 👋
推荐相关文章 📖
前往主页 🏠
前往爱发电购买
[Android稳定性] 第002篇 [原理篇] subsystem ramdump的原理介绍
iliuqi一、什么是SSR?
Subsystem:modem、LPASS、Venus、WCNSS、GPU、SLPI等,芯片由APSS处理器和额外处理器运行它们的软件。
SSR(Subsystem Restart,子系统重启)是高通的一个feature选项。如果SSR打开,尽管子系统crash了,仍然允许整个系统运行。
SSR Feature推荐用于出货设备从而减少子系统异常对整个系统的影响。
二、Subsystem RAMDump
当SSR feature打开后,subsystem如果发生crash重启时,整个系统是不会重启进入到dump界面的。此时,当Subsystem RAM dump feature
也打开后,子系统发生crash时重启前会收集一份RAM dump到特定的存储路径。
2.1 C3F项目的subsystem ramdump的流程
2.2 xx项目的subsystem ramdump的流程
三、使能SSR
3.1 打开驱动宏开关
3.1.1 C3F项目
kernel中开启SSR的宏开关,比如flame_GKI.config
1 | CONFIG_MSM_SUBSYSTEM_RESTART=m |
3.1. 2 C3F2项目
1 | CONFIG_DEV_COREDUMP=m |
注意:一般项目默认打开
3.2 enable/disable SSR指令
- adb shell setprop persist.vendor.ssr.restart_level ALL_ENABLE – 开启所有子系统的SSR
- adb shell setprop persist.vendor.ssr.restart_level ALL_DISABLE – 关闭所有子系统的SSR
- adb shell setprop persist.vendor.ssr.restart_level slpi – 开启SLPI子系统的SSR
- adb shell setprop persist.vendor.ssr.restart_level slpi,modem – 开启SLPI、Modem子系统的SSR
- adb shell getprop persist.vendor.ssr.restart_level – 查看当前SSR的配置
四、抓取subsystem ramdump日志
- ss_ramdump是高通闭源的模块,在subsystem restart前ss_ramdump服务器必须开启;
- ss_ramdump从Kernel区域使用RAM dump的设备节点/dev/rempoteproc_*获取RAM dump数据,确保这些设备节点存在。
- 设置subsystem的restart_level为相关的子系统,如
1 | adb shell setprop persist.vendor.ssr.restart_level slpi |
- 设置enable_ramdumps参数为1
1 | adb shell "echo 1 > /sys/module/subsystem_restart/parameters/enable_ramdumps" |
五、子系统crash指令
Test Case | MPSS | WLAN** PD** | LPASS(ADSP) | DSPS(SLPI) | CDSP |
---|---|---|---|---|---|
Software Error Fatal | 03 00 00 | 03 176 00 | 03 48 00 | 03 64 00 | 03 96 00 |
WDOG Bite(in STM) | 03 00 01 | NA | 03 48 01 | 03 64 01 | 03 96 01 |
Software Exception(NULL ptr) | 03 00 02 | 03 176 02 | 03 48 02 | 03 64 02 | 03 96 02 |
WDOG Bite(NOT in STM) | 03 00 06 | NA | 03 48 06 | 03 64 06 | 03 96 06 |
注意:所有的指令必须以 75 37
开头,比如:75 37 03 00 00
下面是发送指令的几种方法:
- QXDM
- QPST
六、小米的改造
整体小米项目中关于subsystem ramdump的feature的改造,只是对抓取的日志进行分类整理!高通原始的log都是放在/data/ramdump/中,而小米改造后,log将根据子系统的crash类型分类别抓取放在各自的目录下:
七、change参考
https://gerrit.odm.mioffice.cn/q/topic:o19\_enable\_subsystem\_ramdump
八、测试用例
- Windows 电脑成功安装 QXDM 工具
- 用 adb 命令打开 diag 口,命令是
1
setprop sys.usb.config diag,adb
- 确保测试前 modem ssr_dump 文件是空的:
1
rm -rf /data/vendor/bsplog/modem/ssr_dump/*
- 打开 SSR:(确保下面两个属性的值是 ALL_ENABLE 和 1)
1
2setprop persist.vendor.ssr.restart_level ALL_ENABLE
setprop persist.vendor.ssr.enable_ramdumps 1 - 打开 QXDM,选择 90DB 端口点 Connect 连接设备,在Command 栏输入
send_data 75 37 03 00 02
,然后回车,这样来制造 modem crash(可以发不同命令触发不同子系统 dump) - 每隔30秒发送一次指令,连续发生 15 次
- 查看 /data/vendor/bsplog/{子系统}/ssr_dump 路径下是否有ssr ramdump日志抓取
评论
匿名评论隐私政策