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

All*_*sen 32 windows driver windows-ce pci

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

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

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

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

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

All*_*sen 2

按照不久前的要求,在我提出最初的问题一年多后,我将尝试分享我的经验。我们决定使用Windriver,但到目前为止我们只编写了Windows CE 6.0的驱动程序,所以我无法评论跨平台支持。

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

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

总而言之,我认为我们做出了正确的选择,并且我很高兴我们能够在需要时轻松地将我们的“驱动程序”移植到 Windows 桌面(希望如此)。