首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

Linux USB 设备驱动模型

Linux 内核源码:include\linux\usb.h Linux 内核源码:drivers\hid\usbhid\usbmouse.c 1....BUS/DEV/DRV 模型 "USB 接口"是逻辑上的 USB 设备,编写的 usb_driver 驱动程序,支持的是"USB 接口": USB 控制器或 Hub 识别出 USB 设备后,会创建、...接口函数 在 USB 设备驱动程序中,能使用的 USB 函数都在这个头文件里:include\linux\usb.h。...2.1 pipe 使用这些接口函数的主要目的是传输数据,传输数据的对象是 USB 设备里的某个 endpoint,这被称为 pipe: /* Create various pipes... */ #define...:这是一个同步函数,它会等待 URB 结束 usb_unlink_urb:这是一个异步函数,它不会等待 URB 结束,USB 控制器驱动会调用它的回调函数 void usb_kill_urb(struct

40540

USB总线-Linux内核USB3.0设备控制器驱动框架分析(四)

USB控制器作为Device时,称为USB设备控制器,使用UDC(usb device controller)驱动。本节只分析USB控制器作为Device时的驱动框架。...USB设备控制器通过USB线缆连接USB主机控制器,负责USB数据的发送和接收。...alloc_func创建usb_function并初始化,重点是设置里面的回调函数,通常情况,不直接使用usb_function数据结构,而是嵌入到驱动的数据结构中使用。...Linux 3.11版本引入了USB Gadget Configfs。在用户层可以通过暴漏出来的API定义USB Gadget设备的任意功能和配置,极大的方便了USB复合设备的配置和使用。...usb_gadget_ops是USB设备控制器的硬件操作函数,包含启动USB设备控制器、停止USB设备控制器、vbus电源等功能。ep0表示端点0,驱动注册时会提前分配好,用于响应控制请求。

9.4K20

USB总线-Linux内核USB3.0设备控制器之UDC驱动分析(六)

USB Function驱动通过调用这些接口匹配及访问USB设备控制器,而底层USB控制器驱动要实现这些接口定义的功能。下面分析一主要的UDC驱动接口调用流程。 2....NYET(not yet) 只有高速设备才会发送NYET。高速批量和控制传输都支持一种协议,它使主机在有设备可接收数据的情况,能够在发送数据之前找到此设备。...在低速或全速状态,主机若想在控制、批量或中断传翰中发送数据,它将首先发送令牌和数据信息包,并接收设备在事务的联络包中所作出的回复。若设备还没准备好接收数据,会返回NAK,主机会在稍候重新尝试。...如果数据信息包很大且设备总是没有准备好,不断重新尝试可能会浪费很多总线时间。这种情况,使用带有多个数据信息包的高速批量和控制传输将是更好的途径。...无响应 另一种状态指示类型发生在主机或设备期望接收联络但却没有收到任何信息的情况。接收端的错误检查发现错误时,就会产生这种响应缺失。

8.5K20

Linux USB 设备基础理论

通过扫描以下目录获取物理节点所有 USB 设备: /sys/bus/usb/devices/usb* /sys/bus/usb/devices/usb*/$busnum-* 从该文件系统收集某一个设备的主要信息如下...(该总线的第几台设备) speed: 速率 bDeviceClass: 设备类型 idVendor: 设备的生产商ID,由USB设备生产商向USB-IF官方来统一管理和申请 idProduct: 该生产商生产的产品编号...,同一厂商的不同idProduct代表着该公司不同的产品系列 product: 制造商 manufacturer: 产品 serial: USB 硬件设备序列号 ,例如 0000:00:01.2 定位方法...E0h 接口描述符 无线控制器 EFh 设备描述符、接口描述符 Miscellaneous FEh 接口描述符 Application Specific FFh 设备描述符、接口描述符 厂商用自定义...参考文献# USB设备类bDeviceClass、bDeviceSubClass、bDeviceProtocol By USB 中文网 USB设备描述符中的idVendor、idProduct和bcdDevice

29030

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使用libuvc读取控制USB免驱摄像头

一、前言 libuvc是一个开源的库,用于在Linux和其他操作系统上与USB视频设备进行交互。提供了一组函数和接口,使开发人员可以轻松地访问和控制USB摄像头。...libuvc库实现了对UVC(USB Video Class)设备的支持。UVC是一个标准的USB设备类别,用于视频流传输和摄像头控制。...通过使用libuvc库,开发人员可以从USB摄像头中获取视频流数据,并对摄像头的设置和属性进行控制,例如分辨率、帧速率、曝光等。...libuvc库提供了针对各种常见操作系统的API,包括Linux、Windows、macOS、Android等。使用USB协议与摄像头通信,并处理底层协议细节,简化了开发人员的工作。...libuvc仓库地址在这里:https://github.com/libuvc/libuvc 在Linux的安装也是非常的简单。

96820

USB设备状态

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

1.6K20

USB设备如何应用于工业控制系统?

USB总线以高效、便捷的特性得到广泛的应用,但是USB本身并不是专为工业控制开发的。工业控制具有实时性强,安全要求高,现场干扰大等特点,因此USB需要进行工业设计才能保证工业应用的可靠性。...USB-5800工业特性解析 工业USB防误拔锁紧器:USB产品为方便连接,采用了弹片连接方式,但在工业控制场合,这种方式存在误碰,误拔的风险,使用工业USB防误拔锁紧器,对usb控制模块进行螺丝锁紧,...内置看门狗:工业现场有时会出现不可预知的强烈干扰,可能会造成USB设备的软件的短暂死机。...普通USB设备(如USB DISK)会要求使用者重新插拔设备来解决,但在工业场合很多是无人值守的 GRADE 3浪涌和突波保护 5、2500V隔离:通道与USB、菊花链(HUB)与USB之间2500VDC...电压隔离; 6、输出保持:在严重电磁干扰条件仍保持输出状态,以不干扰现场控制

73820

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

一.背景: arm linux的内核版本是3.13.0 二.准备工作 添加alsa驱动到内核中,也就是在编译内核的时候加入以下选项: ?...接下来就重新编译内核即可 三.交叉编译alsa-lib和alsa-utils (alsa-utils是一系列的音频设备控制工具,而alsa-lib是alsa-utils依赖的库,所以先将alsa-lib...alsa-utils中的工具进行各类操作 5.1录音: arecord -D “plughw:0,0” demo.wmv 5.2播放: aplay -D “plughw:0,0” demo.wmv 5.3获取控制信息...,注意fat32是不支持软链接的,此时需要直接复制一个aplay并将名称改为arecord: cp aplay arecord 总结 以上所述是小编给大家介绍的arm linux利用alsa驱动并使用...usb音频设备 ,希望对大家有所帮助!

6K31

linux usb端点

一系列相互独立的端点在一起构成了USB逻辑设备,在系统结构中,位于下方红色方框内: 二、端点的分类 每个USB设备都有一个唯一的设备地址,设备地址是设备连接上主机时由主机分配的,主机主要依靠这个设备地址对...USB设备进行访问。...但是需要注意其中的一个特殊端点--端点0,每个USB设备必须要有一个端点0,其作用为对设备枚举和对设备进行一些基本的控制功能,端点0也被称为控制端点。...六、端点的传输类型 一个具体的端点只能属于四个传输模式中的一种。数据传输类型分为四种分别是:控制传输、批量传输、同步传输和中断传输。...一般情况,通常把工作在什么模式的端点就叫什么端点,例如:控制端点、批量端点、同步端点和中断端点。

9.8K30

基于FPGA的USB接口控制器设计(VHDL)(

而有些USB设备是需要特殊驱动的,比如某些手机,连接到电脑的USB口,是需要安装驱动才能使用的。下面我们一起动手做一做USB接口控制器设计,了解一如何设计。...USB 包定义了 USB 协议以及 USB 设备相关的数据类型、常量等内容,比如自定义数据类型、设备类型代码值、请求代码值、设备描述符、设备的工作状态机等。...设备收发器模块的示意图如图 40 所示。 ? 图 40 设备收发器模块的示意图 由于 USB 协议很复杂并且 PDIUSBD12 的控制也比较复杂,所以设备收发器状态机的状态量会较多。...之后,它将判断设备请求的有效性,如果是一个有效的请求,设备收发器必须向控制输出端点发送应答建立命令以重新使能下一个建立阶段。 接下来,设备收发器需要证实控制传输是控制读还是写。...7.2 USB 软件编写 最后,再简要介绍一 USB 软件的编写,即软件对 USB 设备访问的实现方法。

1.4K20

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

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

5.9K30

C# 获得设备usb信息

本文告诉大家如何获得设备usb来进行判断是否有哪些usb和找不到usb可能是什么。...需要在项目右击引用,点击程序集,搜索 System.Management 然后安装他 然后使用下面的代码就可以获得设备usb 请看代码 static List<(string DeviceID...} collection.Dispose(); return devices; } 如果需要判断是否存在某个 usb...,就通过 pid vid 判断,判断的方法是拿PNPDeviceID字符串比较 参见:c# 获取移动硬盘信息、监听移动设备的弹出与插入事件 - Chris Cheung - 博客园 如果发现找不到 usb...,可能是在开机的时候进行找usb,一般需要开机之后很久才会把所有的设备添加,所以如果找不到,就看开机的时间,如果太短,那么可能是因为程序太快去查。

2K30
领券