USB 设备描述符、配置描述符、接口描述符等均存储在 USB 设备的固件中,通常位于设备的 ROM 或 Flash 存储器中。这些描述符是 USB 设备的重要组成部分,用于向主机提供设备的详细信息。当 USB 设备连接到主机(如计算机)时,主机通过 USB 总线与设备通信,并请求这些描述符以了解设备的功能和配置。具体来说,USB 设备描述符并不存储在主机的操作系统或文件系统中,而是保存在设备内部的非易失性存储器(例如 EEPROM 或闪存)中。
以下是这些描述符的存储和访问方式:
1. 设备描述符(Device Descriptor)
-
存储位置:设备的固件中。
-
内容:包含设备的基本信息,如厂商 ID(Vendor ID)、产品 ID(Product ID)、设备版本号、设备类别等。
-
访问方式:主机通过控制传输(Control Transfer)发送
GET_DESCRIPTOR
请求,指定描述符类型为设备描述符(DEVICE
),设备从固件中读取并返回。
2. 配置描述符(Configuration Descriptor)
-
存储位置:设备的固件中。
-
内容:描述设备的配置信息,包括配置值、供电模式、最大功耗等。配置描述符后面通常还包含接口描述符和端点描述符。
-
访问方式:主机通过控制传输发送
GET_DESCRIPTOR
请求,指定描述符类型为配置描述符(CONFIGURATION
),设备从固件中读取并返回。
3. 接口描述符(Interface Descriptor)
-
存储位置:设备的固件中,通常紧跟在配置描述符之后。
-
内容:描述设备的接口信息,包括接口编号、接口类别、协议、端点数量等。
-
访问方式:主机通过控制传输请求配置描述符时,设备会返回完整的配置信息,其中包含接口描述符。
4. 端点描述符(Endpoint Descriptor)
-
存储位置:设备的固件中,通常紧跟在接口描述符之后。
-
内容:描述端点的信息,包括端点地址、传输类型、最大包大小等。
-
访问方式:主机通过控制传输请求配置描述符时,设备会返回完整的配置信息,其中包含端点描述符。
总结
-
所有描述符都存储在 USB 设备的固件中(ROM 或 Flash)。
-
主机通过控制传输请求描述符时,设备会从固件中读取相应的描述符并返回给主机。
-
描述符的层次结构为:设备描述符 → 配置描述符 → 接口描述符 → 端点描述符。
这些描述符是 USB 设备与主机通信的基础,主机通过解析这些描述符来正确识别和配置设备。