】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就會全部建立好,只是細節部分還需要自己一步一步去研究才行。
Linux音效卡驅動
記得是初中還是高中物理,裡面說過聲音是由物體振動產生,然後通過空氣傳播到耳朵裡。把耳朵換成咪頭,聲音振動咪頭,改變了咪頭兩端的電壓,adc再採集電壓,就記錄了音訊資料 反之,將記錄的資料通過dac轉成電壓,通過運放放大,就使喇叭振動就產生了聲音。這整個過程,涉及聲音質量的引數有三個 在linux音效...
linux驅動編寫之程序獨佔驅動
一 描述 嵌入式開發系統中,有各種硬體資源,而有些硬體資源使用時候是需要程序獨佔的。也就是說,同一時刻只有乙個程序允許使用這個硬體資源,其他的程序只能放棄執行或者掛起等待。在設計其對應驅動的時候,就需要做獨佔處理。example led燈驅動,4盞led燈,在open的時候呼叫驅動,對其引腳進行配置...
linux驅動編寫(usb host驅動入門)
usb協議是乙個複雜的協議,目前涉及到的版本就有usb1.0,usb2.0,usb3.0。大家如果開啟kernel usb host目錄,就會發現下面包含了ohci,uhci,ehci,xhci,whci等多種形式的控制器驅動。那麼,對於我們這些不是很了解usb的開發人員,如何了解usb的 結構呢?...