基于imx25开发板音频驱动理解
来源:互联网 发布:网络安全工程师薪资 编辑:程序博客网 时间:2024/05/21 23:04
之前在做关于音频驱动的相关工作,学习到了一些知识,所以简单的谈一谈对这方面的理解。
内容主要是基于imx255核心板,它是支持多种音频处理芯片的。工作是配合音频芯片SGTL5000进行的。这里主要介绍该芯片在Linux下的驱动相关内容。我实际使用的Linux的2.6.28的内核,经过移植,可以在目标板上成功的运行了。
首先,内核编译时候关于音频的选项设置如下:
Device drivers > Sound card support > Advanced Linux Sound Architecture > ALSA for SoC
audio support > SoC Audio for the Freescale i.MX CPU, SoC Audio support for IMX – SGTL5000
其次,分析音频驱动的层次结构:
这个立体声编解码器,是通过SSI接口,连接到CPU的。imx-ssi.c 文件为ALSA芯片注册CPU的数字音频接口,并且配置片上的SSI接口。sgtl5000.c 负责注册立体声编解码器和高保真的数字音频接口的驱动程序。而直接对硬件进行的操作,也都是在sgtl5000.c 这个
文件中的。
下面是所有SGTL5000音频驱动相关文件及其描述:
File Description
imx/imx-3stack-sgtl5000.c 机器层的ALSA立体声音频编解码器
imx/imx-pcm.c 平台层的ALSA立体声音频编解码器
imx/imx-pcm.h PCM驱动的头文件和定义相关的AUDMUX的寄存器
imx/imx-ssi.c 基于ALSA立体声音频编解码器的平台支持的数字音频接口
imx/imx-ssi.h 平台支持的数字音频接口和SSI寄存器定义的头文件
codecs/sgtl5000.c 音频编解码器层的ALSA代码
codecs/sgtl5000.h 音频编解码器的头文件
对应的结构如图所示:
接着,音频驱动codec相关分析:
主要是codecs/sgtl5000.c和codecs/sgtl5000.h两个文件。
至于sgtl5000.h文件,其中主要工作就是对芯片相关寄存器和一些寄存器的微操作进行的声明等工作。
而sgtl5000.c文件时对芯片硬件进行的直接控制操作。其中,主要包含了芯片的探测,作为i2c从设备的探测,硬件初始化,ID和版本号识别,硬件寄存器控制初始化,封装了i2c读写操作的sgtl5000的读写操作,还有sgtl5000读写缓存的操作等。
还有值得一提的一个文件是,/arch/arm/mach-mx25/mx25-3stack.c文件,其中指明了该芯片的设备地址,还有一些关于数据和始终的简单初始化的工作。
最后,测试音频:
编写一个测试文件,经过交叉编译之后,加载的目标板的文件系统中,运行该文件播放指定的音乐文件即可。我使用的测试文件是针对wav格式的,只能播放wav的音乐文件。
- 基于imx25开发板音频驱动理解
- ASIO音频驱动开发指南
- Alsa音频驱动开发参考
- WinCE基于I2S总线的单体音频驱动开发(UDA1341)
- 基于s5pv-210开发板 LCD驱动
- 基于S5PV210板驱动开发之按键驱动
- linux驱动开发理解
- ASIO音频驱动开发指南 2.0
- linux下ALSA音频驱动软件开发
- 音频驱动开发的好博客
- 音频驱动开发和音质调试指南
- 基于s3c6410开发板helloworld驱动模块开发
- 基于mini2440的uda1341音频驱动架构分析
- 基于mini2440的Linux音频驱动完全解读(一)
- Linux Audio DRV(音频驱动)-基于mini2440
- 音频驱动
- linux-2.6.32在mini2440开发板上移植(13)之移植UDA1341 音频驱动
- linux-2.6.32在mini2440开发板上移植 ---移植UDA1341 音频驱动
- 面向对象编程实践—桌面时钟的设计(Qt实现)
- 关于DNS服务器的配置问题(推荐)
- 高效 Ini文件访问类(C#编写,用于Windows Mobile)
- 高尔夫球的表面为什么凹凸不平?
- 手动使用sql profile来进行执行计划的稳固
- 基于imx25开发板音频驱动理解
- cocos2d-x 实现按Home和待机键后,再进入游戏显示暂停界面
- Interview on 20111201
- 一个打印日志的C宏定义——TRACEOUT
- Glassfish莫名爆Client not authorized for this invocation
- 再谈select, iocp, epoll,kqueue及各种I/O复用机制
- 如何在MATLAB图形窗口中复制数据文件。
- 图形图像处理-之-高质量的快速的图像缩放 中篇 二次线性插值和三次卷积插值
- 图形图像处理-之-高质量的快速的图像缩放 上篇 近邻取样插值和其速度优化