msm8937声卡挂载问题

今天遇到一个问题,声卡一直挂载不上。

1.在msm8952_asoc_machine_probe和aw87339_probe里加了log,发现根本就没走。

2.看log发现两个问题:adsp-loader soc:qcom,msm-adsp-loader: adsp_load_fw: Q6 image loading failed,adsp加载失败了。machine_dlkm: Unknown symbol aw87339_audio_kspk,aw87339模块没加载进去。

3.到对应的out目录发现aw87339.o已经生成了。那么很有可能没有link进去。

4.于是走了一遍整个编译流程

hardware/qcom/audio/configs/msm8937/msm8937.mk里定义了AUDIO_FEATURE_ENABLED_DLKM := true

于是hardware/qcom/audio/hal/Android.mk

ifeq ($(strip $(AUDIO_FEATURE_ENABLED_DLKM)),true)
LOCAL_HEADER_LIBRARIES += audio_kernel_headers
LOCAL_C_INCLUDES += $(TARGET_OUT_INTERMEDIATES)/vendor/qcom/opensource/audio-kernel/include
LOCAL_ADDITIONAL_DEPENDENCIES += $(BOARD_VENDOR_KERNEL_MODULES)
endif

就会来这里android\device\qcom\msm8937_32go\BoardConfig.mk找到并加载名为BOARD_VENDOR_KERNEL_MODULES的依赖文件。发现$(KERNEL_MODULES_OUT)/audio_aw87339_audio.ko没有添加进去(主要原因)。

android/device/qcom/msm8937_64/msm8937_64.mk里定义了KERNEL_MODULES_OUT := out/target/product/$(PRODUCT_NAME)/$(KERNEL_MODULES_INSTALL)/lib/modules其中KERNEL_MODULES_INSTALL := dlkm,PRODUCT_NAME := msm8937_32go,文件生成目录。

那么audio_aw87339_audio.ko是怎么生成的呢?android/vendor/qcom/opensource/audio-kernel/asoc/Android.mk文件里定义AUDIO_SELECT += CONFIG_SND_SOC_AW87339=m 

ifdef CONFIG_SND_SOC_AW87339 
       AW87339_AUDIO_OBJS += aw87339_audio.o
......
obj-$(CONFIG_SND_SOC_AW87339) += aw87339_audio_dlkm.o
aw87339_audio_dlkm-y := $(AW87339_AUDIO_OBJS)
ifeq ($(call is-board-platform-in-list,msm8953 msm8937),true)
include $(CLEAR_VARS)
LOCAL_MODULE              := $(AUDIO_CHIPSET)_aw87339_audio.ko
LOCAL_MODULE_KBUILD_NAME  := aw87339_audio_dlkm.ko
LOCAL_MODULE_TAGS         := optional
LOCAL_MODULE_DEBUG_ENABLE := true
LOCAL_MODULE_PATH         := $(KERNEL_MODULES_OUT)
include $(DLKM_DIR)/AndroidKernelModule.mk
endif

自此编译出了.o和.ko文件。

猜你喜欢

转载自blog.csdn.net/qq_36247447/article/details/113003857