Android 音频驱动的工作流程 安卓手机音频驱动android手机驱动「Android 音频驱动的工作流程 安卓手机音频驱动」
一、应用测试工具的使用
1.在external/tinyalsa下有以C语言实现的alsa的测试程序,编译后生成tinypcminfo tinyplay tinycap tinymix 四个elf格式的测试工具
(1) tinypcminfo :获取PCM In和PCM
# tinypcminfo -D /dev/snd/controlC0
View Code
(2) tinymix :通过/dev/snd/controlC0节点设置获取控制信息,进行控件的设置。比如设置链路,音量调节等。
View Code
驱动中对应的file_operations是:struct file_operations snd_ctl_f_ops
(3) tinycap : 使用/dev/snd/pcmC0D0c录音
# tinycap a.wav
const struct file_operations snd_pcm_f_ops[1]
(4) tinyplay : 使用/dev/snd/pcmC0D0p播放声音
# tinyplay a.wav
const struct file_operations snd_pcm_f_ops[0]
二、内核导出信息
1.devtmpfs信息(设备节点)
controlC0: 起控制作用,C0表示Card0
pcmC0D0c: Card 0,Device 0 capture,用来录音。
pcmC0D0p: Card 0,Device 0 playback,用来录音。
pcmC0D1c: Card 0,Device 1 capture,用来录音。
pcmC0D1p: Card 0,Device 1 playback,用来录音。
timer: 很少使用,暂时不用管。
pcmC0D1c/pcmC0D1p是一个辅助的备份的音频设备,先不管。
ALSA框架中一个声卡可以有多个逻辑Device,上面的pcmC0D0X和pcmC0D1X就是两个逻辑设备,一个Device又有播放、录音通道。
2.procfs文件信息
3.sysfs文件信息
4.debugfs文件信息
三、驱动实战
驱动分Platform驱动,Codec驱动和Machine驱动。我们对于4412开发板主要任务就是实现Machine驱动的平台设备端,移植调试Codec驱动wm8960.c。
Platform驱动Soc厂商已经实现好了是:sound/soc/samsung/dma.c
Soc端的dai驱动Soc厂商已经实现好了是:sound/soc/samsung/i2s.c
Machine平台设备驱动驱动端sound子系统已经实现好了,是sound/soc/soc-core.c
Codec驱动和Codec端的dai驱动都在Codec驱动中实现。
(1) 调试好的Codec驱动wm8960.c,
View Code
(2) Machine平台设备驱动设备端(驱动端是: sound/soc/soc-core.c)
View Code
宣威版权声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕,E-mail:xinmeigg88@163.com