LINUX音频驱动架构

作者: 郑俊飞 | 来源:发表于2018-02-11 10:42 被阅读0次

    简介

    LINUX下音频驱动开发,要遵循标准的ALSA架构,
    下面分别从硬件架构、软件架构、驱动程序,3个方面分析。

    硬件架构

    硬件上音频总线接口有很多,如I2S、PCM、TDM、SLIMBUS等,以I2S为例分析:


    I2S接口.png
    • 播放流程
    1. 使用I2C对CODEC做初始化配置。
    2. 音频数据从外部flash读取到内存中。
    3. 数据经过DMA送到I2S的TXFIFO。
    4. 数据由TXFIFO送到CODEC硬件。
    5. 在CODEC硬件里,数据从数字信号转变成模拟信号。
    6. 模拟信号经过喇叭播放出来,就实现了声音的播放。
    • 录音流程
      与播放流程相反,在第5步,从模拟信号变成数字信号,其他都一样

    软件架构-ALSA

    安卓的整体音频架构


    ALSA.png

    从上到下分别是:

    1. APP-HAL,安卓中的音频框架,用于适配LINUX内核。
    2. ALSA-lib,LINUX内核音频驱动框架。
    3. machine-codec驱动,硬件音频驱动程序。

    驱动程序

    按照ALSA驱动框架要实现的接口有:


    driver.png

    各个部分功能分别是:

    1. DTS,音频硬件参数配置。
    2. CPU DAI,CPU上的音频接口驱动,如I2S,PCM,SLIMBUS等。
    3. platform,基于CPU的DMA接口封装,用于实现音频数据在内存和DMA之间流动。
    4. CODEC DAI,CODEC上的音频接口驱动。
    5. CODEC,CODEC自身驱动。
    6. I2C,实现CODEC的配置接口。
    7. machine,设备层面组装所有驱动,实现音频通路。

    本文由头条号“嵌入式FM106点1”发布,各种原创技术干货,欢迎关注。

    相关文章

      网友评论

        本文标题:LINUX音频驱动架构

        本文链接:https://www.haomeiwen.com/subject/ozdktftx.html