audio驱动之简单介绍

audio驱动原理概述

ASoC 被分为 MachinePlatformCodec 三大部件,Platform 驱动的主要作用是完成音频数据的管理, 最终通过 CPU数字音频接口(DAI) 把音频数据传送给 Codec 进行处理,最终由 Codec 输出音频信号给耳机或者是喇叭。 在具体实现上, ASoC 又把 platform 驱动分为两个部分: snd_soc_platform_driversnd_soc_dai_driver 。其中, platform_driver 负责管理音频数据,把音频数据通过 dma 或 其他操作传送至 cpu dai 中, dai_driver 则主要完成 cpu 一侧的 dai 的参数配置, 同时也会通过一定的途径把必要的 dma 等参数与 snd_soc_platform_driver 进行交互。

audio驱动中的一些术语以及概念

  • platform: 一般是指某一个SoC平台,比如 MTK,QCOM 等平台,与音频相关的通常包含该SoC中的 Clock、I2S、DMA 等等,一般由CPU厂商负责提供此部分的代码。platform又可以细分为两个部分:
  • cpu_dai:在嵌入式系统里面通常指socI2S、PCM总线控制器,负责把音频数据从I2S TX FIFO搬运到CODEC(这里是播放的情形,录制则相反)。cpu_dai通过 snd_soc_register_dai 来注册。嵌入式系统中一般是I2SPCM接口。
  • pcm_dma:负责把dma_buffer中的音频数据搬运到I2S TX FIFO。值得留意的是:某些情形下是不需要dma操作的,比如modemcodec直连,因为modem·本身已经把数据送到FIFO`了,这时只需启动
  • platform_dai(cpu_dai):连接platformmachine

  • codec :字面上的意思就是编解码器,在播放音频的过程中,将传输过来的经过采样量化成数字信号的音频数据,通过DAC转换成模拟信号,然后输出到喇叭或者耳机,让我们可以听到声音。Codec 里面包含了 I2S接口、DAC、ADC、Mixer、PA(功放),通常包含多种输入(Mic、Line-in、I2S、PCM)多个输出(耳机、喇叭、听筒,Line-out)CodecPlatform一样,是可重用的部件。这个模块由codec厂商负责提供此部分的代码。

  • codec_dai:连接codecmachine

  • machine:指某款机器,比如智能手机,通过配置dai_linkcpu_dai、codec_dai、modem_dai 各个音频接口给链结成一条条音频链路,然后注册 snd_soc_card。和上面两个不一样,PlatformCODEC 驱动一般是可以重用的,而 machine 有它特定的硬件特性,几乎是不可重用的 。所谓的硬件特性指:soc platformcodec 的差异;DAIs 之间的链结方式;通过某个 GPIO 打开 Amplifier;通过某个 GPIO 检测耳机插拔;使用某个时钟如 MCLK/External-OSC 作为 I2S、CODEC 的时钟源等。

  • dai_linkmachine 驱动中定义的音频数据链路,它指定链路用到的 codec、codec_dai、cpu_dai、platform 。一个系统可能有多个音频数据链路,比如 mediavoice,因此可以定义多个 dai_link

  • PCMPCM(Pulse-code modulation) 是脉冲编码调制,PCM信号的两个重要指标是采样频率量化精度 ,目前,CD音频的采样频率通常为44100Hz,量化精度是16bit。播放音乐时,应用程序从存储介质中读取音频数据(MP3、WMA、AAC…),经过解码后,最终送到音频驱动程序中的就是PCM数据;在录音时,音频驱动不停地把采样所得的PCM数据送回给应用程序,由应用程序完成压缩、存储等任务。所以,音频驱动的两大核心任务就是:

  • playback:如何把用户空间的应用程序发过来的PCM数据,转化为人耳可以辨别的模拟音频信号
  • capture:把mic拾取到的模拟信号,经过采样、量化,转换为PCM数据送回给用户空间

音频驱动主要实现一下3个部分的功能:
(1)播放声音(playback)
(2)录音(capture)
(3)声音控制(control)

运行adb shell ls -l /dev/snd,我们可以看到当前平台注册的声卡驱动设备。
主要分为以下几类:
pcmCxDxp —— Playback
pcmCxDxc —— Capture
controlC0 —— Control,比如各种音频控件开关、音量增益等

查看声卡设备的一些常用命令

<1>查看声卡的设备文件

ls -l /dev/snd
crw-rw---- 1 system audio 116,   2 2020-04-22 22:05 controlC0
crw-rw---- 1 system audio 116,   3 2020-04-22 22:05 pcmC0D0p
crw-rw---- 1 system audio 116,  17 2020-04-22 22:05 pcmC0D10p
crw-rw---- 1 system audio 116,  18 2020-04-22 22:05 pcmC0D11p
crw-rw---- 1 system audio 116,  19 2020-04-22 22:05 pcmC0D12c
crw-rw---- 1 system audio 116,  20 2020-04-22 22:05 pcmC0D13c
crw-rw---- 1 system audio 116,  21 2020-04-22 22:05 pcmC0D14p
crw-rw---- 1 system audio 116,  22 2020-04-22 22:05 pcmC0D15c
crw-rw---- 1 system audio 116,  23 2020-04-22 22:05 pcmC0D16c
crw-rw---- 1 system audio 116,  25 2020-04-22 22:05 pcmC0D17c
crw-rw---- 1 system audio 116,  24 2020-04-22 22:05 pcmC0D17p
crw-rw---- 1 system audio 116,  27 2020-04-22 22:05 pcmC0D18c
crw-rw---- 1 system audio 116,  26 2020-04-22 22:05 pcmC0D18p
crw-rw---- 1 system audio 116,  28 2020-04-22 22:05 pcmC0D19p
crw-rw---- 1 system audio 116,   4 2020-04-22 22:05 pcmC0D1c
crw-rw---- 1 system audio 116,  29 2020-04-22 22:05 pcmC0D20p
crw-rw---- 1 system audio 116,  30 2020-04-22 22:05 pcmC0D21p
crw-rw---- 1 system audio 116,  31 2020-04-22 22:05 pcmC0D22c
crw-rw---- 1 system audio 116,  34 2020-04-22 22:05 pcmC0D23p
crw-rw---- 1 system audio 116,  35 2020-04-22 22:05 pcmC0D24p
crw-rw
  • 3
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MSM Audio Platform是高通移动平台上的音频框架,其中包括了音频编解码器、音频处理算法、音频输入输出设备以及音频驱动等组件。下面我简单介绍一下MSM Audio Platform的驱动代码跟踪。 1. 驱动框架 MSM Audio Platform的驱动框架是由两个主要组件组成:音频HAL(硬件抽象层)和音频驱动。音频HAL是Android Audio Framework与硬件之间的接口,它提供了一个统一的音频接口,使得应用程序可以通过这个接口来访问音频硬件。音频驱动则是直接与硬件交互的组件,它包括了音频设备驱动、音频编解码器驱动、音频处理算法驱动等。 2. 音频设备驱动 音频设备驱动是MSM Audio Platform的核心组件之一,它负责控制音频输入输出设备的数据传输和处理。在Linux内核中,音频设备驱动一般以ALSA(Advanced Linux Sound Architecture)的形式出现,而在高通的移动平台上,则使用了一些定制化的驱动。 3. 音频编解码器驱动 音频编解码器驱动是MSM Audio Platform的另一个核心组件,它负责音频数据的编解码。在高通的移动平台上,一般使用QDSP6(Qualcomm Hexagon DSP)来进行音频编解码,因为QDSP6是一种专门用于音频和信号处理的高性能DSP。 4. 音频处理算法驱动 音频处理算法驱动是MSM Audio Platform的另一个重要组成部分,它负责音频信号的处理,例如降噪、回声消除、均衡器等。在高通的移动平台上,一般使用Adreno DSP来进行音频处理,因为Adreno DSP是一种专门用于图形和信号处理的高性能DSP。 总之,MSM Audio Platform的驱动代码跟踪涉及到多个组件和技术,需要有一定的硬件和软件知识。如果您想深入了解MSM Audio Platform的内部实现原理,建议参考高通官方的文档和代码库。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值