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音频驱动架构

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

  • 日常

    系统架构:1.linux内核层(为设备各种硬件提供底层驱动,如显示驱动,音频驱动,蓝牙驱动等) ...

  • 第一章--android知识简介

    android系统架构 Linux内核层为android提供了各种底层的驱动,如显示驱动,音频驱动,照相机驱动,蓝...

  • Android系统架构

    Android系统架构 Linux内核层为Android设备的各种硬件提供了底层的驱动,如显示驱动、音频驱动、相机...

  • 《第一行代码:Android》读书笔记——第1章 Android

    (一)Android系统架构 Linux内核层:各种底层驱动,如显示驱动、音频驱动、电源管理等。 系统运行库层:各...

  • Linux驱动模块编译

    Linux 对大多数的驱动作了分类:块设备驱动、网络驱动、I 2 C 驱动、USB 驱动、SPI 驱动、音频驱动等...

  • Qcom DRM显示(一)

    [TOC] Qcom DRM显示驱动架构 DRM原为Linux下的图形渲染架构(Direct Rendering ...

  • 认识Android

    认识Android Android四层架构 : Linux内核层 --- 底层驱动 显卡,蓝牙,声卡驱动 电源管...

  • 第一行代码-Android(第二版)笔记

    Android 系统构架 Linux kernel(内核)为Android 设备提供底层的驱动,如显示驱动,音频驱...

  • Binder驱动概述

    1.1 概述 Binder驱动是Android专用的,但底层的驱动架构与Linux驱动一样。binder驱动在以m...

网友评论

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

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