高通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..6d --- 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版本串口只有输出不能输入的问题
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的控制.
解决方法有两种,任选其中一个即可:
- 修改 ro.debuggable = 1
- 直接将on property:ro.debuggable=1删除,然后默认就是无条件启动console.
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/177061.html原文链接:https://javaforall.net
