LinuxALSA学习:ALSA基础介绍

漫谈嵌入式 2022-10-15 20:00


ALSA 介绍

ALSA 概述

ALSA(Advanced Linux Sound Architecture )是高级 linux 声卡架构简称, 是目前Linux的主流音频体系结构, 提供了音频和MIDI的支持。

除了声音设备驱动,ALSA还捆绑了一个用户空间驱动的库用于应用开发。开发者可以使用这些 ALSA 驱动进行高级 API 开发,可以通过 ALSA 库达成与声音设备的内核(直接)交互。

ALSA 特点如下:

  • 高效的支持所有类型音频接口,从消费类声卡到专业多声道音频接口;
  • 完全模块化的声卡驱动;
  • 用户空间库 (alsa-lib) 可简化应用程序编程并提供更高级别的功能;
  • 支持较旧的开放声音系统 (OSS) API,为大多数 OSS 程序提供二进制兼容性;
  • 更好的支持USB 音频设备;
  • 支持蓝牙音频设备;
  • 支持AC'97和HD Audio dial-up soft-modems (比如Si3055);
  • 对MIDI支持得更好;
  • 支持suspend;

ALSA 架构

  • 最上层是音频应用和声卡服务;
  • ALSA Library:alsa 提高用户空间访问声卡设备标准api
  • ALSA Layer:ALSA 驱动层。ALSA 可以抽象为ASoc 层。
  • ASoc Layer:和具体平台相关。主要包括音频接口和控制接口两大类(可以简单理解为音频数据流和控制,其他控制也包含对电压管理的支持(DAPM))

我们可以看到,对于整个 linux 系统来说,整个通用框架基本一致,为了兼容不同的硬件平台,ASoC 就出来了,ASoc 就是就是对ALSA 底层的硬件封装。

对于不同的芯片平台需要去适配ASoc 驱动框架,对于音频工程师而言大部分情况只需要移植音频驱动即可,也就是Codec Driver。

简化一下:对于ASoC 里面的各个模块。我们后续在讨论。

总结

本文简单介绍了,ALSA 驱动通用架构,以及ALSA 驱动特点,对于ALSA 驱动只是冰山一角,后续将继续深入学习。

延申学习: 

https://alsa-project.org/wiki/Main_Page https://wiki.archlinux.org/title/Open_Sound_System https://wiki.archlinux.org/index.php/Advanced_Linux_Sound_Architecture_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)


漫谈嵌入式 一个爱跑马的程序员。致力于分享嵌入式物联网技术【单片机/MIPS/ARM/Linux/C/C++/Qt等】,探寻底层开发的究竟!
评论 (0)
我要评论
0
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦