LINUX音频驱动架构
https://www.jianshu.com/p/0f5fe8f51b66
简介
LINUX下音频驱动开发,要遵循标准的ALSA架构,
下面分别从硬件架构、软件架构、驱动程序,3个方面分析。
硬件架构
硬件上音频总线接口有很多,如I2S、PCM、TDM、SLIMBUS等,以I2S为例分析:
I2S接口.png
- 播放流程
- 使用I2C对CODEC做初始化配置。
- 音频数据从外部flash读取到内存中。
- 数据经过DMA送到I2S的TXFIFO。
- 数据由TXFIFO送到CODEC硬件。
- 在CODEC硬件里,数据从数字信号转变成模拟信号。
- 模拟信号经过喇叭播放出来,就实现了声音的播放。
- 录音流程
与播放流程相反,在第5步,从模拟信号变成数字信号,其他都一样
软件架构-ALSA
安卓的整体音频架构
ALSA.png
从上到下分别是:
- APP-HAL,安卓中的音频框架,用于适配LINUX内核。
- ALSA-lib,LINUX内核音频驱动框架。
- machine-codec驱动,硬件音频驱动程序。
驱动程序
按照ALSA驱动框架要实现的接口有:
driver.png
各个部分功能分别是:
- DTS,音频硬件参数配置。
- CPU DAI,CPU上的音频接口驱动,如I2S,PCM,SLIMBUS等。
- platform,基于CPU的DMA接口封装,用于实现音频数据在内存和DMA之间流动。
- CODEC DAI,CODEC上的音频接口驱动。
- CODEC,CODEC自身驱动。
- I2C,实现CODEC的配置接口。
- machine,设备层面组装所有驱动,实现音频通路。
LINUX音频驱动架构相关推荐
- linux 音频架构绕过,linux音频驱动架构
1.linux音频驱动架构分为3部分组成:硬件无关层(核心层ALSA).板级音频数字接口层驱动(McASP.McBSP等).外部codes驱动 sound/soc/davinci/ti81xx-etv ...
- Java核心编程总结(二、抽象类与接口),linux音频驱动架构
抽象类不能创建对象,如果创建,编译无法通过而报错 理解:假设创建了抽象类的对象,调用抽象方法,抽象方法没有方法体,无法执行 抽象类一定有而且是必须有构造器,是提供给子类创建对象时,初始化父类成员使用的 ...
- STM32MP157驱动开发——Linux 音频驱动
STM32MP157驱动开发--Linux 音频驱动 一.简介 1.CS42L51 简介 2.I2S总线 3.STM32MP1 SAI 总线接口 二.驱动开发 1.音频驱动 1)修改设备树 i2c 接 ...
- 转载:Linux音频驱动-OSS和ALSA声音系统简介及其比较
Linux音频驱动-OSS和ALSA声音系统简介及其比较 概述 昨天想在Ubuntu上用一下HTK工具包来绘制语音信号的频谱图和提取MFCC的结果,但由于前段时间把Ubuntu升级到13.04,系统的 ...
- Linux 音频驱动
Linux 音频驱动 硬件介绍 WM8960与IMX6ULL之间有两个通信接口:I2C和I2S 其中I2C用于配置WM8960 I2S用于音频数据传输 修改设备树文件 编写I2C子节点设备树 code ...
- Linux网络驱动架构
转载来自:https://blog.csdn.net/zhoudengqing/article/details/47406821 转 Linux网络驱动架构 2015年08月10日 22:54:39 ...
- Linux 音频驱动(四) ASoC音频驱动之Machine驱动
目录 1. 基本介绍 2. 源码分析 2.1. Machine数据结构 struct snd_soc_dai_link 3. 声卡 3.1. 数据结构struct snd_soc_card 3.2. ...
- Linux 音频驱动(五) ALSA音频驱动之PCM逻辑设备
目录 1. 前言 2. PCM逻辑设备 2.1. 创建 PCM逻辑设备: 2.2. PCM逻辑设备文件操作函数集:snd_pcm_f_ops[] 2.3. Open PCM逻辑设备 2.4. Writ ...
- Linux音频驱动之二:Control接口的调用
本文是基于mini2440开发板Linux版本号是linux-2.6.32.2的学习笔记 一. control接口说明 Control接口主要让用户空间的应用程序(alsa-lib)可以访问和控制音频 ...
最新文章
- buffers和cache的区别
- 启停系统错误_关掉自动启停系统,就可以用普通蓄电池代替启停蓄电池吗?
- python中文读音ndarray-Python中Numpy ndarray的使用详解
- 一个简单的Spring的AOP例子(JAVA面向切面编程)
- 《算法竞赛进阶指南》打卡-基本算法-AcWing 90. 64位整数乘法:位运算
- 【CV】大神没交棒,但YOLOv5来了!
- 利用三层交换机实现VLAN间路由配置
- Uva 201 Squares (暴力 + 枚举)
- 安装oracle不动了,windows2008安装ORACLE到2%不动的问题 | 信春哥,系统稳,闭眼上线不回滚!...
- python办公室妙用-python eval()函数的妙用和滥用
- position:fixed 失效
- HDU-1863-畅通工程
- 【5月8 】NVIDIA 迁移学习工具包(TLT)最佳实践
- Linux 网络配置 修改DNS配置文件/etc/resolv.conf后,重启网络,DNS配置丢失
- 微信小程序的点击、双击、长按事件
- cors js解决js跨域问题
- ZYNQ飞控系统设计-PX的MAalefile解读
- codewars练习(javascript)-2021/2/17
- 2022·创新峰会回顾 | 擎创科技荣获CCID双料优秀成果奖
- 股票接口数据获取方式