USB 控制器 1....DRD driver DRD驱动在usb/dwc3 1.1 dts dwc3@44000000 { /* Compatible ID used by the Linux driver for this...= ; dr_mode = "otg"; extcon = ; }; extcon_dwc3: extcon_dwc3 { compatible = "linux...= "linux,extcon-usb-gpio", }, { /* sentinel */ } }; static struct platform_driver usb_extcon_driver..., }; 1)首先根据"linux,extcon-usb-gpio"进行dts和driver的匹配,执行usb_extcon_probe() 2)在 usb_extcon_probe()中,先调用devm_extcon_dev_register
Linux3.11版本引入了基于configfs的usb gadget configfs。.../bcdDevice # USB 1.1: 0x0110 # USB 2.0: 0x0200, USB 2.1: 0x0210, USB 2.5: 0x0250 # USB 3.0: 0x0300...; // 支持USB3.0 /* 初始化复合设备-usb_composite_dev */ composite_init_dev(&gi->cdev); /* 设置复合设备描述符 */ gi...(gadget_strings, gadget_info); [include/linux/usb/gadget_configfs.h] #define USB_CONFIG_STRINGS_LANG(...调用UDC驱动接口usb_udc_connect_control连接USB主机控制器,这样USB主机就能识别并枚举USB设备。
可以和FPGA搭配使用的USB3.0 PHY芯片 通过之前的介绍,我们大致了解到USB3.0整个协议异常复杂,就连物理层都需要SerDes(FPGA实现的情况...)才可以,所以目前使用USB3.0时,搭档FPGA的最优解就是外置USB3.0 PHY片。...USB3.0 PHY简介 首先我们需要了解PHY具体完成哪些工作以及我利用FPGA能 实现哪些工作才能实现USB通信。...,并按照PIPE(USB3.0)或者UTMI(2.0)的总线的数据格式发送给PHY(2.0或者3.0);CSR部分主要进行寄存器的控制(软件对寄存器进行操作主要是操作CSR寄存器;FIFO部分主要是实现高速和低俗转换...,这里在多说一句,目前市场上为了方便开发,USB3.0芯片内部会放置一个单片机,主要还是方便扩展接口,以方便芯片不单单只在USB3.0通信方面应用。
2.Gadget Function驱动 Linux内核的USB Gadget Function驱动都在drivers/usb/gadget/function/目录下,有通讯设备类(Communication...[include/linux/usb/composite.h] struct usb_function_driver { const char *name; struct module...usb_function *); void (*resume)(struct usb_function *); /* USB 3.0 additions */ // 向GetStatus...[include/linux/usb/composite.h] #define DECLARE_USB_FUNCTION_INIT(_name, _inst_alloc, _func_alloc) \...Linux 3.11版本引入了USB Gadget Configfs。在用户层可以通过暴漏出来的API定义USB Gadget设备的任意功能和配置,极大的方便了USB复合设备的配置和使用。
1.概述 RK33999使用synopsys dwc3的USB3.0控制器IP。...、电源、extcon(用于USB模式切换),另一个在synopsys提供的驱动中初始化,位于drivers/usb/dwc3/core.c文件中,这部分和USB3.0控制器密切相关,如USB3.0控制器内部寄存器地址...、USB3.0的PHY、中断等。...只有两个模块都初始化完毕,USB3.0控制器才能正常工作。本节只分析USB驱动早期初始化部分。 2.设备树 下面是USB3.0控制器的设备树节点。...控制器硬件,主要流程如下: (1)获取USB控制器IP的版本,便于后续进行不同的配置,USB控制器不同IP版本之间有差别,将Linux内核版本号写入USB控制器寄存器,以便发现某些版本下的bug (2)
保存端点描述符、USB3.0伴侣描述符、保存端点类型、设置端点使能标志、向寄存器中写入端点编号以使能端点,非控制端点还要初始化TRB。 开始ep0 out传输,用于响应主机发送的请求。...移除端点上的所有USB请求,并调用其回调函数。 若端点处于STALL状态,则需要先清除该状态 关闭硬件端点 清空端点描述符。 清空USB3.0端点伴侣描述符。 清空端点类型。 清空端点标志。...29:26 Reserved 25:22 设置突发传输数值Burst Size,即一个微帧内传输多少包数据,只有USB3.0及以上支持此特性。...USB3.0支持的最大包长为1024字节。...*g, const char *name); // ep为要匹配端点的数据结构,desc匹配端点的端点描述符 // ep_comp匹配端点的USB3.0端点伴侣描述符 int usb_gadget_ep_match_desc
(audio_driver); // 注册audio_driver [include/linux/usb/composite.h] #define module_usb_composite_driver...(__usb_composite_driver) \ module_driver(__usb_composite_driver, usb_composite_probe, \ usb_composite_unregister...[include/linux/device.h] #define module_driver(__driver, __register, __unregister, ...) \ static int...USB gadget configfs根据名称查找USB设备控制器,而legacy方式只匹配第一个USB设备控制器,无法匹配指定的USB设备控制器。...分配端点0的usb_request、分配USB请求的缓冲区、设置usb_request的回调函数、复位所有端点,并将gadget的端点数量清零。
一系列相互独立的端点在一起构成了USB逻辑设备,在系统结构中,位于下方红色方框内: 二、端点的分类 每个USB设备都有一个唯一的设备地址,设备地址是设备连接上主机时由主机分配的,主机主要依靠这个设备地址对...USB设备进行访问。...五、端点与管道 1、管道的概念 管道是主机软件(数据缓存区),和USB设备各各端点之间的数据传输连接,他是两者之间通信流的抽象(实际上数据传输是USB总线接口完成)。...1)、“流”指不具有USB定义格式的数据流,流通道中的数据是流的形式,也就是该数据内容不具有USB要求的结构。...2)、“消息”指具有某种USB定义格式的数据流。消息通道与端点的关系同流通道与端点的关系是不同的。
USB3.0 与USB2.0的特性比较 ? 3.2 超速结构 超速总线是一个分层的通讯结构,如下图所示: ? 协议层: 协议层在主机和设备间定义了end-to-end通讯规则。...HUB设备: 因为USB3.0向下兼容USB2.0,为支持USB3.0双总线结构,USB3.0 HUB在逻辑上是两个HUB的组合:一个USB2.0 HUB和一个USB3.0 HUB。...主机(Hosts): 一个USB3.0主机通过主控器和USB设备互连。...为了支持USB3.0双总线结构,USB3.0主控器必须包括超速(USB3.0)和USB2.0部分,这样可以同时管理每一个总线上主机和设备间的控制、状态和信息交换。...主机含有几个根下行端口实现超速USB和USB2.0,主机通过这些端口: ·检测USB设备的连接和移除; ·管理主机和设备间的控制流; ·管理主机和设备间的数据流; ·收集状态和活动统计; ·对连接的设备供电
前言 因为需要刷机用电脑,却发现接入手机显示any key to shutdown.所以查了查和电脑usb3.0的一些东西相关,需要修改注册表,文末附补丁 附上一张miflash图片 工具 点我下载线刷补丁
1.RK3399 USB 下图是RK3399 SOC的框图。RK3399包含了2个USB2.0 Host控制器;两个USB3.0 OTG控制器,同时兼容USB2.0。...USB3.0使用的是Synopsys公司的IP,驱动也使用Synopsys的dwc3 USB驱动。...2.USB3.0 OTG Controller简介 USB3.0 OTG控制器可以作为主机(Host)、设备(Device),或者根据从USB2.0 PHY和DFP/UFP/Data Role Swap...OTG A设备和B设备 3.USB3.0 OTG Controller硬件框图 从下面的硬件框图中可以看出,USB3.0 OTG控制器内部的USB2.0和USB3.0的PHY和MAC是独立的,各自使用自己的硬件...因此USB2.0和USB3.0的带宽也是独立计算的,USB2.0的带宽并不会占用USB3.0的带宽。
RK3399的USB3.0控制器采用dwc3 USB控制器,具有OTG功能。...是Linux内核描述USB设备控制器端点的通用数据结构。...若使用USB3.0,则还需要设置comp_desc描述符。 struct usb_ep通常不直接使用,而是嵌入到一个大的数据结构中使用。...[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
目前使用最为广泛的是USB2.0与USB3.0,今天小编给大家介绍一下两者的特点和有什么区别。...2.2 USB2.0的引脚定义 USB2.0采用了一排共四个针脚的设计 USB-A公头为例,如下图所示: 结构图如下图所示: 3、USB3.0的特点 3.1、USB3.0介绍 USB-IF组织在2008...年11月17日推出超高速USB3.0规范。...3. 2、USB3.0的引脚定义 USB3.0采用的是两排共9个针脚的设计, 结构图如下图所示: 4、USB.2.0和USB3.0的区别 4.1 外观方面 USB2.0通常是白色或黑色,而USB3.0...4.2 USB插口引脚方面 USB2.0采用4针脚设计,而USB3.0则采取9针脚设计,相比而言USB3.0功能更强大。
Linux 内核源码:include\linux\usb.h Linux 内核源码:drivers\hid\usbhid\usbmouse.c 1....BUS/DEV/DRV 模型 "USB 接口"是逻辑上的 USB 设备,编写的 usb_driver 驱动程序,支持的是"USB 接口": USB 控制器或 Hub 识别出 USB 设备后,会创建、...注册 usb_device usb_device 被"drivers\usb\core\generic.c" 驱动认领后,会选择、设置某个配置 这个配置下面的接口,都会分配、设置、注册一个 usb_interface...左边的 usb_driver 和右边的 usb_interface 如果匹配,则调用 usb_driver.probe 2....接口函数 在 USB 设备驱动程序中,能使用的 USB 函数都在这个头文件里:include\linux\usb.h。
gadget 功能前关闭 adb 功能时却报异常的解决办法 4 附录 4.1 Linux-4.x/Linux-5.4 Gadget 配置示例 4.1.1 小机做 mass storage 4.1.2...1.3 适用范围 表 1-1: 适用产品列表 内核版本 驱动文件 Linux-4.9 drivers/usb/* Linux-5.4 drivers/usb/* 2 模块介绍 2.1 模块功能介绍...USB 总线采用树形结构,在一条总线上只能有唯一的主机设备。Linux 内核从主机和设备两个角度观察 USB 总线结构。...Linux 有原生 gadget 框架,通用的配置流程可参考下文。...图 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
[root@btg linux-2.6]# git tag|tail v2.6.38-rc8 v2.6.39 v2.6.39-rc1 v2.6.39-rc2 v2.6.39-rc3 v2.6.39-rc4...v2.6.39-rc5 v2.6.39-rc6 v2.6.39-rc7 v3.0-rc1 [root@btg linux-2.6]#
最近在学usb协议,看到了U0、U1、U2、U3这几个词,特地去查了一下,在此记录。 这几个概念是在USB3.0协议中的Link Layer这一层中定义的,代表了USB3.0的四种电力管理状态。...U0 – 正常运作状态 U1 – 待机与快速恢复 U2 – 待机与缓慢恢复 U3 – 休眠模式(Suspend) 通过这几种电源状态,usb controller可以进入不同层级的睡眠模式,使得功耗得到降低
在贴测试结果之前,先来普及一下usb3相关信息,百科什么的得自己去看,这里我说几个大家可能关心的问题。 1.USB3.0的设备啊?我的机器好像并不支持USB3.0,那能用吗?...答:能用,USB3.0标准向下兼容,也就是在那些一般的不支持USB3.0接口的电脑上还是能用,至于怎么去看自己机器是否支持USB3.0,我想这里有一个最简单的方法:USB3.0规范规定USB接口里面的那块塑料片是蓝色的...2.USB3.0我听说会快很多,但是我机器确实不支持USB3.0,那我还要买USB3.0的设备吗(例如移动硬盘和U盘)?...答: 还是应该选择USB3.0的设备,目前比较新的机器一般都配有USB3.0接口了,而像U盘/移动硬盘这些设备也有了很多支持USB3.0的型号给我们选择,虽然比较之下USB3.0设备要比USB2.0的贵上一些...我一宿舍电脑都是不支持USB3.0的,也就没去测试USB3.0存储设备在支持USB3.0的机器上的情况了,不过听说还能快上很多很多。
万物互联时代,USB3.0 HUB作为多路USB接口的通用中继器,被广泛应用于分线器、各类计算机、工控机、车载USB装置、Type-C接口等设备,使用场景无处不在。...内嵌高效DC-DC电源管理模块,已完成全套系统兼容性和可靠性测试,正式进入批量商用,可为客户提供高性能、高集成、低成本的通用USB3.0 HUB解决方案,赋能大众型消费电子和计算整机接口市场。...▲芯动USB3.0 HUB 芯片C188产品封装图(76 Pin) ▲芯动C188应用领域广泛 一 C188产品特点 低延迟:支持4口分线下的USB超高速、高速、全速和低速低延迟HUB 5级连接; 高性能...:支持5M cable高性能稳定传输; 全兼容:向下全面兼容USB2.0/USB1.1设备,满足各种兼容性测试要求; 低成本:内嵌高效DC-DC电源模块,PCB面积和BOM优化; 低功耗:支持USB3.0...先后推出了“风华1号”4K级多路服务器GPU、“风华2号”4K级三屏桌面和嵌入式GPU,性能强劲,跑分领先,功耗低,自带智能计算能力,全面支持国内外CPU/OS和生态,包括Linux、Windows和Android
四、 linux内核下USB相关的API函数与数据结构 前面介绍了USB相关一些基础概念与重要的数据结构,接下来就分析在linux内核中如何编写一个USB 驱动程序,编写与一个USB设备驱动程序的方法和其他总线驱动方式类似.../usb.h> 4.2 USB设备注册框架示例 #include #include #include //定义...鼠标驱动(中断传输方式) 5.1 USB驱动注册框架代码 #include #include #include ...#include #include #include #include .../init.h> #include #include #include #include <linux/slab.h
领取专属 10元无门槛券
手把手带您无忧上云