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

2021-08-18 08:36:44 字數 1486 閱讀 7818

】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的 結構呢?...