ALSA (高级Linux声音架构)、ASOC基础知识

目录

第一节:什么是ALSA和ASOC

第二节:ALSA框架

第三节:ALSA的使用

第四节:ASOC的硬件框架

第四节:ASOC的软件框架


第一节:什么是ALSA和ASOC

        ALSA是Advanced Linux Sound Architecture,高级Linux声音架构的简称,它在Linux操作系统上提供了音频和MIDI(Musical Instrument Digital Interface,音乐设备数字化接口)的支持。在2.6系列内核中,ALSA已经成为默认的声音子系统,用来替换2.4系列内核中的OSS(Open Sound System,开放声音系统)。

        ALSA的官方网址为:AlsaProject

        但是ALSA的缺点也是十分明显的:

        1、Codec驱动与SoC CPU的底层耦合过于紧密,这种不理想会导致代码的重复,例如,仅是wm8731的驱动,当时Linux中有分别针对4个平台的驱动代码。

        2、音频事件没有标准的方法来通知用户,例如耳机、麦克风的插拔和检测,这些事件在移动设备中是非常普通的,而且通常都需要特定于机器的代码进行重新对音频路劲进行配置。

        3、当进行播放或录音时,驱动会让整个codec处于上电状态,这对于PC没问题,但对于移动设备来说,这意味着浪费大量的电量。同时也不支持通过改变过取样频率和偏置电流来达到省电的目的。

正因为此,ASOC诞生了!

        ASoC--ALSA System on Chip ,是建立在标准ALSA驱动层上,为了更好地支持嵌入式处理器和移动设备中的音频Codec的一套软件体系。在ASoc出现之前,内核对于SoC中的音频已经有部分的支持,不过会有一些上面的局限性,而ASOC很好的解决了上述的问题!

第二节:ALSA框架

ALSA (高级Linux声音架构)、ASOC基础知识_第1张图片

 

第三节:ALSA的使用

        本文不讨论ALSA的具体使用方法,后续会讲解ALSA的使用方法,感兴趣的小伙伴可以参考以下的博客学习:

https://blog.csdn.net/sinat_37817094/category_7691888.html

第四节:ASOC的硬件框架

        嵌入式设备的音频系统可以被划分为板载硬件(Machine)、Soc(Platform)、Codec三大部分。ASOC就是包含着这三大部分。它们的含义如下:

1、 Soc(Platform)  :SOC上的片内外设部分,通常是半导体原厂商完成。

2、 Codec  :具体的外设硬件(音频设备)。外设驱动通常有外设厂商完成。

3、 板载硬件(Machine)  :将SOC与Codec连接起来那部分。由外设使用者编写。

ALSA (高级Linux声音架构)、ASOC基础知识_第2张图片

 

第四节:ASOC的软件框架

        对应着硬件框架,ASOC软件也分为三部分: 板载硬件(Machine)、Soc(Platform)、Codec  。他们的具体内容如下:

1、  Codec驱动ASOC一个重要设计原则就是要求Codec驱动是平台无关的,它包含了一些音频的控件(Controls),音频接口,DAMP(动态音频电源管理)的定义和某些Codec IO功能。为了保证硬件无关性,任何特定于平台和机器的代码都要移到PlatformMachine驱动中。

        必要时,也可以提供以下功能:

        DAPM描述信息;

        DAPM事件处理程序;

        DAC数字静音控制;

2、Platform驱动 : 它包含了该SoC平台的音频DMA和音频接口的配置和控制(I2SPCMAC97等等);它也不能包含任何与板子或机器相关的代码。

3、Machine驱动  Machine驱动负责处理机器特有的一些控件和音频事件(例如,当播放音频时,需要先行打开一个放大器);单独的PlatformCodec驱动是不能工作的,它必须由Machine驱动把它们结合在一起才能完成整个设备的音频处理工作。

可参考博客:

Linux ALSA声卡驱动之五:移动设备中的ALSA(ASoC)_DroidPhone的专栏-CSDN博客

你可能感兴趣的:(Android,audio,linux,音视频,嵌入式硬件,android)