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

4Linux ALSA声卡驱动之三:PCM设备的创建
从这篇文章可以知道 snd_pcm_substream 的含义
snd_pcm_substream 与 dev/snd/ 下的设备一一对应
alsa音频架构3-pcm
这篇文章描述了更多 关于 snd_pcm_substream 的内容。
同样从 tinyalsa 里面的 pcm_open 中可以知道
device 跟 stream 关系(因为都关联一个id)


cat /proc/asound/pcm 可以查看 stream与device id号的关系
device 的名字 是由 card id device id 和 capture或者playback 决定


5asoc里面的snd_soc_dai_link 中的成员 stream 描述的是一个输入或者输出设备(或者stream)

猜你喜欢

转载自blog.csdn.net/aningxiaoxixi/article/details/110090393