转自:http://blog.chinaunix.net/uid-22917448-id-1765502.html

前言

目前,linux系统常用的音频驱动有两种形式:alsa oss
alsa:现在是linux下音频驱动的主要形式,与简单的oss兼容。
oss:过去的形式
而我们板子上的uda1341用的就是alsa驱动。
alsa概述:
因为我们用的是板上系统,用的也是alsa 的一个soc子系统。所以我们直接讲解alsa soc子系统。

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.
平台驱动:平台驱动包含相应平台的音频DAM引擎和音频接口驱动(如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时钟

原文请见:http://www.junziju.usr.cc/home/space.php?uid=2&do=blog&id=327君子注:
您现在所阅读的,是君子阅读Linux音频SoC驱动时,写下的文档译文。
君子写些译文,一方面是作为自己的笔记,帮助记忆,另一方面也希望能对他人有所帮助。
如果您能于君子的译文中有所收获,则吾心甚慰。
所有这几个文档原文,是见于linux-2.6.30/Documentation/sound/alsa/soc目录下的全部内容。
由于君子对音频方面的内容了解也不多,很多地方我自己也不理解,只是照着原文生硬的译出来。
其中错误愿来来访者之宾不吝指正。
张君再拜.

linux音频alsa-uda134x驱动文档阅读之一(over-view)相关推荐

  1. Linux内核:VFIO 内核文档 (实例,API,bus驱动API)

    <ARM SMMU原理与IOMMU技术("VT-d" DMA.I/O虚拟化.内存虚拟化)> <提升KVM异构虚拟机启动效率:透传(pass-through).DM ...

  2. Davinci视频采集驱动文档

    Davinci视频采集驱动文档 概述 Davinci的视频采集接口的驱动涉及到内容包括I2C,AD芯片,V4L2,视频采集等内容.下面主要分成视频采集接口描述,I2C和A/D芯片,V4L2采集驱动以及 ...

  3. FreeRTOS官方指导文档阅读笔记

    FreeRTOS官方指导文档阅读笔记 基于 161204_Mastering_the_FreeRTOS_Real_Time_Kernel-A_Hands-On_Tutorial_Guide.pdf,可 ...

  4. linux 如何查看终端格式,你应该还不知道,Linux终端下的 Markdown 文档查看器

    原标题:你应该还不知道,Linux终端下的 Markdown 文档查看器 现在,Markdown 差不多已经成为技术文档的标准.它可以实现技术文档的快捷写作,以及输出发布.同样都是标记语言,但Mark ...

  5. linux如何安装阵列卡驱动程序,Linux安装阵列卡驱动及档.doc

    Linux安装阵列卡驱动及档 安装 Linux 4.6(官方没有兼容性测试) 手动加载M5014,M5015, M1015控制器驱动详细步骤 本文适用与使用M5014,M5015,M1015控制器机型 ...

  6. [RCTF2019]printer详解(python脚本、USB协议精解、TSLP2文档阅读)

    一个非常好的网站,可以学习USB协议: USB中文网 拿到文件发现是USB数据,第一反应用脚本提取: aaaaaaaaccccaahdgeeefefdgeegegeegcccbaabfefghifee ...

  7. Okular – 轻巧快速的跨平台文档阅读器

    Okular 由 KDE 开发的通用文档查看器,是一款功能丰富.轻巧快速的跨平台文档阅读器.您可以使用它来阅读 PDF 文档.漫画电子书.Epub 电子书,浏览图像,显示标记语言文档等.Okular ...

  8. 优秀的PDF文档阅读软件-Adobe Reader提供下载

    Adobe Reader是美国Adobe公司开发的一款优秀的PDF文档阅读软件.Adobe Reader功能强大,不仅可以用来阅读PDF文件,还可以编辑打印,最大的特色是免费的,有需要的话不要错过了哦 ...

  9. windows和linux系统之间的txt文档兼容问题

    windows和linux系统之间的txt文档兼容问题 在给公司做自动化文件同步的测试时,出现的这个问题,因为本地开发的从外网拿同步路径列表的脚本文件没有svn上传.就在windows机器上生成了文件 ...

  10. Django+Linux+Uwsgi+Nginx项目部署文档

    Django+Linux+Uwsgi+Nginx项目部署文档 WSGI 在生产环境中使用WSGI作为python web的服务器 WSGI:全拼为Python Web服务器网关接口,Python We ...

最新文章

  1. 【Docker】容器的几种网络模式
  2. 说说报表工具的无编码定制能力
  3. Mocha and Math 运算
  4. SQL Serever学习7——数据表2
  5. android 线性布局
  6. 京东笔试题:如何实现 MySQL 删除重复记录并且只保留一条?
  7. 横向滑动页面,导航条滑动居中的 js 实现思路
  8. pytorch DataLoader 自定义 sampler
  9. Linux命令之文本分析工具awk
  10. oracle替换字符串replace
  11. I2S协议及在verilog中实现
  12. STKX组件技术在星地链路中的仿真模式研究
  13. Excel表格中的删除操作,看看你会几种?
  14. 如何使广告条自动运行,仅供学习参考
  15. 纯净网站导航纯html无后台,仿360网址导航源码纯html页面无后台易操作修改无加密有留言后台...
  16. 销量下降,到底应该怎么分析?!
  17. 清除90天苹果充值记录_王者荣耀安卓苹果跨系统角色转移服务,限量测试收费99元...
  18. mysql异地多活方案_数据库异地多活解决方案
  19. CSDN博客去除上传的图片水印
  20. 磁盘阵列 vga_什么是VGA(视频图形阵列)?

热门文章

  1. dsoframer java_dsoframer控件动态加载
  2. Matlab画图常用命令
  3. hadoop大数据概述
  4. csv文件转为shp文件
  5. 常用身份证识别 OCR 技术 手机拍照识别身份证
  6. dev万能头文件_超级好用的C++万能头文件
  7. 70 行 Python 代码写春联,行书隶书楷书随你选
  8. 后台管理系统PRD该怎么写?
  9. 大一计算机基础ppt练习题,计算机基础知识PPT练习题及答案DOC
  10. c xaml语言教程,Xamarin XAML语言教程基础语法篇大学霸