为什么USB CDC设备在Windows中需要主机驱动程序?

拥抱

如果将CDC设备检测为虚拟COM端口,则开发完整的UMDF Windows驱动程序还有什么好处?

我有一些使用微控制器的嵌入式示例的经验,这些示例都可以与诸如teraterm之类的终端进行通信,或者使用允许cdc或hid功能的专用USB外设。

这些驱动程序是您在使用任何USB设备之前下载并安装的驱动程序吗?尚不清楚通过主机驱动程序可以使用哪些功能。

克利福德

通常在Windows上,USB串行设备的“驱动程序”不过是一个将设备VID / PID映射到Microsoft usbser.sys CDC / ACM驱动程序的inf文件。

Windows 10的最新版本似乎已不再坚持要求每个CDC / ACM都具有VID / PID特定的inf文件,并将为存在CDC / ACM设备的任何设备加载标准驱动程序。

拥有特定于VID / PID的inf文件的优点是,您的设备可以具有供应商特定的“友好名称”,该名称可以在应用程序中用于更轻松地标识您的设备,而不仅仅是作为通用的“ USB串行设备”出现。

直到最近,Microsoft的usbser.sys驱动程序(和Linux和Mac OS都没有问题)的一个问题是,如果断开USB设备的连接,即使应用程序打开了COM端口,驱动程序也会被卸载,并且该应用程序必须关闭并重新打开。重新连接时要恢复的端口。我以前曾使用过一个自定义驱动程序(由第三方提供),如果应用程序打开了端口,该驱动程序不会卸载,因此,当重新连接USB电缆时,数据连接将像平常一样继续正常进行。 RS-232电缆。但是,再次在Windows 10的最新版本中,我注意到usbser.sys在任何情况下都表现出这种现象。

请注意,当您确实提供自己的驱动程序文件,甚至只是提供自定义的inf文件时,都将需要进行WHQL测试,才能在Windows 10上允许您的设备运行,或者在没有警告的情况下加载较早版本的设备。为此,您将需要一个USB.org分配的VID,一个扩展验证代码签名证书,以及执行测试的工具和设施,或付钱给测试机构进行测试。所有这些都变得有些昂贵,并且对于小批量,低价值或非商业产品可能是禁止的。

微软一度也为WHQL处理提交收费,但不再这样做。但是,这是很少的组合,因为与此同时,他们更改为要求提供EV证书,并停止了以前用于低成本证书的交易。

WHQL资格证书的优点是Windows Update将提供您的驱动程序。

如果您使用的是USB串行桥接芯片,而不是您自己的USB堆栈和USB控制器,那么有一个成本更低的解决方案。这些芯片可以使用您自己的VID / PID和描述符进行定制,并且供应商现有的WHQL可以与您的设备相关联,因此您可以免费获得自己驱动程序的所有优势。大多数供应商甚至允许您使用他们的VID并为您分配唯一的PID,这样您就可以避免USB.org的费用。我已经在Prolific和FTDI设备上使用了此路由;它是迄今为止最具成本效益的解决方案。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么某些设备在Linux上不需要USB驱动程序,而在Windows上却需要USB驱动程序?

来自分类Dev

对于外部USB设备,为什么Linux除了驱动程序外还需要固件?

来自分类Dev

为什么需要有效的驱动程序才能通过 USB 为设备充电?

来自分类Dev

为什么不能单独初始化struct成员字段?(在USB设备驱动程序中)

来自分类Dev

Windows 7上的USB设备驱动程序安装问题

来自分类Dev

为什么设备驱动程序不存储在设备本身中?

来自分类Dev

Windows设备驱动程序中的pdo和fdo有什么区别?

来自分类Dev

Windows设备驱动程序中的pdo和fdo有什么区别?

来自分类Dev

VirtualBox USB-我也应该在主机上安装USB设备的驱动程序吗?

来自分类Dev

从USB 3.0驱动器安装时,为什么Windows 7会要求其他驱动程序?

来自分类Dev

“其他驱动程序”中的此设备是什么?

来自分类Dev

为什么加载的模块不是设备的驱动程序?

来自分类Dev

为什么Linux中的文件系统未归类为设备驱动程序?

来自分类Dev

为什么使用libusb需要分离内核驱动程序?

来自分类Dev

为什么Windows驱动程序工具包中没有WDM内核模式驱动程序模板?

来自分类Dev

不同的PIC微控制器(USB CDC)安装不同的驱动程序或共享相同的CDC驱动程序

来自分类Dev

需要为USB外围设备编写驱动程序吗?

来自分类Dev

需要哪些设备驱动程序才能完全识别 USB 键盘?

来自分类Dev

为什么cdc_ether驱动程序无法正常工作?

来自分类Dev

USB驱动程序在Windows 8中停止工作

来自分类Dev

在用户写入的设备驱动程序中添加所有USB设备

来自分类Dev

为什么需要将ISO文件刻录到USB中?

来自分类Dev

为什么驱动程序从Windows的不同版本更改?

来自分类Dev

Windows为什么不能总是自动安装驱动程序?

来自分类Dev

为什么在接收数据时USB CDC挂起?

来自分类Dev

为什么在接收数据时USB CDC挂起?

来自分类Dev

带有 Windows 驱动程序的串行 USB 设备。想在linux下使用

来自分类Dev

为什么在MongoDB Java驱动程序中忽略WriteConcern?

来自分类Dev

为什么USB闪存驱动器比SSD慢得多?

Related 相关文章

  1. 1

    为什么某些设备在Linux上不需要USB驱动程序,而在Windows上却需要USB驱动程序?

  2. 2

    对于外部USB设备,为什么Linux除了驱动程序外还需要固件?

  3. 3

    为什么需要有效的驱动程序才能通过 USB 为设备充电?

  4. 4

    为什么不能单独初始化struct成员字段?(在USB设备驱动程序中)

  5. 5

    Windows 7上的USB设备驱动程序安装问题

  6. 6

    为什么设备驱动程序不存储在设备本身中?

  7. 7

    Windows设备驱动程序中的pdo和fdo有什么区别?

  8. 8

    Windows设备驱动程序中的pdo和fdo有什么区别?

  9. 9

    VirtualBox USB-我也应该在主机上安装USB设备的驱动程序吗?

  10. 10

    从USB 3.0驱动器安装时,为什么Windows 7会要求其他驱动程序?

  11. 11

    “其他驱动程序”中的此设备是什么?

  12. 12

    为什么加载的模块不是设备的驱动程序?

  13. 13

    为什么Linux中的文件系统未归类为设备驱动程序?

  14. 14

    为什么使用libusb需要分离内核驱动程序?

  15. 15

    为什么Windows驱动程序工具包中没有WDM内核模式驱动程序模板?

  16. 16

    不同的PIC微控制器(USB CDC)安装不同的驱动程序或共享相同的CDC驱动程序

  17. 17

    需要为USB外围设备编写驱动程序吗?

  18. 18

    需要哪些设备驱动程序才能完全识别 USB 键盘?

  19. 19

    为什么cdc_ether驱动程序无法正常工作?

  20. 20

    USB驱动程序在Windows 8中停止工作

  21. 21

    在用户写入的设备驱动程序中添加所有USB设备

  22. 22

    为什么需要将ISO文件刻录到USB中?

  23. 23

    为什么驱动程序从Windows的不同版本更改?

  24. 24

    Windows为什么不能总是自动安装驱动程序?

  25. 25

    为什么在接收数据时USB CDC挂起?

  26. 26

    为什么在接收数据时USB CDC挂起?

  27. 27

    带有 Windows 驱动程序的串行 USB 设备。想在linux下使用

  28. 28

    为什么在MongoDB Java驱动程序中忽略WriteConcern?

  29. 29

    为什么USB闪存驱动器比SSD慢得多?

热门标签

归档