当前位置:首页 > 物联网 > 《物联网技术》杂志
[导读]摘要:介绍了WindowsXPTPCI9054的驱动开发环境的搭建方法,该方法所选择的开发平台为VC6.0+DDK+DriverStudio。总结了调试过程中容易出现的错误,以便初学者及同类开发者进行参考。

引言

CFL-03型风温廓线雷达数字中频接收机主要完成中频模拟信号的模数转换、数字下变频、数字滤波等处理,最终生成数字I、Q信号,通过PCI9054总线以DMA方式送到工控机内存中,由信号处理软件进行时域积累、脉压、去直流、加窗、FFT变换,形成多谱勒功率谱密度分布数据,再进行谱积累、谱估计等处理。

1PCI9054芯片简介

PCI9054是由美国PLX公司生产的先进的PCII/O加速器,采用了先进的PLX数据流水线结构技术,符合PCI本地总线规范2.2版;针对不同的处理器及局部总线特性,有M、C、J三种模式可选;配有可选的串行E2PROM接口,本地总线时钟可与PCI时钟异步。PCI9054内部有6种可编程的FIFO,以实现零等待突发传输及本地总线与PCI总线之间的异步操作;支持主模式、从模式、DMA传输方式,被广泛应用于嵌入式系统中,是目前主控设备PCI桥接器的主流芯片。

2环境搭建

开发工具由VisualC++6.0、WindowsXPDDK和CompuwareDriverStudio3.1组成。首先,按照VisualC++6.0、WindowsXPDDK、CompuwareDriverStudio3.1的顺序安装这三个软件。其次,DriverStudio安装之后,在VisualC++6.0编成工具栏中自动添加了一个菜单DriverStudio。然后,在VisualC++6.0中打开DriverWorks\source目录下的VdwLibs.dsw,之后选择DriverStudio工具栏的DDKBuildSetting,设置DDK所在的目录,例如D:\WINDDK\2600。最后,选择BatchBuild菜单,点击RebuildAll,创建自己的库文件。否则编译WDM程序时,将出现编译错误。

3PCI驱动程序的创建

创建一个PCI驱动程序框架的一般顺序是:点击开始一程序—CompuwareDriverStudio—develop—driverwizards„在弹出一个选择驱动程序工程类型的界面后,即可选择第一个DriverWorksproject。接下来便可按照图1所示的步骤选择默认。

创建驱动程序框架时,需要声明所需的资源,如存储器空间和I/O空间,中断和DMA等。其方法可按图2所示的步骤均选择默认,直到结束。

这样,通过上述步骤就生成了一个工作区和两个工程,两个工程分别是驱动程序和WIN32控制台的应用程序,可用于测试。框架程序生成后,还需要进行修改,以实现本项目的具体功能。

图1创建框架

图2资源声明

修改时,首先应配置E2PROM的值,因为PC19054的初始化是根据其配置E2PROM中的值来进行的;其次,本项目采用DMA方式传输。DMA传输指无需CPU的控制,在2个存储区进行直接的数据传输。此外,还需要重写DMA启动函数DMAStart(),设置每次DMA传输所需的PCI地址(主机物理内存地址)、本地地址、传输大小、传输方向等,并置DMA启动位。这样,每次数据捕获满而中断到来,要启动DMA传输时,只需调用DMAStart()函数即可。下面重点介绍DMA程序的执行过程:

插入PCI卡,总线驱动扫描到新硬件,硬件安装向导提示安装,导入INF文件。由I/O管理器打开sys文件,执行DriverEntry例程,然后执行AddDevice例程。

重启系统。系统在启动时,发出IRP_MJ_START。驱动捕获此IRP,并执行OnStartDevice。例程,完成系统初始化。包括系统的资源列表、KDmaAdapter、KcommonDmaBuffer、中断和DPC。

当执行用户程序的''读”或''写”时,用户程序向驱动发出IRP_MJ_READ或IRP_MJ_WRITE,于是执行Read()(或Write。)例程。由于使用了IRP串行技术,在例程最后调用Queuelrp(),就将执行IRP的操作交给了StartIo例程来完成。

在StartIo中,调用SerialRead()例程(或SerialWrite()例程)。

在SerialRead。例程中,创建DMA传输控制类KDmaTransfer*m_CurrentTransfer的实例。

m_CurrentTransfer->Initiate()例程,调用回调函数OnDmaReady。OnDmaReady检测DMA有无结束,结束则使用Terminate。,如果没有结束,则调用DMAStart()。

DMAStart()通过写9054寄存器,完成DMA操作。在完成一次后,会产生一个中断。

ISR服务例程会捕获此中断要求。在清除了中断标志后,调用DPC服务例程。

DPC例程中,调用m_CurrentTransfer->Continue()例程,则程序回到(6)步。

修改了程序之后,再设置工程PCI9054为当前工程,执行build菜单下的rebuildall,生成PCI9054.sys并编译成功后,PCI板卡就可以安装了。

4常见错误及解决办法

在调试过程中容易出现的错误及解决方法如下:

fatalerrorLNK1181:cannotopeninputfile”...\DriverStudio\DriverWorks\lib\I386\checked\vdw_wdm.lib”

解决办法:编译...\Compuware\DriverStudio\DriverWorks\source目录下的VdwLib.dsw工程,得到vdw_wdm.lib文件。

原因分析:配置开发环境时,安装DriverStudio3.1时缺失\DriverWorks\Source\vdwlibs.dsw目录下的vdw_wdm.lib文件,需要重新编译。

fatalerrorC1083:Cannotopenincludefile:'warning.h':Nosuchfileordirectory

解决办法:DriverStudio菜单一DDKBuildSetting...中选择我们先前安装的DDK的目录,假如安装的目录是D:\WINDDK\2600,这样就可以编译通过。

原因分析:未选中DDK环境。fatalerrorC1051:programdatabasefile,'...\com-puware\driverstudio\driverworks\source\obj\i386\wdmchecked\vdw_wdm.pdb',hasanobsoleteformat,deleteitandrecompile

解决办法:只要把连接目录下的文件删除再编译一次就可以了。

LinkingwithDDKlinker...

LINK:fatalerrorLNK1181:cannotopeninputfile'ntstrsafe.lib'

Errorexecutinglink.exe.

解决办法:在工程一设置一连接选框中把ntstrsafe.lib这个连接项去掉,或者从2003DDK中复制一份即可。

原因分析:这个文件在xpDDK里面是没有的,在2003DDK里面有。

CVTRES:fatalerrorCVT1102:outofmemory;40bytesrequired

LINK:fatalerrorLNK1123:failureduringconversiontoCOFF:fileinvalidorcorrupt

解决办法:将VC中的cvtres.exe复制,替换ddk中的cvtres.exe,各自路径为D:\WINDDK\2600\bin\x86和D:\ProgramFiles\VC++\Bin。

E:\pci\PCI\PCI905〜1.2\sys>callD:\ProgramFiles\

DDK\bin\setenv.batD:\ProgramFiles\DDKchk

D:\Program不是内部或外部命令,也不是可运行的程序或批处理文件。

E:\pci\PCI\PCI905~1.2\sys>build.exe-ceZ

build.exe不是内部或外部命令,也不是可运行的程序或批处理文件。

Toolreturnedcode:0

能生成.sys文件,但是加载DDK的buildwithbuild.exe出现这个错误。

解决办法:利用DDK下的WinXPCheckedBuildEnvironment找到放置驱动的目录进行build-ceZ。中间如果出现BUILD:Compileerrors:notlinking...didirectory错误,此错误产生原因是DDK的安装目录不能有空格。例如,原先的目录是D:\ProgramFiles\DDK,改成D:\WINDDK即可。

安装驱动时还出现“无法安装硬件驱动”信息。

原因分析:产生这个问题的原因很多,本项目在调试时,发现EEPROM的配置文件有问题,其中一个数据位写入错误,修改配置文件后才能使用。

5结语

CFL-03型风温廓线雷达数字中频接收机是数据传输的枢纽,PCI9054又是数据传输的桥梁,正确地进行驱动开发和数据采集对于整个系统的运行有着重要的意义。采用VC6.0+DDK+DriverStudio这种模式,优点在于不仅能够进行硬件开发,还能很好地进行调试,从而更好地进行数据分析,满足系统的设计要求。此外,对于PCI9054驱动开发,还可以采用WinDriver7.0进行开发,能够缩短开发周期和调试时间,达到很好的经济效益。

20211024_61753248d9800__CFL

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

摘要:根据粮库环境的应用需求,设计了一种粮库环境监测系统,该系统由上位机监控中心和ZigBee无线监测网络两部分组成。采用以CC2530芯片外加CC2591射频芯片为核心的节点开发策略,并移植了Z-Stack协议栈,然后...

关键字: 粮库环境 Zigbee Z-Stack VC6.0

摘要:IEEE1394串行总线以其高速实时性的特点和灵活可配置的拓扑结构为提高系统,性能提供了一种有效的途径。文中介绍了IEEEStd1394b总线系统的功能和特点,并以FPGA和DSP为控制核心设计了1394b双向数据...

关键字: 1394b FPGA DSP PCI9054 串行总线

摘要:PCI总线已经成为工业控制计算机中的主流总线结构,文中给出了采用PCI总线的DMA方式来实现大量高速数据捕获,包括DMA数据传输和突发数据传输的实现方法。该方法的驱动程序采用WinDriver驱动开发平台,并借助P...

关键字: PCI总线 PCI9054 DMA 突发数据 驱动程序

PC I总线规范十分复杂,开发接口设备具有相当 的难度,在设计中需注意以下问题。PCI的时钟扇出 能力较差,一般只支持2~3个负载; PC I接口逻辑复 杂, 总线的接口电路大致需要

关键字: 数控系统 PCI总线 PCI9054 DMA

刘彩霞 贺占庄 西安微电子技术研究所O 引 言在雷达的控制和数据采集系统中通常采用并行数据总线方式进行控制信号传输和数据交换。在以往的设计中,大量使用中小规模集成电路及分立元件搭建总线数据采集和控制功能模块

关键字: CPLD 双口RAM 存储空间 PCI9054

O 引言  随着科技的进步,空空导弹的研制越来越复杂。相应地就有越来越多的数据信息需要遥测传输,这必然导致遥测接收的数据文件较大。以3 Mb/s码率计,10 min的遥测数据就有214 MB之多。数据处理软件往往需要经过

关键字: 遥测 特征参数 VC6.0 函数

PCI总线支持突发传送,多处理器和并发工作,广泛应用于各种平台设计。基于PCI9054的接口板也广泛地应用于各种高速、大数据量的处理系统。由于PCI9054桥接有PCI总线和本地总线,开发者不必过多考虑复杂的PCI总线规...

关键字: PCI9054 接口 数据传输 逻辑设计
关闭
关闭