ALSA声卡笔记3--ASoC驱动重要结构体关系图

原创 2016年08月29日 20:17:48

                                

1、ASoC中重要的数据结构之间的关联方式

(1)Kernel-2.6.35-ASoC中各个结构的静态关系

       ASoC把声卡实现为一个Platform Device,然后利用Platform_device结构中的dev字段:dev.drvdata,它实际上指向一个snd_soc_device结构

       可以认为snd_soc_device是整个ASoC数据结构的根本,由他开始,引出一系列的数据结构用于表述音频的各种特性和功能。snd_soc_device结构引出了snd_soc_card和soc_codec_device两个结构

     然后snd_soc_card又引出snd_soc_platform、snd_soc_dai_link和snd_soc_codec结构。如上所述,ASoC被划分为Machine、Platform和Codec三大部分,如果从这些数据结构看来,snd_codec_device和snd_soc_card代表着Machine驱动snd_soc_platform则代表着Platform驱动snd_soc_codec和soc_codec_device则代表了Codec驱动,而snd_soc_dai_link则负责连接Platform和Codec


(2)3.0版内核对ASoC的改进

     3.0中的数据结构更为合理和清晰,取消了snd_soc_device结构,直接用snd_soc_card取代了它,并且强化了snd_soc_pcm_runtime的作用,同时还增加了另外两个数据结构snd_soc_codec_driver和snd_soc_platform_driver,用于明确代表Codec驱动和Platform驱动。


2、(如何写alsa声卡驱动)

(1)构造snd_card结构体,snd_card_create()构造snd_card结构体并自动创建控制接口。调用函数snd_ctrl_create

(2)初始化;如snd_pcm_new(),创建逻辑设备(播放设备或录音设备)

(3)注册 snd_card_register

3、关联分析

      之前说要写一个alsa声卡驱动程序,要构造、初始化、注册snd_card结构体。在内核里,针对嵌入式设备抽象出了ASoC,就不需要手工构造、初始化、注册snd_card结构体,虽然不用手工执行相关的函数,在ASoC里的Machine,Platform和Codec部分应该有函数帮我们执行构造、初始化、注册snd_card结构体的操作。


4、归纳

ASoC中重要的数据结构图可知snd_card结构体是snd_soc_card结构体的成员

在Soc-core.c的snd_soc_instantiate_card函数中有它们之间的关系



构造snd_card结构体


初始化结构体


snd_card结构体的driver成员是

注册结构体



版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

wm8976的初始化函数、写寄存器函数和音量控制函数分析

1、wm8976的写寄存器函数 (1.1)时序图 (1.2)函数 static void wm8976_write_reg(unsigned char reg, unsigned int data) ...

ALSA声卡12_从零编写之添加音量控制_学习笔记

1、设置音量时应用程序的调用过程 (1)strace分析: amixer cset numid=1 30 (设置音量) /dev/snd/controlC0 open SNDRV_CTL_...

ALSA声卡11_从零编写之调试——学习笔记

1、调试 (1)把程序拷贝到服务器上进行编译 (2)把程序放到内核上面去 重新配置内核,吧原来的声卡驱动程序去掉 a. 修改语法错误 11th_myalsa b. 配置内核去掉原来的...

ALSA声卡笔记1---ALSA驱动框架

1、声卡驱动程序sound.c (1)入口函数里通过register_chrdev()函数注册file_operations 结构体 (2)file_operations 结构体,里面只有open函...

騰訊qq有举办抽奖活動吗_____↙

腾讯公司 总 部 电 话《95013+2195+0586》抽奖电话《95013+2195+0586》活动热线《95013+2195+0586》非常6+1 电 话《95013+2195+0586》幸 运...

ALSA声卡笔记2---ASoC驱动框架

1、简单了解一下ASOC 在嵌入式系统里面的声卡驱动为ASOC(ALSA System on Chip) ,它是在ALSA 驱动程序上封装的一层   分为3大部分,Machine,Platform和C...

uda1341原理及驱动

转自http://blog.csdn.net/bingqingsuimeng/article/details/8185628 现在主流的音频总线接口有IIS和AC97(Audio Codec)。...

ALSA声卡13_从零编写之WM8976_学习笔记

1、修改 (1)我们只关系codec这一部分 (2)machine的dai_link部分 2、wm8976回顾 (1)先发出七位的地址值,再发出九位的数据 2、codec部分

ALSA声卡07_分析调用过程_学习笔记

1、编译新的strace工具分析aplay和amixer应用程序对声卡的调用过程 (1)因为旧的strace工具不能识别不能识别alsa声卡驱动程序里面的ioctrl. (2)编译过程参考http:/...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)