LINUX音频驱动架构
LINUX下音频驱动开发,要遵循标准的ALSA架构linux 驱动,
下面分别从硬件架构、软件架构、驱动程序,3个方面分析。
硬件架构
硬件上音频总线接口有很多,如I2S、PCM、TDM、SLIMBUS等,
简介 LINUX下音频驱动开发,要遵循标准的ALSA架构linux 驱动, 下面分别从硬件架构、软件架构、驱动程序,3个方面分析。 硬件架构 硬件上音频总线接口有很多,如I2S、PCM、TDM、SLIMBUS等,以I2S为例分析: I2S接口.png 使用I2C对CODEC做初始化配置。 音频数据从外部flash读取到内存中。 数据经过DMA送到I2S的TXFIFO。 数据由TXFIFO送到CODEC硬件。 在CODEC硬件里,数据从数字信号转变成模拟信号。 模拟信号经过喇叭播放出来,就实现了声音的播放。 软件架构-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,设备层面组装所有驱动,实现音频通路。 (编辑:晋中站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |