2009-10-13 103 views
11

我应该如何处理为Windows实现USB设备驱动程序?我应该如何考虑到不同版本的Windows e.g: - Windows XP中 - Windows Vista中 - Windows 7的如何实现Windows的USB设备驱动程序?

是否有开源的解决方案,可以作为一个起点?我是Windows驱动程序开发的总新手。

我们有一个带有USB设备端口的嵌入式设备,我们希望在不牺牲数据吞吐量的情况下尽可能实现从应用层到设备的低延迟通信。实际传输的数据是ADC/DAC数据。基本上,我们需要尽可能快地将数据传输到Windows机器。

回答

1
+0

与总新手我不是说那个水平的新手;-) – 2009-10-13 21:11:39

+0

对不起,我把字面上总新手。下面的答案对于你所在级别的人是非常详细的。 – 2009-10-13 21:45:25

12

我们需要更多的信息,有关设备,以你指出正确的方向,但这里有几个步骤,让你开始:

  • 寄存器与微软连接,所以你可以下载Windows驱动程序工具包
  • osr-online注册,因为你会发现伟大的文章,大量的信息,并专门为Windows驱动程序专用的新闻组 - 这个地方是一个金矿
  • 购买Developing Drivers with WDF,这将有助于您理解Windows上的驱动程序开发并为您阅读OSR和Microsoft的文章提供良好的基础
  • 希望您可以使用UMDF(用户模式驱动程序),就像您可以使用C++一样写COM代码。如果你正在做任何需要内核空间的USB ......你在下一年有很多阅读和学习的东西!

要回答你的问题的版本,驱动程序工具包有工具,将帮助您管理创建不同的驱动程序。如果你编写了一个好的驱动程序,它应该可以在所有三个操作系统上运行,没有问题,差异只会在配置区域(不是二进制)。

基本上,这取决于你的设备有多复杂。你想写什么类型的驱动程序?文件系统? MP3播放器?相机?调制解调器?

如果最终不得不编写内核模式驱动程序,请告诉我,我可以为您指出一些好的文章,而不是。

我还应该补充一下,大约5000美元,你可以购买WinDriver的许可证,这是一个将驱动程序开发中的所有困难内容都取出来的工具。您可以使用C++或C#用户模式代码与您的设备自定义生成的驱动程序进行通信。如果您的期限很紧,这就是要走的路。

+0

我们拥有带USB设备端口的嵌入式设备,我们希望在不牺牲数据吞吐量的情况下,实现从应用层到设备的低延迟通信。 – 2009-10-13 21:25:29

+0

延迟将严重依赖于您的硬件的USB控制器。如果我是你,我会首先把UMDF(用户模式)测试驱动放到一起,看看它是否满足你的延迟需求。忘掉漂亮的界面,不要做什么,只需要实现I/O功能以及一个用于推拉数据的Win32测试应用程序。有了我上面提到的这本书,你应该可以在一周内准备好基本的司机。 UMDF的优势在于它很容易实现并且易于调试,因为您不需要内核调试器。如果UMDF不削减它,你可以随KMDF一起去。 – 2009-10-14 01:34:54

1

如果您对设备端有某种形式的控制权,让它实现Windows已经为其提供驱动程序的界面。例如。 USB HID类(字面上是人类输入设备,但人和输入都不是强制性的)已经具有Windows驱动程序,并且顶部有一个合理的Win32 API。尽管如此,你不会获得任何接近480 Mbps的数据速率。

+0

同意,在设备端实施HID是避免在Windows端(或其他操作系统)上开发驱动程序的最佳方法。 – kenny 2012-11-08 12:46:26

2

你可以看看的的libusb * here *窗口的变体。官方的libusb网站和网络上有许多编程语言的包装。

+0

请注意,libusb-win32已经过时了,并且支持crossplatform [libusb](http://libusb.info/)。 – 2017-08-09 21:31:35