ALSA概述

要深入学习ALSA,首先我们得清晰把握ALSA的软件架构是怎样的?通过对整体的把握,我们在后续的学习中才能进行更加深入的模块化学习。如下图所示:

ALSA体系架构

在这个体系架构图,我们只需要关注两个方面,一个是PCM设备控制流,另一个是Control控制流。PCM流这一条路针对平台的DMA操作,旨在将音频数据从内存到CPU (RX/TX)FIFO数据交换。而Control这一路是针对Codec端内部音频路径切换和音量的增益控制等。值得一提的是,这个ALSA体系架构不是数据流,只是软件的控制流。在Linux音频驱动中,pcm数据流是通过DMA控制器从内存拷贝到dma_buffer,最后从dma_buffer送到I2S的TX FIFO中,这个过程称之为playback,关于playback跟capture流程在后续的文档在进行更新。关于DMA的操作在后续的文档也会有所提到。所以下面用简单的逻辑框图简单介绍playback跟capture的pcm数据流向。如下图所示:

playback和capture数据流向

在下一篇的文章中,我们继续分析在ALSA CORE层是如何创建逻辑设备以及如何提供接口给上层。

猜你喜欢

转载自blog.csdn.net/qq_30295609/article/details/105200526
今日推荐