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