Linux 常见主设备号设备清单# 在Linux系统中,设备通常通过主设备号和次设备号来标识。主设备号用于区分设备的大类,例如硬盘、字符设备等;次设备号用于在同一大类设备中区分不同的设备。...) 4 串行端口设备,如 ttyS0、ttyS1 等 lp (打印机设备) 6 打印机设备,如 lp0、lp1 等 硬盘设备 8 SATA、SCSI或USB硬盘,如 sda、sdb 等 loop device...更多设备号定义可以在 Linux 源码仓库 Documentation/admin-guide/devices.txt 路径下找到,比如 这里。...NVMe 设备的主设备号是在设备驱动程序注册到内核时由内核动态分配的,因此,不同的系统,内核版本或配置可能会有所不同。在许多现代 Linux 系统中,NVMe 设备的主设备号可能是 259。...Linux 源码定义# 设备号的分配在早期的 Linux 内核版本中是静态的,设备号的列表可以在内核源代码的 Documentation/admin-guide/devices.txt 文件中找到。
USB设备进行访问。...五、端点与管道 1、管道的概念 管道是主机软件(数据缓存区),和USB设备各各端点之间的数据传输连接,他是两者之间通信流的抽象(实际上数据传输是USB总线接口完成)。...1)、“流”指不具有USB定义格式的数据流,流通道中的数据是流的形式,也就是该数据内容不具有USB要求的结构。...六、端点的传输类型 一个具体的端点只能属于四个传输模式下中的一种。数据传输类型分为四种分别是:控制传输、批量传输、同步传输和中断传输。...一般情况下,通常把工作在什么模式下的端点就叫什么端点,例如:控制端点、批量端点、同步端点和中断端点。
最近 VMware 莫名其妙的卡,开机一会就开始卡死了,找了好多办法也不行,暂时先换 VirtualBox,已安装但在使用网银 U 盾等 USB 设备时,无法识别 USB 设备。...sudo nano /etc/group 找到如下内容:vboxusers:x:131:,个别情况下 131 也有可能是其他,更改内容为 vboxusers:x:131:name name 为用户名,然后
而Mac和Linux下要方便得多,你几乎不需要操作便可以轻松通过USB连上手机,进行开发调试。...参看http://developer.android.com/tools/device.html#VendorIds 首先通过文档找到USB Vendor IDs,文档中没有的话可以在Mac上连接USB...Mac OSX下的配置: 1.创建或修改文件: /Users//.android/adb_usb.ini 添加USB Vendor IDs: 0x0421 注意:在Finder中隐藏文件默认不显示的...$ adb devices Linux 下的配置: 1.创建或修改文件:/etc/udev/rules.d/51-android.rules, $ sudo vi /etc/udev/rules.d/51.../android update adb 5.在$HOME创建或修改文件: ~/.android/adb_usb.ini 添加内容0x0421 $ vi ~/.android/adb_usb.ini 6
为了管理这些设备,系统为设备编了号,每个设备号又分为主设备号和次设备号。主设备号用来区分不同种类的设备,而次设备号用来区分同一类型的多个设备。对于常用设备,Linux有约定俗成的编号。...一个字符设备或者块设备都有一个主设备号和次设备号。主设备号和次设备号统称为设备号。主设备号用来表示一个特定的驱动程序。次设备号用来表示使用该驱动程序的各设备。...Mapper,Device Mapper 是 Linux 2.6 内核中提供的一种从逻辑设备到物理设备的映射框架机制,在该机制下,用户可以很方便的根据自己的需要制定实现存储资源的管理策略,当前比较流行的...Linux 下的逻辑卷管理器如 LVM2(Linux Volume Manager 2 version)、EVMS(Enterprise Volume Management System)、dmraid...关于次设备号的主要用途,这篇博客主设备号和次设备号介绍了部分内容。
在Linux设备驱动之字符设备(一)中学习了设备号的构成,设备号的申请与释放。在Linux设备驱动之字符设备(二)中学习了如何创建一个字符设备,初始化,已经注册到系统中和最后释放该字符设备。...最后总结一下字符设备驱动的模型。....open = char_open, .read = char_read, }; static int char_dev_init(void) { int ret; //主设备号存在...\n"); return ret; } } else//主设备号不存在,动态分配 { ret = alloc_chrdev_region...237 char_dev 238 audio_dsp_mem 可以看到系统给分配的主设备号为237,所以下一步就是根据主设备号创建设备节点。
一、前言 libuvc是一个开源的库,用于在Linux和其他操作系统上与USB视频设备进行交互。提供了一组函数和接口,使开发人员可以轻松地访问和控制USB摄像头。...libuvc库实现了对UVC(USB Video Class)设备的支持。UVC是一个标准的USB设备类别,用于视频流传输和摄像头控制。...libuvc库提供了针对各种常见操作系统的API,包括Linux、Windows、macOS、Android等。使用USB协议与摄像头通信,并处理底层协议细节,简化了开发人员的工作。...许多应用程序和项目使用libuvc库来构建基于USB摄像头的应用程序,如视频监控、机器视觉、视频采集等。它提供了一个方便且跨平台的解决方案,使开发人员能够轻松地利用USB摄像头的功能。...libuvc仓库地址在这里:https://github.com/libuvc/libuvc 在Linux下的安装也是非常的简单。
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。
2.6.1 打开内核配置 需在 “USB functions configurable through configfs” 下选择需要的功能。 ...图 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...• 写入 gadget 的 PID、VID、序列号等信息: echo "VID" > /sys/kernel/config/usb_gadget/g1/idVendor echo "PID" > /sys...• 若硬件有多个 USB 口,尝试同样条件下测试其他 USB 口的主机功能是否正常。...• 同样条件下,分别打印出功能异常板子和功能正常板子的相关寄存器,并进行对比,确认是否有异常。 • 出现异常时,确认 USB 高速眼图是否正常。
硬件设备在Linux中的命名 Linux中每一个设备都被当成文件,所有的设备文件都在/dev这个目录下。...这两个IDE接口通常被称为IDE1、IDE2,而每个IDE接口连接的两个IDE设备又被分为主设备和从设备。...设备 主设备 从设备 IDE1 /dev/hda /dev/hdb IDE2 /dev/hdc /dev/hdd -SATA设备 以SATA/USB/SCSI为接口的磁盘使用的都是SCSI...PS:Linux中,IDE硬盘最多有59个逻辑分区,5号-63号;SATA硬盘最多有11个逻辑分区,5号-15号。...假设分区1挂载到/下,分区而挂载到/home下,那么/home/chai.txt这个文件的挂载点是哪个? 答:只要逆向寻找第一个挂载点就是这个文件的挂载点。 本题中是/home而不是/
USB设备的一般信息,包括对设备及在设备配置中起全程作用的信息,包括制造商标识号ID、产品序列号、所属设备类号、默认端点的最大包长度和配置描述符的个数等。...标准描述符,描述了如制商、设备名称或序列号等信息。...该宏定义在下 这个宏有两个参数,第一个参数设备名,第二个参数该设备加入到模块中时对应产生的设备搜索符号,这个宏生成了一个名为__mod_pci_device_table...该宏定义在下 这个宏有两个参数,第一个参数设备名,第二个参数该设备加入到模块中时对应产生的设备搜索符号,这个宏生成了一个名为__mod_pci_device_table...)==0) { printk("USB光谱仪设备节点注册成功:/dev/%s ,主设备号:10,次设备号:%d\n", usb_dev_miscdev.name
通过扫描以下目录获取物理节点所有 USB 设备: /sys/bus/usb/devices/usb* /sys/bus/usb/devices/usb*/$busnum-* 从该文件系统收集某一个设备的主要信息如下...Tablet", "speed": "12", "usbpath": "1", "vendid": "0627" } 文件含义# 目录下部分文件含义如下: busnum: 总线号...devnum: 设备号(该总线的第几台设备) speed: 速率 bDeviceClass: 设备类型 idVendor: 设备的生产商ID,由USB设备生产商向USB-IF官方来统一管理和申请 idProduct...: 该生产商生产的产品编号,同一厂商下的不同idProduct代表着该公司不同的产品系列 product: 制造商 manufacturer: 产品 serial: USB 硬件设备序列号 ,例如 0000...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
释放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...endpoint = &interface->endpoint[0].desc; //当前接口下的端点描述符...未完待续~~~~~~~~~~ 下节 依葫芦画瓢 来写出 USB键盘驱动
root@wbyq:/mnt/hgfs/linux-share-dir/linux_c/usb_dev_ubuntu# insmod spectrometer_usb_drv.ko root@wbyq...:/mnt/hgfs/linux-share-dir/linux_c/usb_dev_ubuntu# modinfo spectrometer_usb_drv.ko filename: /...mnt/hgfs/linux-share-dir/linux_c/usb_dev_ubuntu/spectrometer_usb_drv.ko license: GPL author:...root@wbyq:/mnt/hgfs/linux-share-dir/linux_c/usb_dev_ubuntu# dmesg [137747.993110] 总线名称:usb [137747.993111...光谱仪设备节点注册成功:/dev/spectrometer_usb_drv ,主设备号:10,次设备号:53 [137747.993173] usbcore: registered new interface
Linux3.11版本引入了基于configfs的usb gadget configfs。...ID,开发商、产品和序列号字符串写入内核 echo "Setting English strings" mkdir -m 0770 /sys/kernel/config/usb_gadget/g1/...config_desc_type,在g1目录下生成configs目录;随后调用gadget_strings_strings_type,在g1目录下生成strings目录,包含了使用字符串表示的英语ID,开发商、产品和序列号等信息...(gadget_strings, gadget_info); [include/linux/usb/gadget_configfs.h] #define USB_CONFIG_STRINGS_LANG(...gadget configfs代码,分析一下当用户空间配置时,内核中做了什么。
2号进程 内核初始化rest_init函数中,由进程 0 (swapper 进程)创建了两个process init 进程 (pid = 1, ppid = 0) kthreadd (pid = 2,...所有其它的内核线程的ppid 都是 2,也就是说它们都是由kthreadd thread创建的 所有的内核线程在大部分时间里都处于阻塞状态(TASK_INTERRUPTIBLE)只有在系统满足进程需要的某种资源的情况下才会运行...kthread_create_list全局链表中维护的kthread, 当我们调用kernel_thread创建的内核线程会被加入到此链表中,因此所有的内核线程都是直接或者间接的以kthreadd为父进程 2号进程的创建...在rest_init函数中创建2号进程的代码如下 pid = kernel_thread(kthreadd, NULL, CLONE_FS | CLONE_FILES); rcu_read_lock(...kthreadd_task = find_task_by_pid_ns(pid, &init_pid_ns); rcu_read_unlock(); complete(&kthreadd_done); 2号进程的事件循环
本节我们将从linux启动的第一个进程说起,以及后面第一个进程是如何启动1号进程,然后启动2号进程。...0号进程是linux启动的第一个进程,它的task_struct的comm字段为"swapper",所以也成为swpper进程。...我们本节重点关注是0号进程是如何启动的。在linux内核中为0号进程专门定义了一个静态的task_struct的结构,称为init_task。...现在SP指到了内核栈的顶端 最终通过b start_kernel就跳转到我们熟悉的linux内核入口处了。 至此0号进程就已经运行起来了。...所以说所有的内核线程的父进程都是2号进程,也就是kthreadd。 总结: linux启动的第一个进程是0号进程,是静态创建的 在0号进程启动后会接连创建两个进程,分别是1号进程和2和进程。
比如最近我本想安装个linux,选了一款兼容linux的网卡,突然一抽风又想装个黑苹果,结果兼容linux的网卡并不兼容黑苹果,装到一半装不下去了,这就尴尬了。...由于手边没有合适的网卡,因此只好急中生智,“独辟蹊径”地想了个办法来解决上网问题,因为彻底绕开了usb,没想到意外地解决了usb网卡不兼容这个老大难的问题,下面我将简单介绍一下这个万能方法。...解决方法 很多朋友使用usb无线网卡或是因为电脑离路由器太远,插网线不方便,或是有移动需求,但电脑没有无线网卡,因此usb网卡自然而然就成了首选。...但这里有个容易钻牛角尖问题,在usb网卡驱动不了的情况下,我们的目的依然是要上网而不是一定要把usb网卡驱动起来。...我们以水晶WM310R为例,来演示一下具体步骤。
2.1 Beagle USB 12 Analyzer 在USB Host和Device之间的DP/DM上连接一个Fairchild USB1T11A,Fairchild USB1T11A连接到隔离器件...https://desowin.org/usbpcap/ 5 Linux usbmon抓包 5.1 sniff原理 binary格式路径:/dev/usbmonX text格式路径:/sys.../kernel/debug/usb/usbmon 获得usbmon的主设备号:cat /proc/devices 创建binary节点: mknod /dev/usbmon0 c major 0 mknod.../devices – 确定usb的总线号 3)tcpdump -D 4)tcpdump -i usbmon1 -s 128 -w /data/usb_sniff.pcap & 5)killall.../sys/kernel/debug/usb/usbmon 反向查找,查找不包含”1:003:2″(总线号:设备地址:端点号)字符串的其它内容 cat 1u |grep -v “1:003:2”
领取专属 10元无门槛券
手把手带您无忧上云