基于数字中频接收机总线驱动开发的研究
(2) 重启系统。系统在启动时, 发出IRP_MJ_START.驱动捕获此IRP, 并执行OnStartDevice() 例程,完成系统初始化。包括系统的资源列表、KDmaAdapter、KcommonDmaBuffer、中断和DPC.
(3)当执行用户程序的“读”或“写”时,用户程序向驱动发出IRP_MJ_READ 或IRP_MJ_WRITE,于是执行Read()(或Write())例程。由于使用了IRP 串行技术,在例程最后调用QueueIrp(),就将执行IRP的操作交给了StartIo 例程来完成。
(4)在StartIo 中,调用SerialRead() 例程(或SerialWrite()例程)。
(5) 在SerialRead() 例程中, 创建DMA 传输控制类KDmaTransfer *m_CurrentTransfer 的实例。
(6)m_CurrentTransfer->Initiate() 例程,调用回调函数OnDmaReady.OnDmaReady 检测DMA 有无结束,结束则使用Terminate(),如果没有结束,则调用DMAStart()。
(7)DMAStart() 通过写9054 寄存器,完成DMA 操作。
在完成一次后,会产生一个中断。
(8)ISR 服务例程会捕获此中断要求。在清除了中断标志后,调用DPC 服务例程。
(9)DPC 例程中, 调用m_CurrentTransfer->Continue()例程,则程序回到(6)步。
修改了程序之后,再设置工程PCI9054 为当前工程,执行build 菜单下的rebuild all,生成PCI9054.sys 并编译成功后,PCI 板卡就可以安装了。
4 常见错误及解决办法
在调试过程中容易出现的错误及解决方法如下:
(1)fatal er ror LNK1181 : cannot open input f ile
“…DriverStudioDriverWorkslibI386checkedvdw_wdm.lib”
解决办法:编译…CompuwareDriverStudioDriverWorkssource 目录下的VdwLib.dsw工程,得到vdw_wdm.lib 文件。
原因分析:配置开发环境时,安装DriverStudio3.1 时缺失DriverWorksSourcevdwlibs.dsw 目录下的vdw_wdm.lib 文件,需要重新编译。
(2)fatal error C1083: Cannot open include file: 'warning.h':
No such file or directory
解决办法:DriverStudio 菜单→ DDK Build Setting… 中选择我们先前安装的DDK 的目录,假如安装的目录是D :
WINDDK2600,这样就可以编译通过。
原因分析:未选中DDK 环境。
(3) fatal error C1051 : program database file, ‘…compuware
driverstudiodriverworkssourceobji386wdmchecked
vdw_wdm.pdb', has an obsolete format, delete it and recompile
解决办法:只要把连接目录下的文件删除再编译一次就可以了。
(4) Linking with DDK linker…
LINK : fatal error LNK1181 : cannot open input file'ntstrsafe.lib'
Error executing link.exe.
解决办法:在工程→设置→连接选框中把ntstrsafe.lib 这个连接项去掉,或者从2003DDK中复制一份即可。
原因分析:这个文件在xpDDK 里面是没有的,在2003DDK 里面有。
(5) CVTRES : fatal error CVT1102 : out of memory ; 40bytes required
LINK : fatal error LNK1123 : failure during conversion toCOFF :file invalid or corrupt
解决办法:将VC 中的cvtres.exe 复制,替换ddk 中的cvtres.exe, 各自路径为D :WINDDK2600binx86 和D :
Program FilesVC++Bin.
(6) E :pciPCIPCI905~1.2sys>call D :Program FilesDDKbinsetenv.bat D :Program FilesDDK chk
D :Program 不是内部或外部命令,也不是可运行的程序或批处理文件。
E :pciPCIPCI905~1.2sys>build.exe -ceZ
build.exe 不是内部或外部命令,也不是可运行的程序或批处理文件。
Tool returned code : 0
能生成。sys 文件,但是加载DDK 的build with build.exe出现这个错误。
解决办法:利用DDK 下的Win XP Checked Build Environment找到放置驱动的目录进行build -ceZ.中间如果出现BUILD :Compile errors : not linking … didirectory 错误,此错误产生原因是DDK 的安装目录不能有空格。例如,原先的目录是D :Program FilesDDK,改成D :WINDDK 即可。
(7) 安装驱动时还出现“无法安装硬件驱动”信息。
原因分析:产生这个问题的原因很多,本项目在调试时,发现EEPROM 的配置文件有问题,其中一个数据位写入错误,修改配置文件后才能使用。
5 结 语
CFL-03 型风温廓线雷达数字中频接收机是数据传输的枢纽,PCI9054 又是数据传输的桥梁,正确地进行驱动开发和数据采集对于整个系统的运行有着重要的意义。采用VC6.0+DDK+DriverStudio 这种模式,优点在于不仅能够进行硬件开发,还能很好地进行调试,从而更好地进行数据分析,满足系统的设计要求。此外,对于PCI9054 驱动开发,还可以采用WinDriver7.0 进行开发,能够缩短开发周期和调试时间,达到很好的经济效益
cvt相关文章:cvt原理
评论