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成员是

注册结构体



alsa架构分析

声明:本博内容转载自 http://blog.csdn.net/droidphone 一.  概述     ALSA是Advanced Linux Sound Architecture 的缩...
  • poltroon
  • poltroon
  • 2012年09月14日 11:18
  • 10115

alsa驱动的函数调用过程

http://www.cnblogs.com/linucos/archive/2013/04/08/3007226.html alsa驱动分析(1) 0.       AL...

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

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

《The C programming language》笔记3_重要的结构体

C语言结构体,可谓是C强大功能之一,也是C++语言之所以能衍生的有利条件,事实上,当结构体中成员中有函数指针了后,那么,结构体也即C++中的类了。 C语言中,结构体的声明、定义是用到关键字struc...

[3]ARM-Linux S5PV210 UART驱动----串口核心层、关键结构体、接口关系

尽管一个特定的UART设备驱动完全可以按照tty驱动的设计方法来设计,即定义tty_driver并实现tty_operations其中的成员函数,但是Linux已经在文件serial_core.c中实...

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

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

linux驱动三大数据结构关系图

  • 2014年05月28日 11:55
  • 377KB
  • 下载

Linux ALSA 声卡驱动之八:ASoc中的Platform

1.  Platform驱动在ASoC中的作用 前面几章内容已经说过,ASoC被分为Machine,Platform和Codec三大部件,Platform驱动的主要作用是完成音频数据的管理,最终通过...

Linux ALSA声卡驱动之八:ASoC架构中的Platform

1.  Platform驱动在ASoC中的作用 前面几章内容已经说过,ASoC被分为Machine,Platform和Codec三大部件,Platform驱动的主要作用是完成音频数据的管理,最终通过...

Linux ALSA声卡驱动之六:ASoC架构中的Machine

前面一节的内容我们提到,ASoC被分为Machine、Platform和Codec三大部分,其中的Machine驱动负责Platform和Codec之间的耦合以及部分和设备或板子特定的代码,再次引用上...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ALSA声卡笔记3--ASoC驱动重要结构体关系图
举报原因:
原因补充:

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