经过上2星期的奋战,对asoc架构已经有了相当深入的认识,asoc其实alsa的封装,其更体现了linux代码复用的特点,具体来说将codec,cpu分离开来。在调试codec的时候不用管cpu,设置cpu相关的特性时不用去管codec。cpu相关的东西被设置为platform,具体实现pcm,iis,dma。codec具体实现spk,hp,playback,capture等具体寄存器设置。最后2者通过一个snd_soc_dai_link结构体link到一起,然后注册到platform_device里。O(∩_∩)O哈!,可能说的不清楚。O(∩_∩)O~,看代码就知道了。顺便再提下soc会注册一个platform的driver,到时候device注册了就会与之匹配,执行一系列初始化动作,如create card,设置control操作到card等等。还有codec的dapm也是一个很有用的技术,可以滤除白噪声,动态调节vol。 |