Linux USB 系统:从电源管理到通用驱动的全面解析
1. 电源管理与 USB 系统概述
电源管理对于嵌入式系统,尤其是电池供电的系统至关重要。在 Linux 环境中,理解 Linux 电源管理框架的数据结构是掌握 Linux USB 电源管理框架的基础。通过对这些数据结构的深入研究,我们能够更好地理解 USB 系统在电源管理方面的工作机制。
2. USB 集线器基础
USB 标准允许主机连接多达 127 个物理设备,但通常主机端口数量有限。USB 集线器设备模型的出现解决了这一问题,它允许主机扩展端口以连接多个设备。Linux USB 框架将 USB 集线器作为 usbcore 模块的一部分,并为宿主控制器提供虚拟根集线器框架。
2.1 关键数据结构
- struct usb_hub_descriptor:定义在 drivers/usb/core/hub.h 中,包含集线器描述符的相关信息,如描述符长度、类型、端口数量等。
struct usb_hub_descriptor { __u8 bDescLength; __u8 bDescriptorType; __u8 bNbrPorts; __le16 wHubCharacteristics; __u8 bPwrOn2PwrGood; __u8 bHubContrCurrent; __u8 DeviceRemovable[(USB_MAXCHILDREN + 1 + 7) / 8];