首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

USB总线-Linux内核USB3.0设备控制器复合设备之legacy方式分析(八)

2.音频复合设备驱动 从前面的分析中可以看出,复合设备驱动围绕usb_composite_driver和usb_composite_dev两个数据结构展开,legacy方式的复合设备驱动也不例外。...(audio_driver); // 注册audio_driver [include/linux/usb/composite.h] #define module_usb_composite_driver...[include/linux/device.h] #define module_driver(__driver, __register, __unregister, ...) \ static int...USB gadget configfs根据名称查找USB设备控制器,而legacy方式只匹配第一个USB设备控制器,无法匹配指定的USB设备控制器。...若要使用音频设备,则只能通过g_audio驱动构造复合设备,若使用USB虚拟网卡,则只能通过g_ether驱动构造复合设备,若需要多个功能的USB设备,则需要重新构造复合设备,编码定义usb_composite_driver

3.7K40
您找到你想要的搜索结果了吗?
是的
没有找到

19.Linux-USB总线驱动分析

是因为windows自带了USB总线驱动程序, USB总线驱动程序负责: 识别USB设备,给USB设备找到对应的驱动程序 新接入的USB设备的默认地址(编号)是0,在未分配新编号前,PC主机使用0地址和它通信...然后USB总线驱动程序都会给它分配一个地址(编号) PC机想访问USB总线上某个USB设备时,发出的命令都含有对应的地址(编号) USB是一种主从结构。..., 比如:鼠标的数据是从鼠标传到PC机, 对应的端点称为"中断输入端点" 其中端点0是设备的默认控制端点, 既能输出也能输入,用于USB设备的识别过程 同样linux内核也自带了USB总线驱动程序,框架如下...其中usb_bus_type是一个全局变量, 它和我们之前学的platform平台总线相似,属于USB总线, 是Linux中bus的一种....如下图所示,每当创建一个USB设备,或者USB设备驱动时,USB总线都会调用match成员来匹配一次,使USB设备USB设备驱动联系起来.

8.5K91

USB总线-USB协议简介(一)

USB总线出现之前,计算机与键盘、鼠标、扫描仪、打印机都使用专用的接口连接,不同设备的接口不能互用,扩展性很差,每次插拔设备都要关闭计算机,不支持热插拔,且通信速率很低。...为了解决上述问题,USB总线诞生了。USB总线就好像一条管道,管道里流过的东西只要符合USB协议,至于具体流的是什么东西,USB总线并不关心,可以是自来水,可以是污水,可以是天然气,也可以是石油。...3.USB总线特点 3.1.主从模式 USB是主从模式的总线,主机称为Host,从机(也称为设备)称为Device。从机与从机之间、主机与主机之间(不包括USB4.0),不能互联。...USB OTG线中增加了一根USB ID线,当USB ID线上拉时,处于从机(设备)模式,当USB ID线接地时,处于主机模式。 3.2.总线结构 如下图所示,USB总线呈现出树状的拓扑结构。...如果总线上的带宽不足以发送整个批量包,则将数据拆分为多个包传输。批量传输数据可靠,但实时性较低。如USB硬盘、打印机等设备就采用的是批量传输方式。

5.2K30

Linux USB 设备基础理论

通过扫描以下目录获取物理节点所有 USB 设备: /sys/bus/usb/devices/usb* /sys/bus/usb/devices/usb*/$busnum-* 从该文件系统收集某一个设备的主要信息如下...Tablet", "speed": "12", "usbpath": "1", "vendid": "0627" } 文件含义# 目录下部分文件含义如下: busnum: 总线号...devnum: 设备号(该总线的第几台设备) speed: 速率 bDeviceClass: 设备类型 idVendor: 设备的生产商ID,由USB设备生产商向USB-IF官方来统一管理和申请 idProduct...参考文献# USB设备类bDeviceClass、bDeviceSubClass、bDeviceProtocol By USB 中文网 USB设备描述符中的idVendor、idProduct和bcdDevice...By USB 中文网 USB 硬件设备的序列号 By IBM 注:本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。

29030

Linux 总线设备、驱动模型的探究

没错,Linux 内核里就是运用了这种设计思想去对设备和驱动进行适配隔离的,只不过在内核里我们不叫做适配层,而取名为总线,意为通过这个总线去把驱动和对应的设备绑定一起,如图: ?...基于这种设计思想,Linux设备驱动分为了总线设备和驱动三个实体,这三个实体在内核里的职责分别如下: ?...看到这里,可能有些喜欢探究本质的读者又要问了,设备总线注册了板级信息,驱动也向总线注册了驱动模块,但总线是怎么做到驱动和设备匹配的呢?接下来就讲下设备和驱动是怎么通过总线进行“联姻”的。...最底层是不同板子的板级文件代码,中间层是内核的总线,最上层是对应的驱动,现在描述板级的代码已经和驱动解耦了,这也是 Linux 设备驱动模型最早的实现机制,但随着时代的发展,就像是人类的贪婪促进了社会的进步一样...完美的 Linux 怎么会允许这样的事情存在,于是乎,设备树(DTS)就登向了历史舞台,下一篇内容将探讨设备树的实现原理和用法。 【部分内容整理于宋宝华老师课程】

6.4K41

Linux 上如何禁用 USB 存储设备

为了消除这种可能性,机构会限制和监测访问互联网,同时禁用 USB 存储设备。 在本教程中,我们将讨论三种不同的方法来禁用 Linux 机器上的 USB 存储设备。...方法 2:删除 USB 驱动 这种方法要求我们将 USB 存储的驱动程序(usb_storage.ko)删掉或者移走,从而达到无法再访问 USB 存储设备的目的。...方法 3:将 USB 存储器纳入黑名单 我们也可以通过 /etc/modprobe.d/blacklist.conf 文件将 usb-storage 纳入黑名单。...usb-storage 保存文件并退出。...usb-storage 就在就会被系统阻止加载,但这种方法有一个很大的缺点,即任何特权用户都可以通过执行以下命令来加载 usb-storage 模块, $ sudo modprobe usb-storage

9.7K10

Linux内核平台总线设备驱动模型浅析

复习总线设备驱动模型,做了一点小笔记,大牛略过。 一、Linux系统的驱动框架的基础很大一部分是围绕着总线设备驱动模型展开的。...  *bus;        // 该设备挂接在哪条总线上    struct device_driver*driver; //该设备所对应的驱动    void   *platform_data;    ... }; 任何建立在平台总线设备驱动模型基础上的驱动代码(如平台驱动,PCI驱动,USB驱动,I2C驱动,SPI驱动等),它们的设备结构体(如platform_device, pci_dev,usb_device...device *dev) {    device_initialize(dev);  //做各类初始化    //将设备挂接在对应的总线上,主要工作把设备(device)添加到总线       (bus_type...struct driver_private *p;  }; 同理,任何建立在平台总线设备驱动模型基础上的驱动代码(如平台驱动,PCI驱动,USB驱动,I2C驱动,SPI驱动等),它们的驱动结构体(如platform_driver

1.9K30

USB设备状态

USB设备插上主机时,主机就通过一系列的动作来对设备进行枚举配置(配置是属于枚举的一个态,态表示暂时的状态),这些态如下: 1、接入态(Attached):设备接入主机后,主机通过检测信号线上的电平变化来发现设备的接入...; 2、供电态(Powered):就是给设备供电,分为设备接入时的默认供电值,配置阶段后的供电值(按数据中要求的最大值,可通过编程设置); 3、缺省态(Default):USB在被配置之前,通过缺省地址...0与主机进行通信; 4、地址态(Address):经过了配置,USB设备被复位后,就可以按主机分配给它的唯一地址来与主机通信,这种状态就是地址态; 5、配置态(Configured):通过各种标准的USB...请求命令来获取设备的各种信息,并对设备的某此信息进行改变或设置; 6、挂起态(Suspended):USB总线处于空闲状态的话,该设备就要自动进入挂起状态,在进入挂起状态后,总的电流功耗不超过280UA...是 是 __ __ __ __ __ __ 是 设备在至少3毫秒以内探测不到总线活动,自动进如挂起.设备功能不可用. 下图为设备状态转化图:

1.6K20

USB总线-Linux内核USB3.0控制器初始化代码分析(三)

只有两个模块都初始化完毕,USB3.0控制器才能正常工作。本节只分析USB驱动早期初始化部分。 2.设备树 下面是USB3.0控制器的设备树节点。...gadget; // USB控制器处于设备模式时使用的数据结构 struct usb_gadget_driver *gadget_driver; // 设备模式时使用的驱动,由具体匹配的设备决定...usb作为设备模式时的数据结构是usb_gadget和gadget_driver;usb_gadget内部包含了usb_udc和usb_gadget_ops数据结构,usb_gadget_ops是usb...控制器硬件,主要流程如下: (1)获取USB控制器IP的版本,便于后续进行不同的配置,USB控制器不同IP版本之间有差别,将Linux内核版本号写入USB控制器寄存器,以便发现某些版本下的bug (2)...dwc3_writel(dwc->regs, DWC3_GUID, LINUX_VERSION_CODE) dwc3_soft_reset // 软件复位USB控制器

5.9K30

arm linux利用alsa驱动并使用usb音频设备

一.背景: arm linux的内核版本是3.13.0 二.准备工作 添加alsa驱动到内核中,也就是在编译内核的时候加入以下选项: ?...接下来就重新编译内核即可 三.交叉编译alsa-lib和alsa-utils (alsa-utils是一系列的音频设备控制工具,而alsa-lib是alsa-utils依赖的库,所以先将alsa-lib...设置录音时的音量大小 amixer cset numid=8,iface=MIXER,name='Mic Volume' 255 六:注意事项: 如果将编译好的alsa-utils中的工具复制到fat32格式的存储设备的时候...,注意fat32是不支持软链接的,此时需要直接复制一个aplay并将名称改为arecord: cp aplay arecord 总结 以上所述是小编给大家介绍的arm linux利用alsa驱动并使用...usb音频设备 ,希望对大家有所帮助!

6K31

linux usb端点

一系列相互独立的端点在一起构成了USB逻辑设备,在系统结构中,位于下方红色方框内: 二、端点的分类 每个USB设备都有一个唯一的设备地址,设备地址是设备连接上主机时由主机分配的,主机主要依靠这个设备地址对...USB设备进行访问。...但是需要注意其中的一个特殊端点--端点0,每个USB设备必须要有一个端点0,其作用为对设备枚举和对设备进行一些基本的控制功能,端点0也被称为控制端点。...一个端点具有以下一些特性: 端点的总线访问频率要求 端点的总线延迟要求 端点的带宽要求 端点的端点号 对错误处理的要求 端点能接收或发送的包的最大长度 端点的传送类型 端点与主机的数据传送方向 四、端点描述符...五、端点与管道 1、管道的概念 管道是主机软件(数据缓存区),和USB设备各各端点之间的数据传输连接,他是两者之间通信流的抽象(实际上数据传输是USB总线接口完成)。

9.8K30
领券