USB学习笔记三之lsusb

2021-07-07  本文已影响0人  浙南旧事
  1. 拓扑结构

这里以一个具体的例子来说明lsusb -t的输出。在一台主控上插入一个u盘,一个键盘及一个脚踏板,主要的拓扑结构为:

       root hub4
           |
          hub
           |
        dev(u盘)

       root hub3
           |
          hub
           |
 dev(脚踏板) dev(键盘)
  1. sysfs

lsusb其实也是通过解析sysfs来获取usb信息的,上述例子的sysfs内容为:

/sys/bus/usb/devices/
├── 1-0:1.0
├── 2-0:1.0
├── 3-0:1.0
├── 3-1
├── 3-1:1.0
├── 3-1.1
├── 3-1.1:1.0
├── 3-1.1:1.1
├── 3-1.2
├── 3-1.2:1.0
├── 4-0:1.0
├── 4-1
├── 4-1:1.0
├── 4-1.4
├── 4-1.4:1.0
├── usb1
├── usb2
├── usb3
└── usb4
  1. lsusb

lsusb -t的输出为:

lsusb -t
/:  Bus 04.Port 1: Dev 1, Class=root_hub, Driver=xhci-hcd/1p, 5000M
    |__ Port 1: Dev 2, If 0, Class=, Driver=hub/4p, 5000M
        |__ Port 4: Dev 3, If 0, Class=, Driver=usb-storage, 5000M          // u盘
/:  Bus 03.Port 1: Dev 1, Class=root_hub, Driver=xhci-hcd/1p, 480M
    |__ Port 1: Dev 2, If 0, Class=, Driver=hub/4p, 480M
        |__ Port 1: Dev 5, If 0, Class=, Driver=usbhid, 1.5M                // 脚踏板
        |__ Port 1: Dev 5, If 1, Class=, Driver=usbhid, 1.5M                // 脚踏板
        |__ Port 2: Dev 3, If 0, Class=, Driver=usbhid, 1.5M                // 键盘
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci-hcd/1p, 5000M
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci-hcd/1p, 480M

可以看到,每棵总线树中,除了首行的root hub,其余都是一行表示一个接口,也呈现了拓扑结构中的level层次。
首行root hub的port是无意义的,lsusb的代码里直接指定成了1,而其余行的port,代表该设备所挂接的上级hub的物理port。设备号(Dev)是每棵总线树独立分配的,一般root hub是1,其余设备再依次分配。接口号(If)的含义也是明显的(注意首行root hub没有这个信息)。对于hub,Driver末尾的1p,4p,分别表示该hub有1个,4个port。

上一篇 下一篇

猜你喜欢

热点阅读