适用于Windows CE和Windows桌面的PCIe驱动程序

时间:2011-09-16 12:35:44

标签: windows windows-ce driver pci

我需要一些建议来开发自定义PCIe驱动程序。驱动程序必须同时支持Windows CE 6.0和Windows桌面(准备就绪时为xp,7和8)。

我们有很多为Windows CE开发驱动程序的经验,但对于Windows桌面没有。我很确定我们可以开发一个好的,可靠的Windows CE驱动程序,但我认为如果没有一些外部帮助我们将无法为Windows桌面做同样的事情。我认为我们有两种选择:

1)使用现有的驱动程序框架,例如Jungo WinDriver,它允许我们开发一次驱动程序并编译到多个平台。这也具有以下优点:大部分开发将在用户空间中,因此它应该使开发过程更简单。

2)获得一些外部帮助来设置一个好的Windows桌面驱动程序,其中所有的管道都已完成,我们只需要添加与我们的板通信的代码并公开相关的IOControl。也许尽可能将代码移动到用户空间库中。

每种选择的好处和缺点是什么?你会推荐其他方法吗?

2 个答案:

答案 0 :(得分:2)

根据刚才的要求,在我问起原来的问题后,我会尝试分享我的经验超过一年。我们决定使用Windriver,但到目前为止我们只编写了Windows CE 6.0的驱动程序,因此我无法对跨平台支持发表评论。

在Windows CE 6.0上使用Windriver既有优点也有缺点。这意味着我们所有的驱动程序代码现在都在库中,因此开发和调试更容易(与需要Platform Builder的标准驱动程序相比)。所以从发展的角度来看它一直很好。表现也很好。在开始学习Windriver API以及如何使用它时会有一些开销,特别是对于DMA和中断,但我认为它不比学习原始Windows CE 6.0 PCI API更糟糕。

我能想到的唯一真正的缺点是,与我们使用Windriver创建的库相比,“真正的”驱动程序在多个进程之间更容易共享。在我们的应用程序(具有一个进程的嵌入式系统)中,它实际上不是一个问题,但是创建在主进程后面的硬件上运行的调试/开发实用程序更加困难。我们已经在其他平台上使用该方法进行测试/调试,但这里做起来有点复杂。

总结一下,我认为我们做出了正确的选择,我很高兴我们有能力将我们的“驱动程序”移植到Windows桌面(希望)在我们需要的时候付出很少的努力。

答案 1 :(得分:1)

使用Windriver开发Windows / Linux驱动程序后,我想回答这个问题。

如果使用驱动程序的应用程序也将由您编写,我更喜欢Windriver。既然你提到你正在开发一个自定义驱动程序,我假设你也要自己编写应用程序。在这种情况下,应用程序不需要在Windows和Windows CE之间进行太多更改,因为大多数驱动程序函数都将由Windriver本身生成。这就像调用标准库函数而不是使用IOCTL等。

过去,我使用windriver生成基本的驱动程序接口代码,并开发了使用windriver生成的代码的应用程序(主要是诊断应用程序)。经过很少的修改,我们能够使用Windows和Linux之间的驱动程序和应用程序。我不是主张使用Jungo,但它很容易使用。

由于问题是要求提出建议,很难提供准确的答案,我只是在分享我的反馈意见。