我正在为带有STM32F070微控制器的USB设备开发固件 . 我使用STM32CubeMX生成了一个裸机(无操作系统)代码库,将设备设置为USB CDC(通信设备类),以便Windows 7,8自动将其检测为VCP(虚拟COM端口), 10.驱动程序详细信息显示它正在使用Windows usbser.sys
驱动程序 .
当我更改USB供应商ID(VID)或产品ID(PID)或制造商字符串时,它仍然可以被Windows 10设备管理器快速检测为USB串行设备,但不会被Windows 7或8检测到.Windows 7和8花费了长时间在Windows Update上搜索驱动程序,然后无法找到 .
如何修改设备固件/描述符以使Windows 7和8主机能够在设备具有USB VID,PID和制造商字符串的供应商特定值时自动为设备安装 usbser.sys
驱动程序?
2 回答
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/
问题是
.inf
文件 . 在win 10中有一个新的(usbser.inf
)在win 7和8中自动加载驱动程序usbser.sys
你必须编写自己的.inf
文件,将你的PID和VID链接到usbser.sys
驱动程序,参见https://msdn.microsoft.com/de-de/library/windows/hardware/ff538820%28v=vs.85%29.aspx和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
在https://msdn.microsoft.com/de-de/library/windows/hardware/dn707976%28v=vs.85%29.aspx中,Do I need to write my own host side USB driver for a CDC device和https://community.nxp.com/thread/301439是win 7和8的示例.inf文件 .