【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com


    Linux下面的声卡驱动很复杂,根本不是一篇博客能够说清楚的。所以,本片文章的目的就是让同学门快速入门。或者,换句话说,它可以帮助大家在基本了解linux声卡框架的条件下完成声卡移植工作。


1、linux声卡驱动在哪个目录

sound/


2、oss、alsa、asoc是什么关系

oss是最老的声卡驱动框架,alsa是最新的声卡驱动框架,asoc是适配soc结构、且满足alsa框架的子框架,也是和硬件打交道的底层代码。


3、alsa和asoc最重要的框架代码在哪里

alsa的框架代码位于sound/core

asoc的框架代码位于sound/soc/soc-*.c


4、如何适配asoc框架

asoc一般包括platform、codec、machine这三个结构。

platform指具体的soc芯片,codec指具体的解码芯片或模块,machine负责将platform和codec关联在一起。


5、声卡移植好了,怎么测试

一般再移植madplayer软件来测试


6、如何用真实的代码来说明asoc的三个模块如何关联的

a,以三星系列芯片为例,查看sound/soc/samsung/Kconfig,

config SND_SOC_SAMSUNG_S3C24XX_UDA134X
	tristate "SoC I2S Audio support UDA134X wired to a S3C24XX"
	depends on ARCH_S3C24XX
	select SND_S3C24XX_I2S
	select SND_SOC_L3
	select SND_SOC_UDA134X


b,除了SND_SOC_L3这个不太熟悉的macro之外,Kconfig已经清楚地说明了各模块的关系

SND_SOC_SAMSUNG_S3C24XX_UDA134X,此为machine模块

SND_S3C24XX_I2S,此为platform模块

SND_SOC_UDA134X,此为codec模块


c,根据makefile,可以找到各个macro对应的c文件

SND_S3C24XX_I2S对应s3c24xx-i2s.c文件

SND_SOC_SAMSUNG_S3C24XX_UDA134X对应s3c24xx-uda134x.c文件


d,codec文件一般单独放在sound/soc/codecs目录下

SND_SOC_UDA134X对应sound/soc/codecs下的uda134x.c文件


e,platform和codec复用数据结构,但是两者侧重点不同


f,对于soc来说,弄懂了asoc基本上就可以移植soc的声卡了

如果需要深究,还需要进一步阅读sound/core和sound/soc/下的基础流程代码才行。当然只要编写好了接口,上层的声卡、pcm、dsp就会全部创建好,只是细节部分还需要自己一步一步去研究才行。


Logo

更多推荐