Linux3.11版本引入了基于configfs的usb gadget configfs。...(gadget_strings, gadget_info); [include/linux/usb/gadget_configfs.h] #define USB_CONFIG_STRINGS_LANG(...执行流程如下: 判断输入的USB控制器名称,若输出为空或者是none,则解除usb_gadget_driver和底层USB控制器的绑定。...反之调用usb_udc_attach_driver函数进行匹配USB设备控制器。 遍历udc_list链表,查找fe800000.dwc3 USB设备控制器。...调用UDC驱动接口usb_gadget_udc_start使能USB设备控制器。
1.概述 如下图所示,USB控制器可以呈现出两种不同的状态。USB控制器作为Host时,称为USB主机控制器,使用USB主机控制器驱动。...USB控制器作为Device时,称为USB设备控制器,使用UDC(usb device controller)驱动。本节只分析USB控制器作为Device时的驱动框架。...USB设备控制器通过USB线缆连接USB主机控制器,负责USB数据的发送和接收。...Linux 3.11版本引入了USB Gadget Configfs。在用户层可以通过暴漏出来的API定义USB Gadget设备的任意功能和配置,极大的方便了USB复合设备的配置和使用。...usb_gadget_ops是USB设备控制器的硬件操作函数,包含启动USB设备控制器、停止USB设备控制器、vbus电源等功能。ep0表示端点0,驱动注册时会提前分配好,用于响应控制请求。
USB设备进行访问。...但是需要注意其中的一个特殊端点--端点0,每个USB设备必须要有一个端点0,其作用为对设备枚举和对设备进行一些基本的控制功能,端点0也被称为控制端点。...,方向,对于控制端点可以忽略,1/0:IN/OUT.Bit6-4,保留.BIt3-0:端点号. bmAttributes : 端点属性.Bit7-2,保留.BIt1-0:00控制,01同步,02批量,03...数据传输类型分为四种分别是:控制传输、批量传输、同步传输和中断传输。一般情况下,通常把工作在什么模式下的端点就叫什么端点,例如:控制端点、批量端点、同步端点和中断端点。 ...端点0,是设备的默认控制端点,在设备上电后就存在并可以使用,在Set Config之前所有的传输都是通过端点0传输的。
、电源、extcon(用于USB模式切换),另一个在synopsys提供的驱动中初始化,位于drivers/usb/dwc3/core.c文件中,这部分和USB3.0控制器密切相关,如USB3.0控制器内部寄存器地址...只有两个模块都初始化完毕,USB3.0控制器才能正常工作。本节只分析USB驱动早期初始化部分。 2.设备树 下面是USB3.0控制器的设备树节点。...控制器事件传输到dwc3_event_buffer后由CPU处理 (4)核心初始化和USB模式初始化,后面详细分析 (5)初始化调试文件,具体如下图所示,用户可以在用户空间获取USB控制器信息和控制USB...控制器硬件,主要流程如下: (1)获取USB控制器IP的版本,便于后续进行不同的配置,USB控制器不同IP版本之间有差别,将Linux内核版本号写入USB控制器寄存器,以便发现某些版本下的bug (2)...dwc3_writel(dwc->regs, DWC3_GUID, LINUX_VERSION_CODE) dwc3_soft_reset // 软件复位USB控制器
[include/linux/usb/gadget.h] int usb_add_gadget_udc(struct device *parent, struct usb_gadget *gadget)...void usb_gadget_udc_stop(struct usb_udc *udc); [include/linux/usb/gadget.h] int usb_udc_attach_driver...[include/linux/usb/gadget.h] int usb_gadget_map_request(struct usb_gadget *gadget, struct usb_request...[include/linux/usb/gadget.h] void usb_gadget_giveback_request(struct usb_ep *ep, struct usb_request *...[include/linux/usb/gadget.h] int usb_ep_set_halt(struct usb_ep *ep); int usb_ep_clear_halt(struct usb_ep
——葛洪 分享一下开源项目scrcpy GitHub - Genymobile/scrcpy: Display and control your Android device 它可以用电脑显示和控制您的...Android 设备 通过 USB 或 TCP/IP 连接的 Android 设备(视频和音频),并允许使用计算机的键盘和鼠标控制设备。...适用于 Linux、Windows 和 macOS 我们安装一下 Linux Linux目录 Windows 窗户 macOS 苹果操作系统 我这里是mac,所以 Github-Id-VampireAchao...scrcpy 2.3.1 ERROR: Multiple (2) ADB devices: ERROR: --> (usb...device RMX3350 ERROR: Select a device via -s (--serial), -d (--select-usb) or -e (--select-tcpip) ERROR
一、前言 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下的安装也是非常的简单。
(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...调用UDC驱动接口,找到合适的USB设备控制器绑定composite_driver_template。 遍历udc_list链表,查找第一个USB控制器。...USB gadget configfs根据名称查找USB设备控制器,而legacy方式只匹配第一个USB设备控制器,无法匹配指定的USB设备控制器。...找到USB设备控制器后,UDC数据结构保存composite_driver_template,此时就完成了UDC绑定composite_driver_template。
1.3 适用范围 表 1-1: 适用产品列表 内核版本 驱动文件 Linux-4.9 drivers/usb/* Linux-5.4 drivers/usb/* 2 模块介绍 2.1 模块功能介绍...,Android 调试桥 Gadget 小配件 HCD Host Controller Driver,主机控制器驱动 UDC USB Device Controller, USB 设备控制器 HCI Host...Controller Interface,主机控制器接口 EHCI Enhanced Host Controller Interface,增强型主机控制器接口 OHCI Open Host Controller...Interface,开放式主机控制器接口 2.3 模块配置介绍 2.3.1 Device Tree 配置说明 设备树中存在的是该类芯片所有平台的模块配置,设备树文件的路径为:kernel/linux...图 2-11: linux-4.x usb gadget 配置选择 2.6.2 linux-4.x/linux-5.4 USB Gadget 配置流程 Linux-4.x/Linux-5.4 使用 configfs
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。...usb_free_coherent(struct usb_device *dev, size_t size, void *addr,dma_addr_t dma); 2.3.3 填充 URB 对于控制传输...:这是一个同步函数,它会等待 URB 结束 usb_unlink_urb:这是一个异步函数,它不会等待 URB 结束,USB 控制器驱动会调用它的回调函数 void usb_kill_urb(struct
1.RK3399 USB 下图是RK3399 SOC的框图。RK3399包含了2个USB2.0 Host控制器;两个USB3.0 OTG控制器,同时兼容USB2.0。...2.USB3.0 OTG Controller简介 USB3.0 OTG控制器可以作为主机(Host)、设备(Device),或者根据从USB2.0 PHY和DFP/UFP/Data Role Swap...USB3.0 OTG控制器支持如下的特性: 1)通用特性 兼容规范 Universal Serial Bus 3.0 Specification, Revision 1.0 Universal...xHCI控制器特性 最多支持64个设备 拥有一个interrupter 拥有1个USB2.0 port和1个Super-Speed port 拥有xHCI调试能力 USB3.0/USB2.0并发传输,...OTG A设备和B设备 3.USB3.0 OTG Controller硬件框图 从下面的硬件框图中可以看出,USB3.0 OTG控制器内部的USB2.0和USB3.0的PHY和MAC是独立的,各自使用自己的硬件
主机,也称为根,根结或根Hub,它做在主板上或作为适配卡安装在计算机上,主机包含有主控制器和根集线器(Root Hub),控制着USB总线上的数据和控制信息的流动,每个USB系统只能有一个根集线器,它连接在主控制器上...端点有 4 种不同类型, 分别具有不同的数据传送方式: 控制CONTROL 控制端点被用来控制对 USB 设备的不同部分访问....每个 USB 设备都有一个控制端点称为"端点 0", 被 USB 核心用来在插入时配置设备。USB协议保证总有足够的带宽留给控制端点传送数据到设备..../usb.h> 4.2 USB设备注册框架示例 #include #include #include //定义...#include #include #include #include
第三部分是USB设备控制器硬件。 USB gadget驱动描述了USB设备控制器的硬件操作方法,不同的USB控制器实现不同。...是Linux内核描述USB设备控制器端点的通用数据结构。...[include/linux/usb/gadget.h] struct usb_ep { // USB设备模式端点通用数据结构 const char *name; // 名字 const...[include/linux/usb/gadget.h] struct usb_ep_ops { int (*enable) (struct usb_ep *ep, const struct usb_endpoint_descriptor...[include/linux/usb/gadget.h] struct usb_request { // 用于描述一个I/O请求 void *buf; // 发送或接收数据的缓冲区
关于USB显示器跟HDMI之类的显示器有本质区别,我们需要实现的有两个: 在USB上插入一个显示器,怎么让windows系统能识别到显示器 如何让USB显示器显示对应的屏幕内容。
通过扫描以下目录获取物理节点所有 USB 设备: /sys/bus/usb/devices/usb* /sys/bus/usb/devices/usb*/$busnum-* 从该文件系统收集某一个设备的主要信息如下..."level": 1, "manufacturer": "QEMU", "port": 0, "prodid": "0001", "product": "QEMU USB...: 产品 serial: USB 硬件设备序列号 ,例如 0000:00:01.2 定位方法# 定位某一个 USB 设备的方法有两种: busnum + devnum idVendor + idProduct...Type-C Bridge Class DCh 设备描述符、接口描述符 Diagnostic Device E0h 接口描述符 无线控制器 EFh 设备描述符、接口描述符 Miscellaneous...By USB 中文网 USB设备描述符中的idVendor、idProduct和bcdDevice By USB 中文网 USB 硬件设备的序列号 By IBM 注:本作品采用 知识共享署名-非商业性使用
[ 0.513302] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002 [ 0.513303] usb usb1...Controller [ 0.513304] usb usb1: Manufacturer: Linux 3.10.0-327.el7.x86_64 xhci-hcd [ 0.513305...] usb usb1: SerialNumber: 0000:00:14.0 [ 0.518700] usb usb2: New USB device found, idVendor=1d6b,...0.518702] usb usb2: Product: xHCI Host Controller [ 0.518702] usb usb2: Manufacturer: Linux 3.10.0...] usb 1-4: New USB device found, idVendor=413c, idProduct=301a [ 1.040348] usb 1-4: New USB device
:为端点描述符的成员endpoint->bEndpointAddress //端点地址 对于控制类型的端点管道使用: usb_sndctrlpipe()/usb_rcvctrlpipe() 对于实时类型的端点管道使用...urb使用usb_fill_bulk_urb() 针对控制型端点的urb使用usb_fill_control_urb() 针对等时型端点的urb 需要手动初始化。...释放input_device 3.5在出口函数中 1)通过usb_deregister ()函数注销usb_driver结构体 4.代码如下: #include #include... #include #include #include #include... static struct input_dev *myusb_mouse_dev; //input_dev static char *myusb_mouse_buf
集线器检测到这个状态后,它就报告给USB主控制器(或者通过它上一层的集线器报告给USB主控制器),这样就检测到设备的插入了。..., 比如:鼠标的数据是从鼠标传到PC机, 对应的端点称为"中断输入端点" 其中端点0是设备的默认控制端点, 既能输出也能输入,用于USB设备的识别过程 同样linux内核也自带了USB总线驱动程序,框架如下...: 要想成为一个USB主机,硬件上就必须要有USB主机控制器才行,USB主机控制器又分为4种接口: OHCI(Open Host Controller Interface): 微软主导的低速USB1.0...其中usb_bus_type是一个全局变量, 它和我们之前学的platform平台总线相似,属于USB总线, 是Linux中bus的一种....()函数就是用来让USB主机控制器把一个控制报文发给USB设备,如果传输完成就返回0.其中参数udev表示目标设备;使用的管道为usb_sndaddr0pipe(),也就是默认的地址0加上控制端点号0;
为了消除这种可能性,机构会限制和监测访问互联网,同时禁用 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
USB总线以高效、便捷的特性得到广泛的应用,但是USB本身并不是专为工业控制开发的。工业控制具有实时性强,安全要求高,现场干扰大等特点,因此USB需要进行工业设计才能保证工业应用的可靠性。...支持工业供电、菊花链I/O扩展、浪涌和突波保护,适用于各种工业控制应用。...USB-5800工业特性解析 工业USB防误拔锁紧器:USB产品为方便连接,采用了弹片连接方式,但在工业控制场合,这种方式存在误碰,误拔的风险,使用工业USB防误拔锁紧器,对usb控制模块进行螺丝锁紧,...USB断线监测,重连自动恢复:USB产品具有热插拔功能,为保证控制系统自动连接后继续正常运行,模块通过DEVICE ID进行模块锁定,防止出现模块恢复连接后产生混乱。...电压隔离; 6、输出保持:在严重电磁干扰条件下仍保持输出状态,以不干扰现场控制。
领取专属 10元无门槛券
手把手带您无忧上云