25-总结
17.7 总结
音频设备接口包括PCM、IIS和AC97等,分别适用于不同的应用场合。针对音频设备,Linux内核中包含了3类音频设备驱动框架,OSS、ALSA和ASoC,OSS包含dsp和mixer字符设备接口,在用户空间的编程中,完全使用文件操作;ALSA后者以card和组件(PCM、mixer等)为主线,在用户空间的编程中不使用文件接口而使用alsalib;ASoC则是ALSA在SoC方面的演变,它建立在ALSA之上,将ALSA驱动中CPU相关的代码和Codec相关的代码进行了分离。
在音频设备驱动中,几乎必须使用DMA,而DMA的缓冲区会被分割成一个一个的段,每次DMA操作进行其中的一段。OSS驱动的阻塞读写具有流控能力,在用户空间不需要进行流量方面的定时工作,但是它需要及时地写(播放)和读(录音),以免出现缓冲区的underflow 或overflow。ALSA和ASoC的流控则由ALSA的核心层处理,底层驱动仅以trigger()、pointer()等方法进行配合。