1.Native ALSA Application:tinyplay/tinycap/tinymix,此三种用户程序直接调用alsa用户库接口来实现放音,录音,控制功能;
2.ALSA library API:alsa用户库接口,e.g.tinyalsa,alsa-lib;
3.alsa core:alsa核心层;向上提供逻辑设备系统调用,e.g. PCM ;向下驱动硬件设备 e.g. machine codec;
4.asoc core:asoc是建立在标准alsa core基础上,为更好的支持嵌入式系统以及应用于移动设备之音频codec的一套软件体系;
5.Hardware driver:音频硬件设备驱动;囊括三部分——machine,platform,codec;
5.1 platform
特指代某 SoC 平台的音频模块,e.g. qcom;这里platform又可分为两部分:
5.1.1 cpu dai
在嵌入式系统中通常是指soc支持I2S/PCM总线控制器,其主要功能则是把音频数据从I2S tx FIFO搬运到codec(此仅限回放声音的情形,若录制声音则为将音频数据从codec搬运到I2S tx FIFO);cpu_dai 通过 snd_soc_register_dai() 来注册。可注意:dai 是 Digital Audio Interface 的简称,分为 cpu_dai 和 codec_dai,这两者通过 I2S/PCM 总线连接;AIF 是 Audio Interface 的简称,嵌入式系统中一般是 I2S 和 PCM 接口。
5.1.2 pcm dma
负责把dma buffer中的音频数据搬运到I2S tx fifo中;可注意:某些情形下是不需要 dma 操作的,比如 Modem 和 codec直连,因为 Modem 本身已经把数据送到 FIFO 了,这时只需启动 codec_dai 接收数据即可;该情形下,Machine 驱动 dai_link 中需要设定 .platform_name = “msm-pcm-xxx”。
5.2 codec
编解码器;对于回放来说,userspace 传过之音频数据是经过采样量化的数字信号,在 codec 经过 DAC 转换成模拟信号然后输出到外放或耳机;
5.3 machine
通常指某机器,使其配置 dai_link 把 cpu_dai、codec_dai、modem_dai 等各个音频接口给链结使其形成一条条音频链路,然后注册 snd_soc_card。和上面两个不一样,Platform 和 CODEC 驱动一般是可以重用的,而 Machine 有它特定的硬件特性,几乎是不可重用的。
来源:CSDN
作者:宋春赫
链接:https://blog.csdn.net/Iverson941112/article/details/104494565