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设备控制器。
USB Battery Charging V1.2 Specification 定义了USB充电器的类型或者叫做充电源。 1....支持的充电器类型 1.1 Standard Downstream Port(SDP) 这种USB端口存在于主机PC中,这个是与USB的规格书一致的。...USB数据线没有短接并且是悬空的。...基于外部充电芯片的充电器检测(SMB充电器检测) 内部的USB PHY充电器检测逻辑 基于USB PHY的充电子系统有以下一些基本模块: USB core负责让OTG driver知道充电器的连接。...高通平台的电池充电是被PMIC或者外部的充电芯片所控制。它必须知到充电器类型和最大充电电流。 原生的电池驱动直接与PMIC进行交互。
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,驱动注册时会提前分配好,用于响应控制请求。
理论上地平线的旭日X3派同样适用(未测试,文末提供方案) 功能:通过TCP通讯实现远程控制继电器通断,进而控制机器人本体的电器等开关 ---- 继电器模块 继电器直接在淘宝上随便找的树莓派适用的...+ " " + data_data) if data_cmd == '0088': # 继电器 print('-----风机控制...+ " " + data_data) if data_cmd == '0088': # 继电器 print('-----风机控制
USB设备进行访问。...但是需要注意其中的一个特殊端点--端点0,每个USB设备必须要有一个端点0,其作用为对设备枚举和对设备进行一些基本的控制功能,端点0也被称为控制端点。...,方向,对于控制端点可以忽略,1/0:IN/OUT.Bit6-4,保留.BIt3-0:端点号. bmAttributes : 端点属性.Bit7-2,保留.BIt1-0:00控制,01同步,02批量,03...中断. wMaxPacketSize : 本端点接收或发送的最大信息包大小. bInterval : 轮训数据传送端点的时间间隔.对于批量传送和控制传送的端点忽略.对于同步传送的端点,必须为1,对于中断传送的端点...数据传输类型分为四种分别是:控制传输、批量传输、同步传输和中断传输。一般情况下,通常把工作在什么模式下的端点就叫什么端点,例如:控制端点、批量端点、同步端点和中断端点。
——葛洪 分享一下开源项目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
[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
、电源、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控制器
可以和FPGA搭配使用的USB3.0 PHY芯片 通过之前的介绍,我们大致了解到USB3.0整个协议异常复杂,就连物理层都需要SerDes(FPGA实现的情况...要实现USB通信大致需要两部分:Controller和PHY两部分,Controller大多为数字逻辑实现(逻辑控制主要分为:MAC、CSR以及FIFO,MAC部分主要按照USB协议进行数据的打包和分解...Controller部分主要实现USB的协议和控制。也是目前普通FPGA可以实现的,整个作用类似网络中的MAC层。...举例如下:我用FPGA实现USB2.0通信,我使用逻辑实现cntroller+外挂USB PHY的方式,那么我的接口基本使用ULPI接口(降低pin的数量); USB3316 芯片逻辑框图 (来源:芯片数据手册...,这里在多说一句,目前市场上为了方便开发,USB3.0芯片内部会放置一个单片机,主要还是方便扩展接口,以方便芯片不单单只在USB3.0通信方面应用。
(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。
原理是这样: 当220v断开时,光耦不导通,右侧为一阻容电路,SIG_IN1电平是高电平 当220v导通时,在交流电的正半周期,光耦导通,3和4脚近似短路,SIG_IN1为低电平;在交流电的负半周期,...光耦不导通,此时SIG_IN1电压为多少呢?...这样就实现了在220V断开时单片机检测为高电平,当220V导通时单片机检测为低电平的逻辑。
一、前言 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下的安装也是非常的简单。
针对多口USB PD的应用,乐得瑞重磅推出3组6通道CC的USB PD3.1控制SOC芯片LDR6020系列。...乐得瑞LDR6020系列图片LDR6020是带有3组6路DRP USB-C及PD通信协议处理模块和USB2.0 Device模块的16位RISC MCU,拥有USB PD3.1通信功能,具有262字节非折叠...图片在多口移动电源的应用中,LDR6020能很好的控制每个USB Type-C接口的充放电管理,并且休眠模式下的电流小于5μA,非常适合带电池的USB Type-C接口设备。...乐得瑞LDR6020P图片LDR6020P是内置3组6路DRP USB-C及PD通信协议处理模块,两路20V VBUS控制MOS,16位RISC MCU的电源管理芯片,在LDR6020的基础上,加入了两路耐...总结乐得瑞科技一直专注于USB-C接口控制芯片的设计研发,于2015年比多数同行提早一年研发出了USB-C接口控制芯片产品,并且一直持续研发迭代,始终保持先进技术水平。
拔掉网线,断网。 然后在控制台输入ping 127.0.0.1。...为什么断网了还能 ping 通 127.0.0.1 呢? 这能说明你不用交网费就能上网吗? 不能。 首先我们需要进入基础科普环节。 不懂的同学看了就懂了,懂的看了就当查漏补缺吧。...为什么断网了还能 ping 通 127.0.0.1 前面提到,有网的情况下,ping 最后是通过网卡将数据发送出去的。...所以断网,依然能 ping 通 127.0.0.1。 ping回环地址和ping本机地址有什么区别 我们在mac里执行 ifconfig 。...所以断网了也能 ping 通回环地址。 如果服务器 listen 的是 0.0.0.0,那么此时用127.0.0.1和本机地址都可以访问到服务。
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.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
拔掉网线,断网。 ? 然后在控制台输入ping 127.0.0.1。...为什么断网了还能 ping 通 127.0.0.1 呢? 这能说明你不用交网费就能上网吗? 不能。 首先我们需要进入基础科普环节。 不懂的同学看了就懂了,懂的看了就当查漏补缺吧。...为什么断网了还能 ping 通 127.0.0.1 前面提到,有网的情况下,ping 最后是通过网卡将数据发送出去的。...所以断网,依然能 ping 通 127.0.0.1。 ping回环地址和ping本机地址有什么区别 我们在mac里执行 ifconfig 。...所以断网了也能 ping 通回环地址。 如果服务器 listen 的是 0.0.0.0,那么此时用127.0.0.1和本机地址都可以访问到服务。
使用python的第三方库bluepy可以很方便的在linux主机如树莓派上进行蓝牙通信。
第三部分是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; // 发送或接收数据的缓冲区
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是独立的,各自使用自己的硬件
领取专属 10元无门槛券
手把手带您无忧上云