一、音频驱动框架
ALSA(Advanced Linux Sound Architecture)是目前linux的主流音频体系结构。ALSA不仅在内核设备驱动层提供了alsa-driver,同时在应用层为我们提供了alsa-lib,应用程序只要调用alsa-lib提供的API,即可以完成对底层音频硬件的控制。为了方便调试,ALSA也提供了一套应用层工具,方便我们的开发验证
1. Hardware
音频的硬件结构如下图所示,主要有soc和codec两部分,soc为平台cpu端,codec为外挂音频编解码芯片。Soc和codec之间通过I2C和I2S总线连接,I2C主要承担控制信令,I2S主要负责数据通路
2. Software
音频的软件架构主要采用alsa框架,它包括用户态和内核态两部分,用户态为客户提供动态库,利用该库完成应用程序的编写;内核态提供音频的完成驱动框架
Alsa驱动主要有以下几个功能组件:
- machine:将codec设备和alsa platform驱动连接到一起的。
- platform: 负责音频数据的管理,通过DMA在内存和codec之间传送数据,alsa的核心。
- cpu