Linux usb子系统(一)(2)

struct usb_device_descriptor
--263-->设备类别
--264-->设备子类
--265-->通信协议
--267-->销售商
--268-->产品ID
--272-->序列号

usb_config_descriptor //include/uapi/linux/usbch9.h 314 struct usb_config_descriptor { 315 __u8 bLength; 316 __u8 bDescriptorType; 317 318 __le16 wTotalLength; 319 __u8 bNumInterfaces; 320 __u8 bConfigurationValue; 321 __u8 iConfiguration; 322 __u8 bmAttributes; 323 __u8 bMaxPower; 324 } __attribute__ ((packed)); usb_interface_descriptor //include/uapi/linux/usbch9.h 351 struct usb_interface_descriptor { 352 __u8 bLength; 353 __u8 bDescriptorType; 354 355 __u8 bInterfaceNumber; 356 __u8 bAlternateSetting; 357 __u8 bNumEndpoints; 358 __u8 bInterfaceClass; 359 __u8 bInterfaceSubClass; 360 __u8 bInterfaceProtocol; 361 __u8 iInterface; 362 } __attribute__ ((packed)); usb_endpoint_descriptor //include/uapi/linux/usbch9.h 369 struct usb_endpoint_descriptor { 370 __u8 bLength; 371 __u8 bDescriptorType; 372 373 __u8 bEndpointAddress; 374 __u8 bmAttributes; 375 __le16 wMaxPacketSize; 376 __u8 bInterval; 377 378 /* NOTE: these two are _only_ in audio endpoints. */ 379 /* use USB_DT_ENDPOINT*_SIZE in bLength, not sizeof. */ 380 __u8 bRefresh; 381 __u8 bSynchAddress; 382 } __attribute__ ((packed)); usb_device //include/linux/usb.h 510 struct usb_device { 511 int devnum; 512 char devpath[16]; 513 u32 route; 522 struct usb_device *parent; 523 struct usb_bus *bus; 524 struct usb_host_endpoint ep0; 526 struct device dev; 528 struct usb_device_descriptor descriptor; 529 struct usb_host_bos *bos; 530 struct usb_host_config *config; 532 struct usb_host_config *actconfig; 557 char *product; 558 char *manufacturer; 559 char *serial; 561 struct list_head filelist; 563 int maxchild; 568 unsigned long active_duration; 569 584 };

struct usb_device
--522-->这个设备的父设备, 通常就是usb塔形结构的上一个节点设备
--523-->所属的总线是usb总线
--526-->这是一个device, 会挂接到相应的链表
--528-->这个软件device结构包含的硬件device对象
--530-->软件device拥有的所有软件config对象, 对应硬件device拥有的所有硬件config
--531-->当下, 这个device正在使用的config
--557-->产品名
--558-->产品制造商
--559-->产品序列号
--561-->在这个设备上打开的usbfs文件的链表节点
--563-->子设备的最大数量

urb_host_config //include/linux/usb.h 275 struct usb_host_config { 276 struct usb_config_descriptor desc; 278 char *string; /* iConfiguration string, if present */ 282 struct usb_interface_assoc_descriptor *intf_assoc[USB_MAXIADS]; 286 struct usb_interface *interface[USB_MAXINTERFACES]; 290 struct usb_interface_cache *intf_cache[USB_MAXINTERFACES]; 292 unsigned char *extra; /* Extra descriptors */ 293 int extralen; 294 };

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/bb9ababfed16e313172621482d0b1db4.html