USB 设备状态切换图 2....大多数的USB设备只有一种配置。 一个配置下,可以有多个接口(Interface),接口等同于功能(Function)。比如USB 耳机有两个接口(功能):声音收发、按键控制。...一个 USB 设备, 只有一个设备描述符:用来表示设备的 ID、它有多少个配置、它的端点 0 一次最大能传输多少字节数据 可能有多个配置描述符:用来表示它有多少个接口、供电方式、最大电流 一个配置描述符下面...3.1 设备描述符 3.2 配置描述符 3.3 接口描述符 3.4 端点描述符 3.5 示例 在 Ubuntu 中可以执行lsusb -v查看 USB 设备的描述符信息: $ sudo lsusb...-v Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Device Descriptor: bLength
当某个设备被连接到 USB 主机上,该设备会向主机提供其功能和电源要求。通常,设备会通过一个描述符表格(其固件的一部分)来提供这些信息。...描述符表格是数据的结构化序列,描述了设备信息;这些值由开发人员定义。所有描述符表格都具有一个标准信息,用于介绍设备属性和电源要求。...如果某个设计满足指定 USB 设备类别的要求,则该 USB 设备必须具备的其他描述符信息都将包含在设备描述符结构中。附录 A 包含一个 PSoC USB 的全功能设备描述符的示例。...如果您正在阅读或创建您自己的描述符,那么请注意,传输数据字段时,优先传输最低有效位。许多参数的长度均为 2个字节。请确保先发送低字节,然后再发送高字节。
mod=viewthread&tid=99710 第9章 RL-USB各种USB描述符简介 本章节为大家讲解USB的各种描述符。...9.1初学者重要提示 9.2 USB描述符概述 9.3 USB设备描述符 9.4 USB配置描述符 9.5 USB接口描述符 9.6 USB端点描述符 9.7 USB字符串描述符.../USB_hardware 9.2 USB描述符概述(USB Descriptors) USB设备使用描述符报告其属性,描述符是具有定义格式的数据结构。...每个描述符都以一个字节宽的字段开始,该字段包含描述符中字节的总数,然后是一个标识描述符类型的字段。 将USB设备连接到USB总线时,主机通过总线枚举来识别和配置设备。...9.7 USB字符串描述符(String Descriptor) 字符串描述符(USB_STRING_DESCRIPTOR)是可选的,并将可读信息添加到其他描述符中。
USB设备进行访问。...一个端点具有以下一些特性: 端点的总线访问频率要求 端点的总线延迟要求 端点的带宽要求 端点的端点号 对错误处理的要求 端点能接收或发送的包的最大长度 端点的传送类型 端点与主机的数据传送方向 四、端点描述符...USB设备中端点描述符描述了端点信息,端点描述符格式如下: typedef struct _USB_ENDPOINT_DESCRIPTOR_ { BYTE bLength,...; 各变量具体释义如下: bLength : 描述符大小.固定为0x07. bDescriptorType : 接口描述符类型.固定为0x05. bEndpointType : USB设备的端点地址.Bit7...1)、“流”指不具有USB定义格式的数据流,流通道中的数据是流的形式,也就是该数据内容不具有USB要求的结构。
在Linux编程世界中,不可能没听过文件描述符这个概念,我们操纵任何设备的时候,几乎都要通过它来达成的,它究竟是何方神圣呢?随我描述符科学家来一探究竟。...首先,我们在Linux下打开文件用的都是如下代码: int fd = open(... ...); 当然有同学可能会说,有时也可以用fopen(),但是fopen()只是标准IO对系统IO的封装,归根结底还是使用...很多人就想当然地以为打开嘛,就跟在windows下双击一个文件,或者双击一个文件夹一样,就是一个动作而已,其实不然,常说的打开一个文件实际上最重要的是获取这个文件的描述符,描述符是用来表征这个文件的代表物...内核空间中有一堆数据结构表达一个文件的属性信息,但是用户空间看不见,只看见一个代表了这些信息的整数i,通常我们称之为文件描述符,对文件的读写和ioctl操作都是通过这个东东来达到的呢!
Overview 了解Linux怎样处理输入和输出是非常重要的。一旦我们了解其原理以后,我们就可以正确熟练地使用脚本把内容输出到正确的位置。同样我们也可以更好地理解输入重定向和输出重定向。...Linux标准文件描述符 文件描述符 缩写 描述 0 STDIN 标准输入 1 STDOUT 标准输出 2 STDERR 标准错误输出 ---- Linux系统将所有设备都当作文件来处理,而Linux...其实我们可以想象我们电脑的显示器和键盘在Linux系统中都被看作是文件,而它们都有相应的文件描述符与之对应。 其实我们与计算机之间的交互是我可以输入一些指令之后它给我一些输出。...1>&6 vincent@geek:~/test$ cat test i love linux shell!!!1234 上面的命令很有意思:我首先把文件描述符6指向test文件。...命令如下: cat /dev/null > test1 ---- Linux使用/tmp目录来存放不需要一直保留的文件,大多数Linux系统会在启动时自动删除/tmp目录中所有的文件。
在Linux操作系统中,一切皆是文件—— "Everything is a file"。 如果要在Linux系统中编写操作文件的代码,需要借助文件描述符。...文件的索引——文件描述符(file descriptor): 文件描述符是一个非负整数,当程序打开一个现有文件或者创建一个新文件时,内核向进程返回一个文件描述符。...文件描述符就是内核为了高效管理已被打开的文件所创建的索引值。 文件描述符指向内核为每一个进程维护的打开文件记录表。当要处理文件时,将文件对应的文件描述符作为参数传给函数。...文件描述符在用户进程和内核之间的映射关系: Linux中查看文件描述符的指令:lsof(list open files) lsof可以打开的文件: 普通文件 目录 网络文件系统的文件 字符或设备文件...11968 --通过某个进程号显示该进程打开的文件 lsof -i --列出所有的网络连接 lsof -i tcp --列出所有tcp 网络连接信息 *Linux
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
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。
系统可打开最大文件描述符设置 查看系统可打开最大文件描述符 # cat /proc/sys/fs/file-max 65535 说明: 所有进程打开的文件描述符数不能超过/proc/sys/fs/file-max...查看当前系统使用的打开文件描述符数 # cat /proc/sys/fs/file-nr 1280 0 0 113986 说明:第一个数表示当前系统已分配的文件描述符数(文件句柄数),第二个数为分配后已释放的文件描述符数...(当前不再使用的文件描述符数),第三个数为最大文件描述符数,等于file-max。...进程可打开最大文件描述设置 查看进程可打开最大文件描述符: soft nofile # ulimit -n 65535 配置进程可打开最大文件描述符 a)永久配置 添加带背景色内容 # vim /...单个进程打开的文件描述符数不能超过user limit中nofile的soft limit c. nofile的soft limit不能超过其hard limit d.
介绍在Linux系统中,fd命令是一条用于显示文件描述符(File Descriptor)的命令。文件描述符是操作系统用于跟踪和管理打开文件的整数值,它是对打开文件的引用。...0、1和2是字符设备(character device)类型的文件描述符,文件描述符3和4是普通文件(regular file)类型的文件描述符。...4.4 显示所有文件描述符的详细信息使用fd -e命令可以显示当前进程的所有文件描述符的详细信息,包括文件描述符编号、打开模式、文件路径等。...总结Linux fd命令是用于显示文件描述符的实用命令。通过fd命令,我们可以查看当前进程所打开的文件描述符及其相关信息,包括文件描述符的编号、打开模式、文件路径等。...希望本文对你理解和使用Linux fd命令有所帮助。如需进一步了解命令的更多细节和用法,请查阅相关的文档和参考资料。
前言 在前文中学习了open函数,我们知道open函数的返回值就是文件描述符,本章将对文件描述符进行详细讲解。 文件描述符 文件描述符是什么?...这里就谈到了文件描述符。如下: 简单来说:文件描述符就是一个进程与该进程所打开文件建立索引关系的数组(文件描述符表)下标。通过文件描述符,也就是该进程对应的的文件描述符表所对应的下标。...我们再来看如下现象: 为什么文件描述符是从3开始的呢? Linux系统下进程会默认打开三个文件,即标准输入、标准输出、标准错误,分别对应文件描述符0 1 2。...这也是为什么我们打开文件时,返回的文件描述符是从3开始,因为前面的0 1 2已经被占用了 一个文件可以在同一个进程中被打开对此,也就意味着不同的文件描述符,可能会指向同一个文件。...文件描述符分配规则 文件描述符的分配规则为从0开始,扫描文件描述符表中,没有被使用的数值最小的下标,作为新打开文件的文件描述符。
Linux内核中定义的字符串描述符结构 struct usb_string_descriptor { _ _u8 bLength; //描述符长度 _ _u8 bDescriptorType.../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
通过扫描以下目录获取物理节点所有 USB 设备: /sys/bus/usb/devices/usb* /sys/bus/usb/devices/usb*/$busnum-* 从该文件系统收集某一个设备的主要信息如下...接口描述符 大容量存储 09h 设备描述符 Hub USB集线器 0Ah 接口描述符 CDC-Data 0Bh 接口描述符 Smart Card 0Dh 接口描述符 Content Security...12h 接口描述符 USB Type-C Bridge Class DCh 设备描述符、接口描述符 Diagnostic Device E0h 接口描述符 无线控制器 EFh 设备描述符、接口描述符...Miscellaneous FEh 接口描述符 Application Specific FFh 设备描述符、接口描述符 厂商用自定义 参考文献# USB设备类bDeviceClass、bDeviceSubClass...、bDeviceProtocol By USB 中文网 USB设备描述符中的idVendor、idProduct和bcdDevice By USB 中文网 USB 硬件设备的序列号 By IBM 注:本作品采用
maxsyslogins/priority/locks/sigpending/msgqueue/nice/rtprio/ value: -1/unlimited/infinity/ 具体值 要修改最大文件描述符重点在于...item和value 2.修改 ---- 2.1 先查看当前用户最大文件描述符数量: 1 ulimit -Hn 2 ulimit -Sn 2.2 修改当前用户进程的最大文件描述符数量: 1 vim
Linux对于内存的管理涉及到非常多的方面,这篇文章首先从对进程虚拟地址空间的管理说起。...(所依据的代码是2.6.32.60) 无论是内核线程还是用户进程,对于内核来说,无非都是task_struct这个数据结构的一个实例而已,task_struct被称为进程描述符(process descriptor...其中有一个被称为'内存描述符‘(memory descriptor)的数据结构mm_struct,抽象并描述了Linux视角下管理进程地址空间的所有信息。...mm_struct定义在include/linux/mm_types.h中,其中的域抽象了进程的地址空间,如下图所示: ?...page_table_lock; //线性区的自旋锁和页表的自旋锁 23 24 struct list_head mmlist; //指向内存描述符链表中的相邻元素
[ 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() 对于实时类型的端点管道使用...,分配成功返回一个char型缓冲区虚拟地址 *dev: usb_device设备结构体 size:分配的缓冲区大小,这里填端点描述符的成员endpoint->wMaxPacketSize ...buffer_length:数据大小, 这里填端点描述符的成员endpoint->wMaxPacketS //端点最大包长 complete_fn:数据传输完成后产生的中断函数 context:会放在...释放input_device 3.5在出口函数中 1)通过usb_deregister ()函数注销usb_driver结构体 4.代码如下: #include #include... #include #include #include #include
领取专属 10元无门槛券
手把手带您无忧上云