关于高通平台串口调试行为的一点说明
最近遇到一个问题,项目初期阶段,刚开机串口输入输出都正常,高通平台Android O kernel 3.18跑起来大概30-40s串口没有打印输出了,只有输入, eng/userdebug/user都一样。
先看kernel log:
[ 4.891514] msm_hsl_console_setup: console setup on port #0 |
看下代码kernel/printk/printk.c:register_console
/* |
ttyHSL0才是real console,bootconsole disable和这个问题没关系。
怀疑被重定向, 杀log相关进程不好使,改脚本去掉log进程服务,删log apk,因bringup阶段版本问题较多,稍耗时。
init.rc会起个console进程:
on property:ro.debuggable=1 |
cmd窗口下ps能看到
shell 6825 1 8060 1692 n_tty_read 7f98bac438 S /system/bin/sh |
试了下stop console串口就不能输入了,再start console,可以输入但问题还在,dmesg看了下,有个错误:
[ 17.338918] init: setpgid failed for console: Operation not permitted |
权限问题? BoardConfig.mk的cmdline加入selinux=permissive,问题还在,看了下是Android O新加的,具体在system/core/init/service.cpp:
void Service::SetProcessAttributes() { |
浏览kernel/logcat,忽然想到kernel log level, 和Android N对比,确实有差异。
最后到device一看, 居然是msm 默认行为:]
版权声明:本站所有文章均采用 CC BY-NC-SA 4.0 CN 许可协议。转载请注明原文链接!