一系列相互独立的端点在一起构成了USB逻辑设备,在系统结构中,位于下方红色方框内: 二、端点的分类 每个USB设备都有一个唯一的设备地址,设备地址是设备连接上主机时由主机分配的,主机主要依靠这个设备地址对...USB设备进行访问。...五、端点与管道 1、管道的概念 管道是主机软件(数据缓存区),和USB设备各各端点之间的数据传输连接,他是两者之间通信流的抽象(实际上数据传输是USB总线接口完成)。...1)、“流”指不具有USB定义格式的数据流,流通道中的数据是流的形式,也就是该数据内容不具有USB要求的结构。...2)、“消息”指具有某种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_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
tomcat监控工具:probe tomcat probe是一个开源的监控tomcat运行状态工具,可以实时查看项目运行的情况,监控内存,cpu,日志等等 部署安装 war包下载地址: https://...pan.baidu.com/s/1jI88NkE 将probe.war包解压到tomcat的webapp目录下 ?...添加一行 <user username="<em>probe</em>" password="000000" roles="tomcat,manager,probeuser,poweruserplus,poweruser.../<em>probe</em>。弹框中输入上面说到的 在tomcat-users.xml中配置的 用户名和密码 ;即可实时查看tomcat运行情况 ? ? ? ? ?
\device.h kernel\include\linux\usb.h kernel\include\scsi\scsi_host.h usb核心部分: kernel\driver\usb\core\...当一个U盘插入linux设备前发生的事情: a. 最开始注册hub部分: 需要关注注册驱动的有hub, usb, usb-storage。...); 可以看看它的实现,打开kernel\include\linux\usb.h, #define module_usb_driver(__usb_driver) \ module_driver(__...至于usb_register,最后也就是把usb-storage驱动添加到一个链表中,等待着遍历执行的时刻。 3. 当一个U盘插入linux设备后: a....error = udriver->probe(udev); ... } 由kernel\include\linux\usb.h中: #define to_usb_device_driver(d) container_of
/usb.h> 4.2 USB设备注册框架示例 #include #include #include //定义...鼠标驱动(中断传输方式) 5.1 USB驱动注册框架代码 #include #include #include ...: SerialNumber: 1.0 [ 25.570000] tiny4412 probe success . 5.2 编写USB鼠标驱动 [root@wbyq linux-3.5]# make...#include #include #include #include .../init.h> #include #include #include #include <linux/slab.h
通过扫描以下目录获取物理节点所有 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...设备类bDeviceClass、bDeviceSubClass、bDeviceProtocol By USB 中文网 USB设备描述符中的idVendor、idProduct和bcdDevice By...USB 中文网 USB 硬件设备的序列号 By IBM 注:本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。
[ 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
,匹配成功就会调用usb_driver的成员.probe函数 usb_deregister(struct usb_driver *driver); 注销一个usb_driver驱动,在出口函数中写 *usb_buffer_alloc...,DMA地址缓存区 3.1在入口函数中 1)通过usb_register()函数注册usb_driver结构体 3.2在usb_driver的probe函数中 1)分配一个input_dev结构体 2)...释放input_device 3.5在出口函数中 1)通过usb_deregister ()函数注销usb_driver结构体 4.代码如下: #include #include... #include #include #include #include...", .probe = myusb_mouse_probe, .disconnect = myusb_mouse_disconnect
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...(gadget_strings, gadget_info); [include/linux/usb/gadget_configfs.h] #define USB_CONFIG_STRINGS_LANG(...主要的工作流程为: 分配一个config_usb_cfg1结构体,该结构体包含了usb_configuration结构体,保存了该USB设备的配置信息。 设置USB设备的配置描述符的某些选项。...调用UDC驱动接口usb_udc_connect_control连接USB主机控制器,这样USB主机就能识别并枚举USB设备。
DRD driver DRD驱动在usb/dwc3 1.1 dts dwc3@44000000 { /* Compatible ID used by the Linux driver for this...= "linux,extcon-usb-gpio", }, { /* sentinel */ } }; static struct platform_driver usb_extcon_driver...= { .probe = usb_extcon_probe, .remove = usb_extcon_remove, .driver = { .name = "extcon-usb-gpio", ...., }; 1)首先根据"linux,extcon-usb-gpio"进行dts和driver的匹配,执行usb_extcon_probe() 2)在 usb_extcon_probe()中,先调用devm_extcon_dev_register...3.1 usb/host/xhci-plat.c: static struct platform_driver usb_xhci_driver = { .probe = xhci_plat_probe
针对probe流程处理了解的比较片面,有了解比较深的同学,希望能找您学习一下。...= 0x489590 ,/*最新的代码是pci_probe*/ find_device = 0x489a35 , plug =...可以参考博客 (https://blog.csdn.net/whenloce/article/details/88374867) 3.1 通过igb_uio驱动来映射到用户态 uio驱动在目录kernel/linux...=eth_i40e_pci_probe() /*网卡驱动probe*/ 1)pci_get_uio_dev 读取主次设备号及uio编号,创建/dev/uio1 字符设备。...但是对eth_i40e_pci_probe()函数还需要深入研究.
主机叫做Host,从机叫做Device,所有的USB传输,都是从USB主机这方发起;USB设备没有"主动"通知USB主机的能力。..., 比如:鼠标的数据是从鼠标传到PC机, 对应的端点称为"中断输入端点" 其中端点0是设备的默认控制端点, 既能输出也能输入,用于USB设备的识别过程 同样linux内核也自带了USB总线驱动程序,框架如下...其中usb_bus_type是一个全局变量, 它和我们之前学的platform平台总线相似,属于USB总线, 是Linux中bus的一种....,存在/sys/bus下 .match = usb_device_match, //匹配函数,匹配成功就会调用usb_driver驱动的probe函数成员 .uevent...bus_attach_device(dev); //来匹配对应的驱动程序 ... ... } 当bus_attach_device()函数匹配成功,就会调用驱动的probe函数
为了消除这种可能性,机构会限制和监测访问互联网,同时禁用 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
做Linux方面也有三个多月了,对代码中的有些结构一直不是非常明确,比方platform_device与platform_driver一直分不清关系。在网上搜了下,做个总结。...具体过程描写叙述例如以下: Linux从2.6版本号開始引入了platform这个概念,在开发底层驱动程序时,首先要确认的就是设备的资源信息,在2.6内核中将每一个设备的资源用结构platform_device...来描写叙述,该结构体定义在kernel/include/linux/platform_device.h中, struct platform_device { const char * name...HOST实现是: static struct platform_driver ohci_hcd_s3c2410_driver = { .probe = ohci_hcd_s3c2410_drv_probe...当注冊成功时会调用platform_driver结构元素probe函数指针,这里就是ohci_hcd_s3c2410_drv_probe開始探測载入。
大部分项目设计需要一个稳定的Linux版本,但是又需要修复内核漏洞。这种情况下,跟随LTS版本升级,是最好的办法。 很多项目也需要改善Linux的实时特性。.../pub/linux/kernel/v4.x/linux-4.14.52.tar.xz;https://mirrors.edge.kernel.org/pub/linux/kernel/projects...最后编译linux-4.14.52-rt-xlnx,或者放入petaLinux工程编译,启动可以成功,网络、SD卡、USB功能正常。 下面是启动log。 Starting kernel ......] usb usb1: Manufacturer: Linux 4.14.52-rt34 xhci-hcd [ 4.286047] usb usb1: SerialNumber: xhci-hcd...Controller [ 4.337759] usb usb2: Manufacturer: Linux 4.14.52-rt34 xhci-hcd [ 4.343670] usb usb2
使用usb_composite_probe注册Composite驱动。使用usb_composite_unregister函数注销Composite驱动。...(__usb_composite_driver, usb_composite_probe, \ usb_composite_unregister) [include/linux/device.h...usb_composite_probe初始化复合设备驱动,usb_composite_unregister卸载复合设备驱动。...[include/linux/usb/composite.h] /** * usb_composite_probe() - register a composite driver * @driver...Linux 3.11版本引入了USB Gadget Configfs。在用户层可以通过暴漏出来的API定义USB Gadget设备的任意功能和配置,极大的方便了USB复合设备的配置和使用。
这是 Linux 下 USB 相对于 I2C、SPI 复杂的地方,I2C 等根本不会考虑主控 Soc 作为从机的情况,但 USB 需要考虑。...本文主要针对主控 Soc 作为 USB 从机的情况,Linux 为其提供了 Gadget 框架。...对于底层 endpoint 的代码,需要从 UDC 驱动开始分析: IMX6ULL 的代码:Linux-4.9.88\drivers\usb\chipidea\ci_hdrc_imx.c ci_hdrc_imx_probe...\drivers\usb\chipidea\core.c static struct platform_driver ci_hdrc_driver = { .probe = ci_hdrc_probe...\dwc2\platform.c dwc2_driver_probe retval = dwc2_gadget_init(hsotg); 2.2 上层软件操作 模拟各类 USB
usb协议是一个复杂的协议,目前涉及到的版本就有usb1.0, usb2.0, usb3.0。...那么,对于我们这些不是很了解usb的开发人员,如何了解usb的代码结构呢?...c,通过Makefile和Kconfig发现,s3c2410依赖于USB_OHCI_HCD_S3C2410 和 USB_OHCI_HCD,那USB_OHCI_HCD呢?...下面这段代码就是ohci-s3c2410.c中probe函数的代码。...但是,如果要深入了解usb host&device驱动,那么除了这些代码逻辑,那么还要熟读usb协议手册,更重要的学会用catc协议分析仪真正地去了解usb是如何发包和收包的。
试过很多官方驱动,都不太好,每个驱动都测试了5G, 3.3、不同驱动的对比测试 测试位置:距离路由器隔一堵墙的房间那头, USB3.0无线网卡稳定在130Mbps的下载速度 测网速:www.speedtest.cn
领取专属 10元无门槛券
手把手带您无忧上云