
usb声卡驱动
文章平均质量分 90
安仔都有人用
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
usb声卡驱动(一):USB描述符
usb声卡驱动(一)前面看了内核的启动,接下来就是驱动的学习。正好手边有一个USB声卡,就准备以此为基础,进行usb声卡驱动的学习。因此,在学些usb声卡之前,先看看usb驱动。然后再是alsa驱动,然后再是两者的结合usb的关键数据结构任何usb设备,都有一段数据,用来描述自己。比如自己有什么功能,自己的厂商ID是多少等等有个组织,定义了这段数据的组织形式和意义,这段数据称为USB描述符。这个组织叫USB-IF(USB Implementers Forum)USB描述符的组织形式usb描述原创 2021-01-14 15:22:12 · 5230 阅读 · 4 评论 -
Usb Midi Class
这部分内容在《USB声卡驱动(二)USB音频设备描述符》中有过详细介绍,此处在简单介绍一下:一个usb 音频设备,含有多个功能(audio function)。其中之一就是,midi 功能。在midi 功能中,包含有一个或多个的jack口。这个jack口是一个抽象概念。usb midi 设备的功能之一,就是将usb的端点和这些jack口连接在一起。举个例子,你往usb的某个端点发送数据,就相当于往某个jack口发送数据。原创 2023-05-15 14:35:28 · 1134 阅读 · 0 评论 -
usb声卡驱动(八):start,stop操作
usb声卡驱动(八)上一遍是关于prepare需要做的事情。现在记录声卡驱动面对,start,stop的操作。当应用调用上述操作时,传递到本驱动的是trigger函数的第二个参数。如下:static int snd_usb_substream_playback_trigger(struct snd_pcm_substream *substream, int cmd){ struct snd_usb_substream *subs = substream->runtim原创 2021-01-14 18:09:41 · 1482 阅读 · 2 评论 -
usb声卡驱动(七):prepare和端点管理
usb声卡驱动(七)前面记录了pcm的打开关闭,还有硬件参数和软件参数的设置现在就可以进行播放了。在播放之前,需要通过ioctl,传递SNDRV_PCM_IOCTL_PREPARE来调用prepare,alsa内部的prepare的逻辑实现,不做过多的探究。当应用传递命令SNDRV_PCM_IOCTL_PREPARE时,usb声卡驱动,将会调用pcm的prepare回调。见《usb声卡驱动(四)》prepare在前面的介绍中,open,hw_params回调已经将部分设置,初始化好了。剩下的就交给原创 2021-01-14 17:33:45 · 1825 阅读 · 0 评论 -
usb声卡驱动(六):usb声卡中的pcm打开和关闭
usb声卡驱动(六)前面记录了usb声卡驱动的注册过程。下面,查看usb声卡里面pcm的打开和关闭,都做了什么工作。一点基础前提因为本系列文章的核心是,usb声卡驱动。所以并不会深入到alsa内部的细节。但是在进行pcm的打开和关闭之前。需要知道一些alsa内部的一些东西。在《usb声卡驱动(四)》和《usb声卡驱动(五)》中提到了一个函数:int snd_card_register(struct snd_card * card);该函数,需要知道如下的一个简单逻辑。它遍历所有的comp原创 2021-01-14 16:37:17 · 3685 阅读 · 1 评论 -
usb声卡驱动(五):声卡驱动的开始
usb声卡驱动(五)我手上,刚好有高通msm8996的android 8.1源码。那么就直接进入它的kernel分析。usb声卡驱动的源码位于sound/usb下面。查看对应的Makefile文件。可知相应的源码c文件。总共就那么几个文件,慢慢看来。现在将部分makefile文件摘录如下:snd-usb-audio-objs := card.o \ clock.o \ endpoint.o \ format.o \ helper.o \ mixer.o \ mi原创 2021-01-14 16:26:43 · 4482 阅读 · 0 评论 -
USB声卡驱动(四):alsa概述
USB声卡驱动(四)前面记录了usb相关的东西。现在记录一下alsa相关的东西。将Audio Function 放在一个硬件电路板里面,将这个电路板称为一个声卡。通过各种各样的接口(可能是非usb接口),连接到需要这个Audio Function的设备上。所以在alsa的世界里,将一个Audio Function抽象成一个card对象。Audio Function里面的各种Unit和Terminal,抽象成Device对象也称为Component对象。因此,在alsa的世界里,就是创建各种card原创 2021-01-14 16:16:13 · 3699 阅读 · 0 评论 -
usb声卡驱动(三):内核对usb操作的支持
usb声卡驱动前面的笔记,介绍了,USB。接下来,就是,看看linux内核中,如何操作usb在linux内核中,加入了USB core。大部分的工作都已经放入了这个USB core中,我们现在只需要知道,怎么跟USB core进行互动即可。USB core互动的关键数据结构是urb(USB 请求块)它的生命周期,概述如下:由usb设备驱动程序创建分配给一个特定usb设备的特定端点由usb设备驱动程序,递交给USB core由usb核心递交到特定设备的特定usb主控制器驱动程序usb主控制原创 2021-01-14 15:42:30 · 1491 阅读 · 0 评论 -
USB声卡驱动(二):USB音频设备描述符
USB声卡驱动(二)USB音频设备描述符本篇笔记,分两部分,第一部分,是基本知识的记录。第二部分是一个实际的例子。一.基本知识一个音频设备(Audio Device)含有多个音频功能(Audio Function),而音频功能(Audio Function)内部还有各种各样的模块(Unit)和输入输出终端(Terminal)。这些模块(Unit)提供各种各样的功能,比如静音控制,音量调整等等。输入输出终端(Terminal)用于传输数据流,比如原始的PCM数据,或者经过AC-3编码的数据,或者MIDI原创 2021-01-14 15:32:38 · 8067 阅读 · 1 评论