您的位置:首页 > 其它

Windows下PCI9054驱动程序开发环境搭建及常见问题解决

2015-10-08 13:25 591 查看
1开发环境配置

Windows XP,英文原版Visual C++6.0,WinXP_DDK, DriverStudio 3.2

2准备工作

安装driverstudio.3.2,里面有两个文件SN.txt和 compuware.dat,前者包含序列号,后者是证书文件,这两个文件在安装过程中会用到。

3安装和配置

软件的安装顺序:Windows XP --> VC6.0 --> WinXP_DDK -> DriverStudio3.2

注意:

a.安装VC时最后一步记得选上Register这个选项;

b. DDK安装目录不允许有空格,汉语目录;安装DDK后,要设置系统环境变量。变量名为DDKROOT,变量值为安装目录。如D:\WINDDK\2600

c.安装DDK时一定要把例子安装(建议安装全部模块),否则编译vdwlibs.dsw时会报如下的错:

vdw_wdm.lib - 1 error(s), 0 warning(s)

然后打开引起错误的文件,发现:

#error The file is from the DDK at src\wdm\hid\inc. Install DDK HID samples to install hidport.h. Or update INCLUDE path for hidport.h in the DDK!

这表明安装WinXP_DDK的时候没有安装实例。

3.1启动vc6,然后进行简单的配置:菜单DriverStudio菜单下的DDK
Build Settings,在弹出的对话框中选择已经安装的DDK目录(比如我的是D:\WINDDK\2600),在Windows DDK compiler
Options中选择"Enable only for Driver Studio"。VC6.0-->Tools-->Options,点击"Directories"选项卡:

3.2修改VC的lib目录和include目录。在VC中选择“Tools”|“Options”,在弹出的对话框中选择“Directories”选项卡。在“Show
directories for”下拉菜单选择“Include files”菜单。添加“D:\WINDDK\2600\INC\W2K”和“D:\WINDDK\2600\INC\DDK\WDM\W2K”,并将这两个目录置于最上。我的目录“D:\WINDDK\2600”改成自己安装的目录。这里应该选择W2K子目录,DDK中还会有相应的XP子目录。但因为XP驱动编译时候需要高版本的VC编译器,所以这里用的都是W2K子目录,包括后面讲到的WDM驱动程序也是这样子的。它编译的代码完全可以应用于Windows2000和Windows
XP操作系统。

3.3在“Show directories for”下拉菜单中选择“Library files”菜单,添加目录“D:\WINDDK\2600\LIB\W2K\I386”,并置于最上端。

4编译适合本机使用的库文件(若用DDK编程,此处跳过)

进入VC菜单File-->Open Workspace;

(打开位于DriverStudio3.2安装目录的\DriverWorks\Source\vdwlibs.dsw,

我的是D:\ProgramFiles\Compuware\DriverStudio\DriverWorks\source目录下)-->单击VdwLib files然后右键设为活动工程(如图1)-->进入菜单Build-->batch Build,点击“Select x86"按钮只选中全部的32位库(我的电脑是32位的。注意:对于32位的电脑一定不要选中64位的库,否则后面编译会出错)-->点击按
钮"Rebuild AlL”开始编译。



图1VdwLib files工程设置
注:如果出现无法打开文件这类的错误,一般都是DDK Build Settings指向不对,或安装顺

序有误,或者你在32位机器上选中了64位库。

5编译一个DriverStudio自带的实例

启动vc6,点击菜单 File-->Open Workspace,打开项目文件C:\Program Files\Compuware\DriverStudio\DriverWorks\Examples\wdm\hellowdm \HelloWdm.dsw,然后编译,如果没有报错,在其目录中找到hellowdm.sys说明一些列配置成功。别高兴的太早,还会遇到一系列各种问题。接下来一个一个解决。

6开始自己驱动程序

6.1在VC6.0的界面下,点击菜单DriverStudio-->Driver wizard,此后系统会一步一步引导你完成设置,最后自动生产的驱动程序框架。

6.2设置好后将生成驱动文件,然后用VC6.0进行编译:进行Build菜单,Rebuild AlL将生成.sys文件,说明驱动模块编译成功!

7安装驱动程序以及编写应用程序

具体安装驱动程序过程参见《windows驱动开发技术详解》P78“WDM式驱动的加载”部分。

应用程序的编写要加载GUID以及OpenByInterface等部分代码。

8常见错误解决办法

8.1运行成功后,重新编译时却总出现错误,编译不过去!

错误是:

fatal error LNK1181: cannot open input file "......\DriverStudio\DriverWorks\lib\I386\checked\vdw_wdm.lib"

错误原因:原来是因为配置开发环境时,漏掉了如下一个步骤:

编译DriverStudio3.2安装目录的\DriverWorks\Source\vdwlibs.dsw目录下的工程,没有得到vdw_wdm.lib文件!

解决办法:关闭当前工程,参加本文第四部分,然后重新打开工程,重新编译即可。

8.2 fatal error C1083: Cannot open include file: 'warning.h': No such file or directory

错误原因:没有选择DDK环境,

解决办法:在DriverStudio菜单中-->DDK Build Setting...中选择先前安装的DDK的目录(例如D:\WINDDK\2600),这样就可以编译通过了!

8.3可能会出现这样的编译错误:fatal error C1051: program database file, '......\compuware\driverstudio\driverworks\source\obj\i386\wdmchecked\vdw_wdm.pdb',
has an obsolete format, delete it and recompile

不过编译器提示的应该够清楚了,只要把连接目录下的文件删除再编译一次就可以了!

8.4用向导新建一个驱动工程,进行编译会产生如下错误:

Linking with DDK linker...

LINK : fatal error LNK1181: cannot open input file 'ntstrsafe.lib'

Error executing link.exe.

错误原因:这个文件在xpddk里面是没有的,在2003 ddk里面有

解决办法:拷贝一个过来就可以了,或者在工程-》设置-》连接选框中把ntstrsafe.lib这个连接项去掉(它与source文件有对应关系,在source文件中把这个库的链接去掉也可以)

在工程中的sources文件里边,找到下面一行:

TARGETLIBS=$(DDK_LIB_PATH)\ntstrsafe.lib $(DDK_LIB_PATH)\csq.lib

直接删除即可。有时候还会提示没有ntstrsafe.h,#include<ntstrsafe.h>出错,把它注释掉即可。

8.5 fatal error C1189: #error : Compiler version not supported by Windows DDK

错误原因:在于wdm.h文件中有一个条件编译语句

#if _MSC_VER < 1300

#error Compiler version not supported by Windows DDK

#endif

而VC6对应的_MSC_VER(与版本有关)为1200,因此提示如上错误

解决办法:此问题是通过运用DDK sources to vcproj Converter工具把驱动工程的sources文件转换成对VC6相适应而解决的。

如图2 所有程序—CompuwareDriverStudio---Develop---DDK sources to vcproj Conver,把驱动程序下的source文件拖到DDK sources to vcproj Conver该软件界面,选择第一个复选框,VC++6 Work Space,点击Convert,如图3所示。然后关闭此软件,此时VC工程下会自动提示工程有变化,是否更改更新,选择是就可以了。然后重新编译工程,无错。



图2 DDK sources to vcproj Conver打开



图3 工程转换



/*** 大漠流云 2011.8.23 ***/
/*** damoliuyunli@163.com ***/

版权声明:本文为博主原创文章,未经博主允许不得转载。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: