高通8953 Android 9.0 打开user调试串口

高通8953 Android 9.0 打开user调试串口

内核版本Linux4.9
平台高通8953
作者nineyole

我们在调试msm8953 9.0的版本的时候发现在userdebug模式下是可以使用串口控制台调试的,而在user模式下则是关闭的。

1、user模式打开kernel log调试

​ 我们都知道kernel的打印log是受CONFIG_SERIAL_MSM_CONSOLE控制的,因此我们可以来查询一下是哪些文件引用了CONFIG_SERIAL_MSM_CONSOLE

SC60Android9.0.0_kernel4.9kernel/msm-4.9$ grep -Fnr "CONFIG_SERIAL_MSM_CONSOLE" ./
./drivers/tty/serial/msm_serial.c:18:#if defined(CONFIG_SERIAL_MSM_CONSOLE) && defined(CONFIG_MAGIC_SYSRQ)
./drivers/tty/serial/msm_serial.c:1608:#ifdef CONFIG_SERIAL_MSM_CONSOLE
./arch/arm64/configs/defconfig:224:CONFIG_SERIAL_MSM_CONSOLE=y
./arch/arm64/configs/msm8937_defconfig:342:CONFIG_SERIAL_MSM_CONSOLE=y
./arch/arm64/configs/msm8953_defconfig:352:CONFIG_SERIAL_MSM_CONSOLE=y
./arch/arm/configs/msm8937_defconfig:343:CONFIG_SERIAL_MSM_CONSOLE=y
./arch/arm/configs/msm8909_defconfig:283:CONFIG_SERIAL_MSM_CONSOLE=y
./arch/arm/configs/qcom_defconfig:96:CONFIG_SERIAL_MSM_CONSOLE=y
./arch/arm/configs/msm8953_defconfig:342:CONFIG_SERIAL_MSM_CONSOLE=y
./arch/arm/configs/msm8909w_defconfig:265:CONFIG_SERIAL_MSM_CONSOLE=y
./arch/arm/configs/msm8953-batcam_defconfig:93:CONFIG_SERIAL_MSM_CONSOLE=y
./arch/arm/configs/multi_v7_defconfig:323:CONFIG_SERIAL_MSM_CONSOLE=y
./arch/arm/configs/msm8937go_defconfig:342:CONFIG_SERIAL_MSM_CONSOLE=y

可以看到在msm8953-perf_defconfig是没有定义CONFIG_SERIAL_MSM_CONSOLE的,因此我们只需要重新定义一下即可。

diff --git a/kernel/msm-4.9/arch/arm64/configs/msm8953-perf_defconfig b/kernel/msm-4.9/arch/arm64/configs/msm8953-perf_defconfig
index e89dd5bbc1..6d54607819 100755
--- a/kernel/msm-4.9/arch/arm64/configs/msm8953-perf_defconfig
+++ b/kernel/msm-4.9/arch/arm64/configs/msm8953-perf_defconfig
@@ -341,8 +341,10 @@ CONFIG_INPUT_UINPUT=y
 # CONFIG_LEGACY_PTYS is not set
 # CONFIG_DEVMEM is not set
 # CONFIG_DEVKMEM is not set
+CONFIG_SERIAL_MSM=y
+CONFIG_SERIAL_MSM_CONSOLE=y
 CONFIG_SERIAL_MSM_HS=y
-CONFIG_SERIAL_MSM_HSL_CONSOLE=y
+#CONFIG_SERIAL_MSM_HSL_CONSOLE=y
 CONFIG_SERIAL_MSM_SMD=y
 CONFIG_DIAG_CHAR=y
 CONFIG_DIAG_USES_SMD=y 

有的时候,由于默认打印机等级比较低,因此有可能,无法打印,因此需要调整打印等级。

串口console在开机后可能会降低打印级别,可以通过如下命令显示所有log

 echo "8 6 1 7" > /proc/sys/kernel/printk

关闭所有log显示

echo "0 6 1 7" > /proc/sys/kernel/printk

经过上面的修改之后,就会有串口打印出来,另外如何控制台不能输入,请参考下面的。

2、另外需要修改user版本串口只有输出不能输入的问题

现象:
编译成user版本之后串口只有输出没有输入.

原因:
编译user版本之后 ro.debuggable=0

build/core/main.mk:

ifeq (true,$(strip $(enable_target_debugging)))
    # Target is more debuggable and adbd is on by default
    ADDITIONAL_DEFAULT_PROPERTIES += ro.debuggable=1
    # Enable Dalvik lock contention logging.
    ADDITIONAL_BUILD_PROPERTIES += dalvik.vm.lockprof.threshold=500
    # Include the debugging/testing OTA keys in this build.
	INCLUDE_TEST_OTA_KEYS := true
else # !enable_target_debugging
    # Target is less debuggable and adbd is off by default
    ADDITIONAL_DEFAULT_PROPERTIES += ro.debuggable=0
endif # !enable_target_debugging

system/core/rootdir/init.rc

service console /system/bin/sh
  class core
  console
  disabled
  user shell
  group shell log
  seclabel u:r:shell:s0

on property:ro.debuggable=1
    start console

可见console是否启动受属性ro.debuggable的控制.

解决方法有两种,任选其中一个即可:

  1. 修改 ro.debuggable = 1

  2. 直接将on property:ro.debuggable=1删除,然后默认就是无条件启动console.

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

nineyole

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值