LINUX音频驱动架构

https://www.jianshu.com/p/0f5fe8f51b66

 

简介

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,设备层面组装所有驱动,实现音频通路。

 

  • 5
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux音频驱动是指在Linux操作系统中用于控制和管理音频设备的软件模块。根据引用\[1\]和引用\[2\]的内容,可以得出以下结论: 1. Linux音频驱动使用ALSA(Advanced Linux Sound Architecture)框架。ALSA是Linux内核中的音频架构,支持多种音频设备和功能。 2. ALSA音频驱动框架在系统启动后会打印出ALSA设备列表,其中包括声卡设备,如"wm8960-audio"。这些设备文件位于/dev/snd目录下。 3. 在重新编译Linux内核时,可以通过图形化界面配置使能内核自带的WM8960驱动。具体的配置路径可以参考引用\[2\]中的说明。 4. 取消ALSA模拟OSS API的选择是为了避免使用旧的OSS(Open Sound System)API,而选择使用ALSA的新的音频接口。 综上所述,Linux音频驱动使用ALSA框架,可以通过重新编译内核并配置使能相应的驱动来实现对音频设备的控制和管理。 #### 引用[.reference_title] - *1* *2* [Linux驱动开发|音频驱动](https://blog.csdn.net/Chuangke_Andy/article/details/122494425)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [Linux 音频驱动实验](https://blog.csdn.net/afddasfa/article/details/129805476)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值