您好,欢迎访问三七文档
一over-viewALSASoCLayerALSA板上系统层==============TheoverallprojectgoaloftheALSASystemonChip(ASoC)layeristoprovidebetterALSAsupportforembeddedsystem-on-chipprocessors(e.g.pxa2xx,au1x00,iMX,etc)andportableaudiocodecs.PriortotheASoCsubsystemtherewassomesupportinthekernelforSoCaudio,howeverithadsomelimitations:-ALSA板上系统(ASoC)层的总体项目目标,是为对SOC嵌入式处理器和便携音频解码器提供更好的ALSA支持。在ASoC子系统之前,己有对内核的SoC音频支持,但是那些支持存在一些局限:CodecdriverswereoftentightlycoupledtotheunderlyingSoCCPU.Thisisnotidealandleadstocodeduplication-forexample,Linuxhaddifferentwm8731driversfor4differentSoCplatforms.解码器常常与底层嵌入式处理器一对一紧密结合。这是非理想化的,因为这将导致代码的重复-例如,对四个不同的嵌入式平台,Linux要有不同的wm8731驱动。(理想的状态是我们可以只有一个wm8731的驱动代码,就可以对应于四个不同的处理器,但由上面说的,解码器-这里的wm8731与底层嵌入式处理器结合过于紧密,无法实现wm8731驱动代码的复用)*Therewasnostandardmethodtosignaluserinitiatedaudioevents(e.g.Headphone/Micinsertion,Headphone/Micdetectionafteraninsertionevent).Thesearequitecommoneventsonportabledevicesandoftenrequiremachinespecificcodetore-routeaudio,enableamps,etc.,aftersuchanevent.没有一个标准的方法可以产生用户初始化音频事件的信号(即,耳机/麦克插入,响应插入事件的耳机/麦克探测)。这些在便携设备上都是十分常见的事件并且在这些事件之后经常需要机器相关的代码来对音频重设路径,开启放大器等。*Driverstendedtopoweruptheentirecodecwhenplaying(orrecording)audio.ThisisfineforaPC,buttendstowastealotofpoweronportabledevices.Therewasalsonosupportforsavingpowerviachangingcodecoversamplingrates,biascurrents,etc.放音(录音)时,驱动常常会打开整个解码器。对个人电脑来说这没什么问题,但是在便携设备上往往会导致电能的浪费。另外,也没有通过改变解码器采样率、偏置电流等方式来省电的支持。ASoCDesignASoC设计===========TheASoClayerisdesignedtoaddresstheseissuesandprovidethefollowingfeatures:-ASoC层被设计用来解决这些问题并提供如下特性:*Codecindependence.Allowsreuseofcodecdriversonotherplatformsandmachines.解码器独立。允许在其它平台或机器上重用解码器驱动。*EasyI2S/PCMaudiointerfacesetupbetweencodecandSoC.EachSoCinterfaceandcodecregistersit'saudiointerfacecapabilitieswiththecoreandaresubsequentlymatchedandconfiguredwhentheapplicationhardwareparametersareknown.解码器与SoC的I2S/PCM音频接口设置很容易。每个SoC接口与解码器都向ALSA核心注册它的音频接口能力,而且应用硬件参数己知时顺序匹配并配置。*DynamicAudioPowerManagement(DAPM).DAPMautomaticallysetsthecodectoitsminimumpowerstateatalltimes.Thisincludespoweringup/downinternalpowerblocksdependingontheinternalcodecaudioroutingandanyactivestreams.动态音频电源管理(DAPM)。DAPM自动无论何时,总是把解码器自动设置为它的最小电源状态。这包括依据内部解码音频线路和活跃的流来开启和关闭内部电源模块*Popandclickreduction.Popsandclickscanbereducedbypoweringthecodecup/downinthecorrectsequence(includingusingdigitalmute).ASoCsignalsthecodecwhentochangepowerstates.咔嗒声减少。咔嗒声可以通过使用正确的解码器电源开启和关闭顺序而减少(包括使用数字消音)。ASoC在改变电源状态时向解码器发出信号。*Machinespecificcontrols:Allowmachinestoaddcontrolstothesoundcard(e.g.volumecontrolforspeakeramplifier).机器相关的控制:允许机器增加对声卡的控制。(如扬声器放大器的音量控制)。Toachieveallthis,ASoCbasicallysplitsanembeddedaudiosysteminto3components:-要实现这些,ASoC基本上将嵌入式音频系统分为3个部分:*Codecdriver:Thecodecdriverisplatformindependentandcontainsaudiocontrols,audiointerfacecapabilities,codecDAPMdefinitionandcodecIOfunctions.解码器驱动:解码器驱动是平台无关的,包含音频控制、音频接口能力、解码器动态音频电源管理和解码器IO函数。*Platformdriver:TheplatformdrivercontainstheaudioDMAengineandaudiointerfacedrivers(e.g.I2S,AC97,PCM)forthatplatform.平台驱动:平台驱动包含相应平台的音频DMA引擎和音频接口驱动(如I2S,AC97,PCM)*Machinedriver:Themachinedriverhandlesanymachinespecificcontrolsandaudioevents(e.g.turningonanampatstartofplayback).机器驱动:机器驱动处理所有机器相关的控制和音频事件(如回放开始时打开放大器)。Documentation文档=============Thedocumentationisspiltintothefollowingsections:-本文档分成如下部分:overview.txt:Thisfile.overview.txt:概述,本文件。codec.txt:Codecdriverinternals.codec.txt:解码器驱动内部实现DAI.txt:DescriptionofDigitalAudioInterfacestandardsandhowtoconfigureaDAIwithinyourcodecandCPUDAIdrivers.DAI.txt:对数字音频接口(DAI)标准和如何配置你的解码器和CPU的数字音频接品驱动中的数字音频接口的描述。dapm.txt:DynamicAudioPowerManagementdapm.txt:动态音频电源管理platform.txt:PlatformaudioDMAandDAI.platform.txt:平台音频DMA和DAI。machine.txt:Machinedriverinternals.machine.txt:机器驱动内容介绍。pop_clicks.txt:Howtominimiseaudioartifacts.pop_clicks.txt:如何最小化音步噪声。clocking.txt:ASoCclockingforbestpowerperformance.clocking.txt:最佳电源表现下的ASoC时钟二音频时钟AudioClocking音频时钟==============ThistextdescribestheaudioclockingtermsinASoCanddigitalaudioingeneral.Note:Audioclockingcanbecomplex!本文本总体描述ASoC和数字音频中的音频时钟条款。MasterClock主时钟------------Everyaudiosubsystemisdrivenbyamasterclock(sometimesreferredtoasMCLKorSYSCLK).Thisaudiomasterclockcanbederivedfromanumberofsources(e.g.crystal,PLL,CPUclock)andisresponsibleforproducingthecorrectaudioplaybackandcapturesamplerates.每个数字音频子系统都是由主时钟来驱动的(有时称为MCLK或SYSCLK)。音频主时钟可以派生于多种源(如晶振,锁相环,处理器时钟)。负责产生正确的音频播放和捕获采样率。Somemasterclocks(e.g.PLLsandCPUbasedclocks)areconfigurableinthattheirspeedcanbealteredbysoftware(dependingonthesystemuseandtosavepower).Othermasterclocksarefixedatasetfrequency(i.e.crystals).有些主时钟是可配置的(如基于锁相环或处理器的时钟),它们可以通过软件改变速度(依赖于系统应用和省电的考虑)。另一些主时钟则是固定于一个特定的频率值(如晶振)。DAIClocks数字音频时钟----------TheDigitalAudioInterfaceisusuallydrivenbyaBitClock(oftenreferredtoasBCLK).ThisclockisusedtodrivethedigitalaudiodataacrossthelinkbetweenthecodecandCPU.数字音频接口往往是由一个位时钟来驱动的(通常记为BCLK)。这个时钟用于驱动数字音频数据在解码器与处理器间的传输。TheDAIalsohasaframeclocktosignalthestartofeachaudioframe.ThisclockissometimesreferredtoasLRC(leftrightclock)orFRAME.Thisclockrunsatexactlythesamplerate(LRC=Rate).数字音频接口还有一个帧时钟,用来指示一帧音频的开始。该时钟有时记
本文标题:soc文档阅读
链接地址:https://www.777doc.com/doc-3310669 .html