转载地址:https://blog.csdn.net/lininglive/article/details/52149807

原文来源不记得了,忘作者见谅,保存下来以备自己温习,也方便大家查阅!

ALSA SoC Layer

ALSA板上系统层

==============





The overall project goal of the ALSA System on Chip (ASoC) layer is to

provide better ALSA support for embedded system-on-chip processors (e.g.

pxa2xx, au1x00, iMX, etc) and portable audio codecs.  Prior to the ASoC

subsystem there was some support in the kernel for SoC audio, however it

had some limitations:-

ALSA片上系统(ASoC)层的总体项目目标,是为对SOC嵌入式处理器和便携音频解码器提供更好的ALSA支持。在ASoC子系统之前,己有对内核的SoC音频支持,但是那些支持存在一些局限:

Codec drivers were often tightly coupled to the underlying SoC

CPU. This is not ideal and leads to code duplication - for example,

Linux had different wm8731 drivers for 4 different SoC platforms.

解码器常常与底层嵌入式处理器一对一紧密结合。这是非理想化的,因为这将导致代码的重复-例如,对四个不同的嵌入式平台,Linux要有不同的wm8731驱动。(理想的状态是我们可以只有一个wm8731的驱动代码,就可以对应于四个不同的处理器,但由上面说的,解码器-这里的wm8731与底层嵌入式处理器结合过于紧密,无法实现wm8731驱动代码的复用)





* There was no standard method to signal user initiated audio events (e.g.

Headphone/Mic insertion, Headphone/Mic detection after an insertion

event). These are quite common events on portable devices and often require

machine specific code to re-route audio, enable amps, etc., after such an

event.

没有一个标准的方法可以产生用户初始化音频事件的信号(即,耳机/麦克插入,响应插入事件的耳机/麦克探测)。这些在便携设备上都是十分常见的事件并且在这些事件之后经常需要机器相关的代码来对音频重设路径,开启放大器等。





* Drivers tended to power up the entire codec when playing (or

recording) audio. This is fine for a PC, but tends to waste a lot of

power on portable devices. There was also no support for saving

power via changing codec oversampling rates, bias currents, etc.

放音(录音)时,驱动常常会打开整个解码器。对个人电脑来说这没什么问题,但是在便携设备上往往会导致电能的浪费。另外,也没有通过改变解码器采样率、偏置电流等方式来省电的支持。









ASoC Design

ASoC 设计

===========





The ASoC layer is designed to address these issues and provide the following

features :-

ASoC层被设计用来解决这些问题并提供如下特性:





* Codec independence. Allows reuse of codec drivers on other platforms

and machines.

解码器独立。允许在其它平台或机器上重用解码器驱动。





* Easy I2S/PCM audio interface setup between codec and SoC. Each SoC

interface and codec registers it's audio interface capabilities with the

core and are subsequently matched and configured when the application

hardware parameters are known.

解码器与SoC的I2S/PCM音频接口设置很容易。每个SoC接口与解码器都向ALSA核心注册它的音频接口能力,而且应用硬件参数己知时顺序匹配并配置。





* Dynamic Audio Power Management (DAPM). DAPM automatically sets the codec to

its minimum power state at all times. This includes powering up/down

internal power blocks depending on the internal codec audio routing and any

active streams.

动态音频电源管理(DAPM)。DAPM自动无论何时,总是把解码器自动设置为它的最小电源状态。这包括依据内部解码音频线路和活跃的流来开启和关闭内部电源模块





* Pop and click reduction. Pops and clicks can be reduced by powering the

codec up/down in the correct sequence (including using digital mute). ASoC

signals the codec when to change power states.

咔嗒声减少。咔嗒声可以通过使用正确的解码器电源开启和关闭顺序而减少(包括使用数字消音)。ASoC在改变电源状态时向解码器发出信号。





* Machine specific controls: Allow machines to add controls to the sound card

(e.g. volume control for speaker amplifier).

机器相关的控制:允许机器增加对声卡的控制。(如扬声器放大器的音量控制)。





To achieve all this, ASoC basically splits an embedded audio system into 3

components :-

要实现这些,ASoC基本上将嵌入式音频系统分为3个部分:





* Codec driver: The codec driver is platform independent and contains audio

controls, audio interface capabilities, codec DAPM definition and codec IO

functions.

解码器驱动:解码器驱动是平台无关的,包含音频控制、音频接口能力、解码器动态音频电源管理和解码器IO函数。









* Platform driver: The platform driver contains the audio DMA engine and audio

interface drivers (e.g. I2S, AC97, PCM) for that platform.

平台驱动:平台驱动包含相应平台的音频DMA引擎和音频接口驱动(如I2S,AC97,PCM)





* Machine driver: The machine driver handles any machine specific controls and

audio events (e.g. turning on an amp at start of playback).

机器驱动:机器驱动处理所有机器相关的控制和音频事件(如回放开始时打开放大器)。













Documentation

文档

=============





The documentation is spilt into the following sections:-

本文档分成如下部分:





overview.txt: This file.

overview.txt:概述,本文件。

codec.txt: Codec driver internals.

codec.txt:解码器驱动内部实现





DAI.txt: Description of Digital Audio Interface standards and how to configure

a DAI within your codec and CPU DAI drivers.

DAI.txt:对数字音频接口(DAI)标准和如何配置你的解码器和CPU的数字音频接品驱动中的数字音频接口的描述。





dapm.txt: Dynamic Audio Power Management

dapm.txt:动态音频电源管理





platform.txt: Platform audio DMA and DAI.

platform.txt:平台音频DMA和DAI。





machine.txt: Machine driver internals.

machine.txt:机器驱动内容介绍。





pop_clicks.txt: How to minimise audio artifacts.

pop_clicks.txt:如何最小化音步噪声。




clocking.txt: ASoC clocking for best power performance.

clocking.txt:最佳电源表现下的ASoC时钟

linux音频alsa驱动分析之一(over-view)相关推荐

  1. arm linux免驱usb声卡,arm linux利用alsa驱动并使用usb音频设备

    一.背景: arm linux的内核版本是3.13.0 二.准备工作 添加alsa驱动到内核中,也就是在编译内核的时候加入以下选项: 接下来就重新编译内核即可 三.交叉编译alsa-lib和alsa- ...

  2. Alsa驱动分析(转)

    1.    Abstract 2.    Introduction 3.    音频驱动框架介绍 3.1      音频设备的注册 3.2     音频驱动的注册 3.2.1       Probe函 ...

  3. [转载]Alsa驱动分析

    本文基本没看,但是看着流程很规范,先转载了. 1.    Abstract 2.    Introduction 3.    音频驱动框架介绍 3.1      音频设备的注册 3.2     音频驱 ...

  4. Linux中用ALSA驱动声卡流程详解

    一.什么是ALSA : Advanced Linux Sound Architecture 的简称为 ALSA ,译成中文的意思是 Linux 高级声音体系(这是我直译的,可能译的不对):一谈到体系就 ...

  5. Linux PCI网卡驱动分析

    http://www.uplinux.com/shizi/wenxian/4429.html Linux网卡驱动分析 学习应该是一个先把问题简单化,在把问题复杂化的过程.一开始就着手处理复杂的问题,难 ...

  6. linux nand 驱动,Linux NAND FLASH驱动分析(一)

    最近一直在忙着工作上的事情,好久都没有更新博客了,发现最近思想是比较混乱的.学任何东西都坚持不下去,既然选择驱动开发这条路就要坚持下去. 之前分析了Linux块设备驱动,是以内存块来模拟的虚拟块设备. ...

  7. OMAP3630 Linux I2C总线驱动分析(2)

    4 OMAP3630 I2C device驱动     在Linux内核中,I2C device驱动位于drivers/i2c/chips目录下,可以看到该目录下有很多相关的device驱动,这里以x ...

  8. linux 网卡驱动分析,基于linux下网卡驱动分析及实现技术研究

    摘    要 Linux技术是当前计算机技术中最大的一个热点,在我国以及全世界得到了迅猛的发展,被广泛的应用于嵌入式系统.服务器.网络系统.安全等领域.从而使得掌握在 Linux环境下的开发技术,成为 ...

  9. (linux)MMC 卡驱动分析

    最近花时间研究了一下 MMC 卡驱动程序,开始在网上找了很多关于 MMC 卡驱动的分析文章,但大都是在描述各个层,这对于初学者来讲帮助并不大,所以我就打算把自己的理解写下来,希望对大家有用.个人觉得理 ...

  10. OMAP3630 Linux I2C总线驱动分析(1)

    1 Linux I2C驱动架构 Linux下I2C驱动的架构图如下: 图1.1 Linux下I2C驱动架构 如上图所示,每条I2C总线会对应一个adapter,而每条I2C总线上则可以有多个 clie ...

最新文章

  1. 大数据开发源码视频今日免费送!
  2. 如何在endnote列表中显示research note
  3. linux下qt实现计算器,QT实现计算器
  4. ap接口 php_小白php API初体验 php api文档 php api接口开发 php web ap
  5. 【leetcode】41. First Missing Positive
  6. dev 域名与 Chrome
  7. SSIS 抽取Excel每个sheet页的数据
  8. 初学者学习数据库的三个方向
  9. iOS学习笔记12—听筒和扬声器的转换
  10. win10系统显示打印机未连接到服务器,Win10系统连接打印机显示未指定设备的解决教程...
  11. sqlitedeveloper数据库管理(SQLite Developer) v4.0.0.528 中文破解版
  12. 34 个今年11月最受欢迎的 JavaScript 库
  13. java全文检索工具_TRS全文检索开发文档及API,工具包
  14. Flutter组件--GridView使用详情
  15. 十大远程控制软件(远程控制软件推荐)
  16. Python自动化运维之Linux概述和虚拟机安装使用终极指南
  17. 关于飞鸽传书软件的实现原理,配置及使用方法
  18. 2021金九银十面试季!如何化身BAT面试收割机
  19. HDU-6004-Periodical Cicadas
  20. 【实现一个扑克牌洗牌游戏,然后给三个玩家洗牌发牌】

热门文章

  1. Maven3.5安装配置
  2. 学习记录:UI自动化断言那些内容
  3. Eclipse Debug功能的使用教程
  4. 在浏览器用域名访问发现跳转到IIS Windows 界面
  5. 医疗器械软件质量体系等
  6. uni-app+flask 快速开发图像识别小程序
  7. 【自己看的笔记】Unity基础操作认识
  8. 好项目,不私藏!适用于单片机开发的开源轮子
  9. easyui快速入门
  10. ppt设置外观样式_ppt设置图片样式_PPT如何快速修改图像样式图文教