ALSA Documentation:overview_txtx

ALSA SoC 层概述

文档的结构:背景、目标、实现。

ALSA 片上系统 (ASoC) 层的总体项目目标是为嵌入式片上系统处理器提供更好的 ALSA 支持(例如pxa2xx、au1x00、IMX 等)和便携式音频编解码器。在 ASoC 之前子系统内核中有一些对 SoC 音频的支持,但是它有一些限制。可以认为时ALSA出现的背景,也是创建ALSA后,朝之改进的点。

  • 编解码器驱动程序通常与底层 SoC 紧密耦合中央处理器。这并不理想,会导致代码重复。例如,Linux 有用于 4 种不同 SoC 平台的不同 wm8731 驱动程序。

  • 没有标准方法来表示用户发起的音频事件(例如耳机/麦克风插入,插入后耳机/麦克风检测
    事件)。这些是便携式设备上非常常见的事件,通常需要机器特定代码以重新路由音频,启用放大器等,在这样的之后事件。

  • 驱动程序在播放时倾向于打开整个编解码器(或录音)音频。这对 PC 来说很好,但往往会浪费很多打开便携式设备。也不支持储蓄通过改变编解码器过采样率、偏置电流等来控制电源。

ASoC 的设计目的

ASoC 层旨在解决这些问题并提供以下功能:

  • 编解码器独立性,即特定声卡驱动的独立性,方便驱动移植。

  • 方便设置codec和 SoC 之间的 I2S/PCM 音频接口。每个 SoC接口和codec将其音频接口功能注册到core ,随后在应用程序时进行匹配和配置硬件参数。

  • 动态音频电源管理 (DAPM)。 DAPM 自动将codec设置为最低功率状态。这包括通电/断电,以及内部电源块取决于codec音频路由和任何正常工作的数据流。

  • pop音和click 音减少。减少由通电/断电codec时序(包括使用数字静音)引发的pop音和click音。 ASoC 指示当codec更改电源状态会通知到ASoC。

    • 机器特定控件。在编写codec驱动时,方便添加控件(例如扬声器放大器的音量控制,音源切换)。

设计实现

为了实现这一切,ASoC 基本上将嵌入式音频系统拆分多个可重用的组件驱动程序:

  • codec驱动程序:codec驱动程序与平台无关,并且包含音频控制、音频接口功能、DAPM定义和codec IO 函数。还可以扩展到 BT、FM 和 MODEM,IC。codec 类驱动程序应该是可以运行的通用代码在任何架构和机器上。

  • 平台类驱动:平台类驱动包括音频DMA引擎驱动程序、数字音频接口 (DAI) 驱动程序(例如 I2S、AC97、PCM)以及该平台的任何音频 DSP 驱动程序。

  • 机器类驱动程序:该驱动充当粘合剂,将其他组件驱动程序绑定在一起,以形成 ALSA
    “声卡设备”。它处理任何机器特定的控制和机器级音频事件(例如在播放开始时打开放大器)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值