天天看点

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)

继续阅读