Linux音频子系统(六)ASoC驱动框架

1. 硬件架构

首先我们来看看,我们实际的开发板上的硬件接口,一般由一个cpu和一个codec组成,其大致的框图为
在这里插入图片描述
对于音频的应用主要有播放和录音的功能,数据流通过I2S的接口来传输,而I2c/l3接口主要完成的控制接口,例如控制声音的大小,功放的增益等操作。对于回放/录音的情形,PCM 数据流向大致是:
在这里插入图片描述

2. 软件架构

ASoC–ALSA System on Chip ,是建立在标准ALSA驱动层上,为了更好地支持嵌入式处理器和移动设备中的音频Codec的一套软件体系。Codec驱动与SoC CPU的底层耦合过于紧密.利于在多样化的平台/机器上移植复用,方便 codec 与 SoC 通过 PCM/I2S 总线建立链接。
软件领域里的抽象和重用一样,嵌入式设备的音频系统可以被划分为板载硬件(Machine)、Soc(Platform)、Codec三大部分:
在这里插入图片描述
Linux框架中,ASOC状态可以划分为硬件Machine Driver、Platform Driver、Codec Driver三大部分组成。由上图可以看出Machine是指我们的开发板,Platform是指Soc,包括开发Soc上的Audio DMA和CPU DAIs接口,而Codec是指编解码器。

  • machine:单板相关内容,开发板所用的主芯片(Platform是指Soc)、编解码芯片(codec)是哪一个。主芯片里的IIS接口(DAI(全称Digital Audio Interface)接口)接到哪里去.CPU DAI是哪一个,codec DAI是哪一个,DMA是哪个
  • platform:平台相关内容。通常需要包含Soc中的时钟、PCM、IIS(DAI)(设置接口)和DMA(传输数据)等。只要指定了Soc,那么我们就认为对应一个platform,与Machine无关,使得该Soc可以在不同的Machine做兼容。
  • codec:也就是编解码器,Codec里面一般包含了I2S接口(DAI)、D/A、A/D、mixer、PA(内置或者外接)

3. 数据结构框图

下面以一个的常见开发板mini2440来说明其数据结构的总体框架
在这里插入图片描述

  • Machine driver
    sound/soc/sumsang/s3c24xx_uda134x.c
    其中的Machine驱动负责Platform和Codec之间的耦合以及部分和设备或板子特定的代码采样率时钟配置

  • Platform driver
    sound/soc/sumsang/s3c24xx-i2s.c
    I2S 控制器驱动 采样率时钟DMA 等配置

  • Codec driver
    sound/soc/codec/uda134x.c

    开发asoc声卡驱动就是向asoc驱动核心的三个数据链表中注册相应的链表节点,最后通过machine中注册的dai_link数据结构将三部分联系在一起,共同完成硬件初始化部分,最后完成整个声卡的注册。

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值