天天看點

asoc 知識點

1 trigger

trigger的執行會在上層的alsalib調用write的函數觸發

使用者層的write到核心裡面都是通過ioctl來做的,這裡面會觸發trigger函數的執行,

等trigger執行完以後,才會真正調用函數把使用者層的東西copy到dma配置設定的空間;

trigger 索引 ops->trigger 尋找資訊

pcm_start
 pcm_write
 pcm_read      

pcm_stop 都會調用 trigger

分析

tinycap.c tinycap.c      

猜想 pcm_write,pcm_read 是使用者層的互動

可能 中斷(自動産生 )的話就 是 pcm_start,pcm_stop。

2 tinyalsa

1 hal 庫 檔案操作硬體是依賴 tinyalsa 裡面的 pcm.c 裡面的函數的

2 如何控制 可以參考 裡面的 tinymix.c tinycap.c tinycap.c 可以了解到 函數怎麼使用

3前端 (snd_soc_dai_link) 有stream name 後端 (snd_soc_dai_link) 沒有stream name

4​​Linux ALSA聲霸卡驅動之三:PCM裝置的建立​​​ 從這篇文章可以知道 snd_pcm_substream 的含義

snd_pcm_substream 與 dev/snd/ 下的裝置一一對應

​​alsa音頻架構3-pcm​​ 這篇文章描述了更多 關于 snd_pcm_substream 的内容。

同樣從 tinyalsa 裡面的 pcm_open 中可以知道

device 跟 stream 關系(因為都關聯一個id)

繼續閱讀