1. 程式人生 > >linux驅動編寫(音效卡驅動之asoc移植)

linux驅動編寫(音效卡驅動之asoc移植)

【 宣告:版權所有,歡迎轉載,請勿用於商業用途。 聯絡信箱: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就會全部建立好,只是細節部分還需要自己一步一步去研究才行。