小弟以前没研究过linux内核,更没搞过linux下的驱动。公司现在开发一款产品,嵌入式平台ARM11上的。以前demo板上用的音频芯片是一款日本产的,现在要抵制日货,所以准备采用TI的一款音频芯片,型号是Tlv320aic3101。我只有一周的时间来做这个工作。现在已经过去了3天了,遇到了一些问题,想向给位大侠请教一下。
用的linux内核版本是2.6.38,本来内核的sound/soc/codec/目录下面已经有一个tlv320aic3x.c的驱动文件包含了aic31系列,所以我想编解码器驱动这个应该是不用我改的,我需要改的应该是平台驱动。我就对照着以前demo上平台驱动的写法改了下,写了个自己的平台驱动。然后编译也没错,生成了对应的模块snd-soc-tlv320aic3x.ko和平台驱动模块snd-soc-aaa.ko。
然后用modprobe加载,提示依赖错误。然后用depmod想产生这个依赖关系,但出现了‘segment fault’的错误。用insmod加载,提示invalid module format,用modinfo查看那两个ko,都是只打印了filename一行,没有显示后面的descrīption,license,vermagic等信息。(因为之前编译加载过其他驱动的ko模块,版本应该不会有什么问题)
现在我是一头雾水,想请教下各位大侠,根据上面那些信息,不知道你们能否知道是哪里的问题?或者要怎样才能解决这个问题?
------解决方案--------------------
直接编译进内核看看,不要用模块的方式。若编译进内核都不行的话,就得仔细看看驱动哪的问题了。
------解决方案--------------------