DFU 介绍
购买了 USB 设备的用户需要能够在制造商提供的改进版本中升级这些设备的固件。DFU就是完成该任务的机制。任何类型的 USB 设备都可以通过支持本文档中指定的要求来利用此功能。
本文档重点介绍为已在现场部署的设备安装产品增强功能和补丁。固件升级功能的其他潜在用途超出了本文档的范围。
由于设备同时执行 DFU 操作及其正常运行时活动是不切实际的,因此这些正常活动必须在 DFU 操作期间停止。这样做意味着设备必须更改其操作模式;即,打印机在进行固件升级时不是打印机;它是一个 PROM programmer。但是,支持 DFU 的设备无法自行更改其操作模式。需要外部(人工或主机操作系统)干预。
设备的VID、PID 和序列号(见USB设备描述符一节)可用于形成主机操作系统用来唯一标识设备的标识符。 但是,某些操作系统可能使用仅由设备报告的VID和PID来确定要加载哪些驱动程序,而与设备报告的设备类代码无关(Windows更多的是使用USB设备类型生成的兼容ID来安装系统自带的驱动)。主机操作系统通常不期望设备更改类。)因此,为确保仅加载 DFU 驱动程序,考虑在枚举 DFU 描述符集时更改设备的 idProduct 字段。 这确保如果操作系统只是将供应商 ID 和产品 ID 与特定驱动程序匹配,则将加载 DFU 驱动程序。
本文档不尝试指定供应商如何更改设备的产品 ID,只是建议添加一个、设置高位或使用 FFFFh 都是有效的可能性。供应商可以使用他们选择的任何方案。
不过一般的厂商的4位PID,一般高4位为0时为正式产品,当高四位为F时为DFU设备。如某一些设备正常工作时其PID为0x0369,而在DFU模式下设备的PID更改为0xF369。