ALSA驱动框架分析1:简介

本文介绍了Linux声卡驱动框架ALSA,包括Platform、Codec、soc-dai、codec-dai和machine五大部分。阐述了播放音频的流程以及各组件的作用,如DMA负责数据搬运,I2S和AFIx进行数据传输,Codec负责数模转换。alsa驱动编写涉及Platform和Codec的驱动,并通过machine描述它们之间的关联。结构体snd_soc_platform、snd_soc_codec和snd_soc_dai分别抽象了platform、Codec和dai,而snd_soc_card则描述了它们的联系。注册这些组件到链表后,通过匹配完成声卡功能的实现。
摘要由CSDN通过智能技术生成

简介:

Alsa是linux声卡的一种驱动框架,类似的还有oss, 简单的说,声卡就是一块外接硬件,用来播放和录音的设备,将处理后的数据通过iis和mcu进行交互,因此,声卡需要2个部分共同作用,即mcu侧和codec侧。典型的音频设计是: 一块电路板上一颗CPU的I2S接口外挂一颗Codec芯片, Codec在外接耳机或功放等. 如下图所示

 

以播放为例, 在这样一个硬件结构下, 涉及到几个模块:

       DMA : 负责把用户空间的音频数据搬移至I2S的FIFO.

       I2S : 负责以某个采样频率、采样深度、通道数发送音频数据, 也叫dai (Digital Audio Interface).

       AFIx : 负责以某个采样频率、采样深度、通道数接收音频数据, 也称作dai.

       DAC : 并把数据通过DAC转换后送给耳机等播放.

播放音频的简单流程:

音频文件数据==>DMA==> I2S (按照某种采样 单双通道等发送)==>AFIx (按照某种采样 单双通道等接受)==>DAC (数模转换)==>音频输出设备

那么,要使整个功能有效,即我们需要实现platform和codec的驱动,linux驱动还是采用通用的做法来解耦合,即分别实现platform 配置mcu侧的i2s和dma的功能,codec实现codec侧的配置和处理功能。但是由于模块化的关系,每个部分的驱动并非一家公司所写࿰

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值