6410音频ALSA驱动框架分析
来源:互联网 发布:eclipse.ini 配置优化 编辑:程序博客网 时间:2024/04/30 03:36
ALSA针对于移动设备的ASoC被分为Machine、Platform和Codec三大部分
以下分析硬件平台为:tiny6410 内核版本:2.6.38
(1)、Machine部分:
Machine驱动负责Platform和Codec之间的耦合以及部分和设备或板子特定的代码,再次引用上一节的内容:Machine驱动负责处理机器特有的一些控件和音频事件(例如,当播放音频时,需要先行打开一个放大器);单独的Platform和Codec驱动是不能工作的,它必须由Machine驱动把它们结合在一起才能完成整个设备的音频处理工作。
ASoC的一切都从Machine驱动开始,包括声卡的注册,绑定Platform和Codec驱动等等。
1、mini6410-wm9713.c (声卡等平台设备注册) <------> sound/soc/soc-core.c (平台驱动注册)
2、mach-s3c64xx/dev-audio.c(平台设备注册) <-------> sound/soc/samsung/ac97.c(平台驱动注册)
(2)、code部分:
在移动设备中,Codec的作用可以归结为4种,分别是:
- 对PCM等信号进行D/A转换,把数字的音频信号转换为模拟信号
- 对Mic、Linein或者其他输入源的模拟信号进行A/D转换,把模拟的声音信号转变CPU能够处理的数字信号
- 对音频通路进行控制,比如播放音乐,收听调频收音机,又或者接听电话时,音频信号在codec内的流通路线是不一样的
- 对音频信号做出相应的处理,例如音量控制,功率放大,EQ控制等等
ASoC对Codec的这些功能都定义好了一些列相应的接口,以方便地对Codec进行控制。ASoC对Codec驱动的一个基本要求是:驱动程序的代码必须要做到平台无关性,以方便同一个Codec的代码不经修改即可用在不同的平台上。
mini6410-wm9713.c (平台设备注册) <----------> wm9713.c (平台驱动注册)(3)、platform部分:
Platform驱动的主要作用是完成音频数据的管理,最终通过CPU的数字音频接口(DAI)把音频数据传送给Codec进行处理,最终由Codec输出驱动耳机或者是喇叭的音信信号。在具体实现上,ASoC有把Platform驱动分为两个部分:snd_soc_platform_driver和snd_soc_dai_driver。其中,platform_driver负责管理音频数据,把音频数据通过dma或其他操作传送至cpu dai中,dai_driver则主要完成cpu一侧的dai的参数配置,同时也会通过一定的途径把必要的dma等参数与snd_soc_platform_driver进行交互。
arch/arm/plat-samsung/dev-asocdma.c (平台设备注册) <---------> sound/soc/samsung/dma.c (平台驱动注册)
。。。待续
- 6410音频ALSA驱动框架分析
- linux ALSA音频驱动框架
- ALSA Soc音频驱动分析
- ALSA Soc音频驱动分析
- ALSA Soc音频驱动分析
- ALSA Soc音频驱动分析
- ALSA Soc音频驱动分析
- Linux ALSA音频框架分析三:ALSA框架
- Linux ALSA音频框架分析四:ALSA 的硬件抽象
- Linux ALSA音频框架分析二:linux音频子系统介绍
- ALSA音频驱动研究
- alsa音频驱动相关
- Linux ALSA 音频驱动框架-以MINI2440-UDA1341TS为例
- (转)ALSA Soc音频驱动分析 -- 1
- linux音频alsa-uda134x驱动分析之一(over-view)
- linux音频alsa-uda134x驱动分析之二(时钟)
- linux音频alsa-uda134x驱动分析之三(解码器)
- linux音频alsa驱动分析之一(over-view)
- Java深拷贝与浅拷贝原理
- hdu 4745 Two Rabbits
- Node.js学习(15)----Express 3.x和Express 2.x区别
- 架构师面试【1】
- 使用Qt的QObject类实现多叉树
- 6410音频ALSA驱动框架分析
- 第一次
- /sys/bus一个总线设备驱动
- 用C语言解析BMP文件的结构
- javascript 遍历表格中的内容
- [HengStar-Boost讲堂]多索引容器multi_index_container实战
- [C语言]菜鸟的一些理解-结构体,共用体,枚举,位域
- Java中的ArrayList数组
- K均值算法的c语言实现