目录

第一节:什么是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的使用

本文不讨论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连接起来那部分。由外设使用者编写。

第四节:ASOC的软件框架

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

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

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

DAPM描述信息;

DAPM事件处理程序;

DAC数字静音控制;

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

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

可参考博客:

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

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

  1. Linux系统编程——进程基础知识

    Linux系统编程--进程基础知识 1.程序和进程 程序,是指编译好的二进制文件,在磁盘上,不占用系统资源(cpu.内存.打开的文件.设备.锁-) 进程,是一个抽象的概念,与操作系统原理联系紧密.进程 ...

  2. Linux之(6)Kconfig基础知识

    Linux之(6)Kconfig基础知识 Author:onceday date:2022年8月25日 本文档收集整理于互联网,可参考以下文档: Kconfig Language linux kern ...

  3. Linux运维是什么?linux运维的基础知识

    如果您对运维行业了解一些,应该会知道,现在的运维早已不是早年的"睡机房",往办公室打眼一看,分不清是运维攻城狮还是开发程序猿,但是,运维这行也是春天到了,今天Linux,明天云计算 ...

  4. Linux应用程序开发 基础知识

     Linux应用程序开发 本文讲述了linux应用程序开发的基本内容.值得学习! Copyright © 2006 本文遵从GNU 的自由文档许可证(Free Documentation Lice ...

  5. 2020-06-19 云运维linux centos7.2 文件管理基础知识总结

    2020-06-19 云运维linux文件管理基础知识总结 linux=Linux: 命令(基础使用)+文件系统(目录)+服务(配置) 1.路径的分类 绝对路径:由根目录(/)开始写起的文件名或目录名 ...

  6. r语言工作路径linux,R语言实用基础知识_工作路径-注释-安装和卸载R包_2019-12-01...

    R语言的实用基础知识有很多,都是我在工作和学习中所整理的,有的是看书整理的,也有的是从网络上的各种博客.各种资源获取的,所以我采用日更的方式进行支持整理和更新,希望能够帮到屏幕前的你! 今天是我日更的 ...

  7. Linux——Linux C语言编程基础知识

    源程序的编译 在Linux下面,如果要编译一个C语言源程序,我们要使用GNU的gcc编译器. 通常在gcc后跟一些选项和文件名来使用gcc编译器.gcc 命令的基本用法如下:: gcc [option ...

  8. liteos内核驱动和linux,移植RTOS必备基础知识

    1. 基础知识 移植内核对技术的要求比较高.比较细. 1.1 单片机相关的知识 栈的作用 加载地址.链接地址 重定位 几个简单的硬件知识 ○串口 ○定时器 中断的概念 1.2 Linux操作相关的知识 ...

  9. linux vim tag,Vim基础知识之ctags 及 Taglist 插件

    Vim基础知识之ctags 及 Taglist 插件 1. 我的界面 2. ctags exuberant ctags是一般Linux系统上缺省的ctags 我的ctags版本:Exuberant C ...

最新文章

  1. Chap 07 HTML建立超链接
  2. 七 web爬虫讲解2—urllib库爬虫—状态吗—异常处理—浏览器伪装技术、设置用户代理...
  3. 如何高效管理BI报表的需求
  4. Linux系统编程7:入门篇之Linux项目自动化构建工具-Make/Makefile的超强使用指南
  5. 我一直以为做知识付费的老师是非常赚钱的
  6. WDCP + CentOS 6.x + EduSoho + Nginx
  7. MySQL Replication 常用架构
  8. 01、STM8 单片机芯片介绍
  9. 华为v5服务器安装2012系统,裸金属服务器安装v5
  10. 江苏计算机二级报名一年几次,江苏计算机二级每年考几次
  11. activity启动流程或工作流程
  12. STM32实现74HC595控制
  13. 美服行星边际2服务器维护时间,行星边际2美服证书 快速起步攻略新手必读
  14. 数据可视化项目(二)
  15. 网站服务器主要是pcu还是内存,PCU占用一直跑的很高的真正元凶
  16. DjangoUeditor添加与配置
  17. iptables 防火墙中的SNAT和DNAT
  18. 转载:群联MPALL(Rel) 7F V5.03.0A-DL07量产工具 PS2251-07(PS2307)
  19. Web应用程序和Web网站
  20. ‘unsaf-eval‘ is not an allowed source of script

热门文章

  1. FPGA单独下载固化文件的解决方案
  2. java 串讲_Java知识串讲
  3. 触发器实现当一个表中字段改变时同时改变另一个表中字段值
  4. python实现GUI自动化(控制鼠标)|屏幕快照图像识别基础
  5. 运行零币Zcash(ZEC)
  6. Android11(30)/Android10(29)分区存储-存储访问框架(SAF)
  7. 计算机的电子表格英文,Excel电子表格规范的实用方法(中英文对照).pdf
  8. 余淼杰老师 经济学原理复习笔记(宏观1) 2020-12-14
  9. XML文件简介和解析
  10. 577. Employee Bonus