ALSA
Open_Water
这个作者很懒,什么都没留下…
展开
-
ALSA架构中DMA的使用
ASoC中的Platform驱动分为两个部分:snd_soc_platform_driver和snd_soc_dai_driver。其中,snd_soc_platform_driver负责管理音频数据,把音频数据通过DMA传送至cpu dai中。注册声卡驱动时候,DMA驱动需要预先设置DMA一致性以及申请playback和capture所需的DMA Buffer。像snd_pcm_ops中的open、hw_params函数是在应用程序进行open("/dev/snd/pcmC0D0p")时,会进行调用。而t原创 2020-06-22 15:35:54 · 1433 阅读 · 0 评论 -
音频时钟
音频时钟主要由负责编解码器正常工作的主时钟和产生正确的音频播放和捕获采样率数字时钟组成。主时钟每个音频子系统需要由主时钟进行驱动(有时称为MCLK或SYSCLK)。音频的主时钟的来源可以是外部晶振,PLL,CPU时钟,主时钟主要负责产生正确的音频播放和捕获采样率。数字时钟数字音频接口通常由位时钟(通常称为BCLK)进行驱动。BCLK通常用于通过编解码器和CPU之间的链接驱动数字音频数据。数字时钟除了BCLK外,还有帧时钟(LRCLK),以信号通知每个音频帧的开始。 该时钟有时称为LRC(左右时钟原创 2020-06-17 16:51:01 · 3172 阅读 · 0 评论 -
Digital Audio Interface介绍
ASoC当前支持当今在SoC控制器和便携式音频编解码器中发现的三个主要数字音频接口(DAI),即AC97,I2S和PCM。AC97总线:AC97是五线接口,通常在许多PC声卡上都可以找到。 现在,它在许多便携式设备中也很流行。 该DAI具有一条复位线,并在其SDATA_OUT(播放)和SDATA_IN(捕获)线上进行时间复用。 位时钟(BCLK)始终由编解码器(通常为12.288MHz)驱动,而帧(FRAME)(通常为48kHz)始终由控制器驱动。 每个AC97帧长21uS,分为13个时隙。I2S原创 2020-06-16 17:20:26 · 2390 阅读 · 0 评论 -
虚拟Codec设计思路
虚拟Codec设计思路就是只提供SoC到Codec端的PCM接口,Codec端的内部路由不做控制。统一化代码时需要将平台端与Codec端代码分析,设计思路如下所示:虚拟Codec平台化原创 2020-06-15 17:38:39 · 608 阅读 · 0 评论 -
PCM的open流程
在系统初始化后,关于声卡驱动的加载流程主要先跑Step 1-->Step 2-->Step 3这个顺序进行加载。首先Step 1是声卡驱动的入口函数,其次Step 3是我们装载声卡驱动模块的入口函数,最后Step 3是用户空间的应用程序打开pcm设备节点。该图是声卡0,设备0且以打开播放设备为例,录音的流程基本相似,再此不做复述。PCM的open流程...原创 2020-06-02 15:33:18 · 2861 阅读 · 1 评论 -
ALSA声卡注册流程
嵌入式声卡驱动主要分为Platform Driver、Codec Driver、Machine Driver三部分,声卡驱动的注册是Machine Driver的注册进行展开。按照ALSA架构看,声卡的注册流程是自底向上进行展开。也就是具体的Machine驱动,和Codec驱动以及Platform驱动,接下来再往ASoC核心层,再到ALSA核心层。通过下图大致描述一下这整个过程:声卡驱动注册流程...原创 2020-05-28 16:07:01 · 1926 阅读 · 4 评论 -
Linux声卡驱动涉及重要结构体
struct snd_card是在ALSA Core层的核心数据结构,而snd_soc_card是ASoC层的核心数据结构。在嵌入式系统中,声卡驱动一般只需要关注两个逻辑设备:PCM设备跟Control设备。PCM设备用于管理音频数据,而Control设备用于Codec物理设备。下图尽可能描述声卡驱动所涉及的重要数据结构。ALSA关键数据结构...原创 2020-05-27 15:15:31 · 664 阅读 · 0 评论 -
ALSA框架
要深入学习ALSA,首先我们得清晰把握ALSA的软件架构是怎样的?通过对整体的把握,我们在后续的学习中才能进行更加深入的模块化学习。如下图所示:ALSA体系架构在这个体系架构图,我们只需要关注两个方面,一个是PCM设备控制流,另一个是Control控制流。PCM流这一条路针对平台的DMA操作,旨在将音频数据从内存到CPU (RX/TX)FIFO数据交换。而Control这一路是针对Cod...原创 2020-03-30 16:11:42 · 608 阅读 · 0 评论