sysfs目录下的usb设备信息浅析--ft232

本文介绍了sysfs虚拟文件系统如何提供USB设备的内核信息,重点分析了USB设备驱动在/sys/bus/usb/drivers/usb目录下的结构,并以ft232芯片为例,详细讲解了如何通过devnum、idProduct和idVendor等文件获取设备编号和厂商信息,以及如何找到对应的设备节点文件名。
 

sysfs是虚拟的文件系统,用于将设备组成层次结构,给用户提供设备的内核信息。

 

sysfs的功能:

  1. 把驱动和设备信息提供给用户空间。

  2. 提供接口。

 

下面分析一下USB的设备信息:

USB的设备驱动信息在/sys/bus/usb/drivers/usb

该目录下的子目录中,用数字开头的目录^[1-9]-[1-9](.[1-9])?,每个目录对应一个usb设备,在这些目录里面可读取到设备的信息,ls /sys/bus/usb/drivers/usb | grep -E '^[1-9]-[1-9](.[1-9])?' 可得到usb设备对应的目录。

#ls /sys/bus/usb/drivers/usb | grep -E '^[1-9]-[1-9](.[1-9])?'

2-1
2-2

进入目录2-1,

# ls
2-1:1.0              bmAttributes        descriptors  manufacturer  subsystem
authorized           bMaxPacketSize0     dev          maxchild      uevent
在处理设备添加操作时,如果遇到错误提示 `Must specify the sysfs path of new devices with --device-added`,这表明系统要求提供一个有效的 sysfs 路径来标识新设备sysfs 是 Linux 内核提供的一个虚拟文件系统,用于导出内核对象(如设备和驱动程序)的信息[^1]。 ### 错误原因 该错误通常出现在尝试通过命令行工具(如 `udevadm` 或特定的虚拟化管理工具)触发设备添加事件时未指定 `--device-added` 参数,或者参数中未包含正确的 sysfs 路径。 ### 解决方案 #### 1. 获取设备sysfs 路径 要解决此问题,首先需要确定目标设备sysfs 路径。可以通过以下方式获取: - **使用 `udevadm` 工具** 运行以下命令查看设备信息: ```bash udevadm info -a -p /sys/class/<device_class>/<device_name> ``` 替换 `<device_class>` 和 `<device_name>` 为实际的设备类别和名称(例如 `net/eth0`)。输出将显示设备的完整 sysfs 路径。 - **手动查找 sysfs 路径** sysfs 文件系统的挂载点通常位于 `/sys`。例如,PCI 设备的路径可能类似于 `/sys/bus/pci/devices/0000:01:00.0`。 #### 2. 使用 `--device-added` 指定 sysfs 路径 一旦获取了设备sysfs 路径,可以在相关命令中使用 `--device-added` 参数指定该路径。例如: ```bash virtio_reset_device(dev); # 示例代码片段中的设备重置操作 [^1] ``` 在命令行中调用设备添加操作时,应类似如下: ```bash your_tool_command --device-added=/sys/bus/pci/devices/0000:01:00.0 ``` #### 3. 自动化脚本处理 为了简化操作,可以编写自动化脚本来动态获取 sysfs 路径并执行命令。例如: ```bash #!/bin/bash # 获取设备sysfs 路径 SYSFS_PATH=$(udevadm info -a -p /sys/class/net/eth0 | grep -m 1 "KERNEL==" | awk '{print $1}' | tr -d '"') # 执行设备添加操作 your_tool_command --device-added=$SYSFS_PATH ``` #### 4. 确保设备状态正确 在执行设备添加之前,确保设备处于可用状态且没有被其他进程占用。可以通过 `ls /sys/bus/<bus_type>/devices` 查看设备是否已正确识别。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值