2

我正在为带有STM32F070微控制器的 USB 设备开发固件。我使用STM32CubeMX生成了一个裸机(无操作系统)代码库,将设备设置为 USB CDC(通信设备类),以便 Windows 7、8 自动将其检测为 VCP(虚拟 COM 端口), 10. Driver Details 显示它正在使用 Windowsusbser.sys驱动程序。

STM32CubeMX 中的 USB CDC 配置

在 Windows 设备管理器中检测到 USB 串行设备

当我更改 USB 供应商 ID (VID) 或产品 ID (PID) 或制造商字符串时,Windows 10 设备管理器仍会快速将其检测为 USB 串行设备,但 Windows 7 或 8 不会。Windows 7 和 8 花费很长时间在 Windows 更新中搜索驱动程序,然后找不到驱动程序。

usbser.sys当设备具有 USB VID、PID 和制造商字符串的供应商特定值时,如何修改设备固件/描述符以使 Windows 7 和 8 主机能够自动安装设备驱动程序?

4

2 回答 2

4

Windows 10 附带一个名为 usbser.inf 的新驱动程序,它将匹配符合 USB CDC ACM 规范的设备,并为它们加载 usbser.sys 驱动程序。

要让您的 USB CDC ACM 设备在旧版本的 Windows 上工作,您需要自己提供一个 INF 文件,告诉 Windows 在看到具有您的供应商 ID 和产品 ID 的 USB 设备时加载 usbser.sys。对于 Windows 7、Vista 和 XP,这只是编写 INF 文件并将其分发给客户的简单问题。对于 Windows 8 及更高版本,您需要购买代码签名证书,然后对 INF 文件进行签名(或查看 zadig 和 libwdi 等软件实用程序,它们可以让您绕过签名检查)。

请注意,签名不同于 WHQL。获得签名证书后,您可以自己签署驱动程序,无需任何等待时间或 Microsoft 的任何批准。

下面是一个使用 usbser.sys 的 INF 文件示例:

https://github.com/pololu/a-star/blob/master/drivers/a-star.inf

我在这篇文章中写了很多关于如何签署驱动程序包的内容:

http://www.davidegrayson.com/signing/

于 2017-01-09T16:16:45.693 回答
1

问题是.inf文件。usbser.inf在win usbser.sys10.infusbser.sys,有一个新的( de/library/windows/hardware/ff538820%28v=vs.85%29.aspxhttps://msdn.microsoft.com/de-de/library/windows/hardware/dn707976%28v=vs.85%29。 aspx

在 Windows 8.1 和更早版本的操作系统中,当 USB 转串口设备连接到计算机时,不会自动加载 Usbser.sys。要加载驱动程序,您需要编写一个引用调制解调器 INF (mdmcpq.inf) 并包括 [Install] 和 [Needs] 部分的 INF。这些部分是实例化服务、复制收件箱二进制文件以及注册应用程序查找设备并与之对话所需的设备接口 GUID 所必需的。该 INF 将“Usbser”指定为设备堆栈中的较低过滤器驱动程序。

来源:https ://msdn.microsoft.com/de-de/library/windows/hardware/dn707976%28v=vs.85%29.aspx

https://msdn.microsoft.com/de-de/library/windows/hardware/dn707976%28v=vs.85%29.aspx中, 我是否需要为 CDC 设备和 https编写自己的主机端 USB 驱动程序://community.nxp.com/thread/301439是 win 7 和 8 的示例 .inf 文件。

于 2017-01-09T06:16:19.117 回答