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

标签 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 桌面驱动程序,其中所有的管道都已完成,我们只需要添加与我们的板通信的代码并公开相关的 IOControls。也许将尽可能多的代码移动到用户空间库中。

每个选项的优点和缺点是什么?您会推荐其他方法吗?

最佳答案

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

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

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

总而言之,我认为我们做出了正确的选择,我很高兴我们能够在需要时(希望)以非常少的努力将我们的“驱动程序”移植到 Windows 桌面。

关于windows - 适用于 Windows CE 和 Windows 桌面的 PCIe 驱动程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7444736/

相关文章:

html - <a href ="..."/> 的绝对路径是如何确定的?

c++ - SetPixelFormat() 中的第三个参数对于 OpenGL 上下文创建有什么意义?

driver - 三星 Galaxy S3 没有出现在 Eclipse 中,而是出现在设备管理器中?

odbc - Foxpro 是否有新的 ODBC 选项?

.net - 您能解释一下为什么 DirectoryInfo.GetFiles 会产生这个 IOException 吗?

windows - CasperJS 脚本永远不会退出

c++ - 如何使用 GetSystemPowerStatusEx2 API 在 Wince 中表示电池温度值?

c# - Windows CE 控件的设计是否没有自动化支持?

Windows CE 上的 C# .NET 3.5 CF,更改 DataGrid 中的行背景颜色

c - 操作系统会向设备请求中断吗?