一. 声卡驱动开发
1.声卡驱动架构
1.1 OSS架构
- OSS是“开放音频系统”的缩写,是Linux系统早期比较常用一种音频架构!基于文件系统的访问方式操作底层的音频设备,用户空间的程序可以像操作普通文件一样读写相应的音频设备,与之对应的抽象设备文件有:
- /dev/mixer:用来访问声卡中的混音器进行音量调节;
- /dev/dsp、/dev/audio:对该设备读相当于录音,写相当于播放。
- OSS架构如下图所示:
1.2 ALSA架构
- 由于到后期,OSS架构开始收费不开源,加上他自身设计的不足,对混音的支持本来就不是很好,所以Linux内核逐渐取消或者说减弱了对OSS架构的支持,进而在2002年以后出现了目前比较流行的ALSA架构,他是“Linux系统高级音频架构”的缩写,架构示意图如下所示:
- 从上图可以看出,用户空间的ALSA程序要访问底层的音频(声卡)硬件,需要依次经过ALSA库应用程序接口、ASLA标准库、Linux内核的ALSA核心模块,最后才通过ALSA核心模块调用具体的硬件驱动程序访问硬件。ALSA架构主要借助于以下设备文件对音频设备进行控制:
- /dev/pcmC0D0c:用于录音的pcm设备
- /dev/pcmC0D0p:用于播放的pcm设备
- /dev/timer:定时器
- /dev/controlC0:用于声卡的控制,如通道选择
- /dev/mixer:混音处理