ALSA是Linux声卡驱动的架构,下面基于linux-2.6.32描述下ALSA系统架构。ALSA系统可以分为alsa-lib、alsa-driver,而alsa-driver又分为core层和底层硬件层。作为开发者,我们只需移植底层硬件层,根据自己硬件特性,实现底层的移植。而core层基本属于ALSA标准框架,不需要自己实现。介绍ALSA框架,下面是大体框架图。
如上图所示,alsa驱动最终会被上层应用调用,这是通过alsa-lib实现的,alsa-lib为alsa-driver封装了许多API,通过这些API,上层应用可以调用到驱动层。而alsa-lib中的这些API,我们可暂时把他们当做一个黑盒子,里面具体实现不需要去关注,下面以linux-2.6.32中ALSA调用函数关系说明其架构。先分析ALSA驱动的注册过程。
一、ALSA驱动的注册
注册流程查看上图,具体的注册过程不在此赘述。