最近调试红外发射接收功能时遇到user版本和userdebug版本的区别,debug版本调试验证时一直ok,编译出的user版本刷了几台机器后有的机器正常,有的机器开机后红外灯一直常亮,功能不正常。跟踪发现是user版本在编译kernel时与debug版本配置文件不同,里面的宏有许多不同。
在android\device\qcom\sdm660_64\AndroidBoard.mk文件中可以看到以下代码:
ifeq ($(KERNEL_DEFCONFIG),)
ifeq ($(TARGET_BUILD_VARIANT),user)
KERNEL_DEFCONFIG := sdm660-perf_defconfig
else
KERNEL_DEFCONFIG := sdm660_defconfig
endif
endif
通过代码比较工具发现android\kernel\msm-4.4\arch\arm64\configs\sdm660-perf_defconfig 与android\kernel\msm-4.4\arch\arm64\configs\sdm660_defconfig差异很大,挨着尝试修改发现是如下2行代码导致了user版本异常:
+CONFIG_IRQSOFF_TRACER=y
+CONFIG_PREEMPT_TRACER=y
记录一下,以后遇到类似问题,可以跟踪这2个文件的差异进行排查问题。
网友评论