嵌入式开发者应该如何开发Windows设备驱动

ZDNet软件频道 时间:2003-10-27 作者:ZDNet China |  我要评论()
本文关键词:embedded
你的公司可能会希望在PC平台上实现自己的特色硬件技术,一块专用的PCI卡恰好可以实现这个功能。那么编写Windows设备驱动这一任务就很有可能落在你的肩上。
本文译自Builder.com,未经许可请勿转载你的公司可能会希望在PC平台上实现自己的特色硬件技术,一块专用的PCI卡恰好可以实现这个功能。那么编写Windows设备驱动这一任务就很有可能落在你的肩上。

你觉得不会有什么问题,是么?你懂得底层的软件开发和PCI接口,因此编写几个来检测卡、读写寄存器和端口,建立DMA传输,可能还要处理一两个中断的函数供应用程序调用并不困难。

事实上,情况并没有那么简单。你可能需要自己手工编写一个嵌入式操作系统或者借助于一个已有操作系统,它应该能够满足你的要求。现在,你必须遵守Windows的规则。如果你不理解这些规则,那么你的设备驱动很有可能是不可靠的,甚至根本就无法工作。

做出你的选择

如果你的公司没有开发设备驱动的经验,一个简单的选择就是把它外包有这方面经验的公司。

外包有它自己的风险和缺点。因此,当你的开发任务期限很紧时,你需要把外包的风险和自行开发的难度综合衡量。

如果你选择自己开发,那么请参考下面的资料

如果外包不是你的选择,那么请在工作之前,就武装好自己。你需要理解基本的Windows驱动体系和Windows驱动模型(Windows Driver Model,WDM),它提供了简化各种设备驱动类型的统一模型。

Windows DDK

Windows设备开发者套件(Device Developers Kit,DDK)是你最重要的资源。它包含了技术信息、例子代码、头文件和许多其它丰富内容。

得到DDK的途径有两种。你可以向微软公司定购Windows DDK光盘,也可以从MSDN中得到它(DDK是MSDN的一部分)。

有关Windows驱动体系的书籍

Windows驱动体系是一个非常大的课题,因此我建议你购买有关它的几本书。如果你编写的是Windows 2000和XP核心模式下的驱动,我推荐如下书籍:

  • Peter Viscarola和Anthony Mason合著的《Windows NT Device Driver Development》
  • Jerry Lozano与Art Baker合著的《The Windows 2000 Device Driver Book》
  • Walter Oney编著的《Programming the Microsoft Windows Driver Model》

如果是Windows 98/95 VxD编程,我推荐:

  • Karen Hazzah编著的《Writing Windows VxDs and Device Drivers》
  • Walter Oney编著的《Systems Programming for Windows 95》
商业库

下面是用于简化Windows驱动开发和调试的商业库和工具套件:

在线资源

除了微软网站,OSR网站也提供了许多有关驱动编程的信息和技巧。新闻组(如comp.os.ms?windows.programmer.nt.kernel?mode)同样可以提供许多技巧和建议。最后,你还可以考虑搜索一下专门讨论Windows驱动特定问题的邮件列表和邮件组。

你应该支持什么

只要有可能,你就应该支持最新的Windows 2000和Windows XP操作系统。早期Windows的设备驱动是基于较老的VxD技术的,它要求你编写、调试和测试单独的驱动。(注意:也有例外情况。例如,Windows 98支持WDM驱动的某些类,而它们可以作为Windows 2000以及后续版本的源代码。)


本文作者David Brenan是一名具有15年以上工作经验的独立嵌入式系统开发人员。他的作品包括设计过获奖的专业数字音频产品。




百度大联盟认证黄金会员Copyright© 1997- CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号 京ICP备09041801号-159
京公网安备:1101082134