4.2 数据传输模式与配置函数
驱动程序得到从数据采集设备发送的数据,并存储在指定的内存空间,根据用户的选择可以实时显示或者存储在磁盘空间。使用WinDriver编写的驱动程序通过WinDriver内核模块与硬件进行通信,本驱动程序要实现的主要功能是从设备读取指定的数据到计算机,并根据要求发送命令到设备控制寄存器对设备的各种状态进行控制。
设备与计算机进行数据传输有2种模式:PIO模式和DMA(直接内存访问)模式。PIO模式主要实现计算机和数据采集卡之间的命令传输;DMA模式主要针对大块数据传输,传输过程中不需要经过CPU,数据直接从设备传送到内存中,数据传输的速率快,可以充分利用PCIE数据带宽。
为了能从设备中读到数据,首先应该获得设备的信息,设备信息主要包括厂家ID号,设备内存映射空间,设备所在插槽号以及其他设备专用配置信息。只有获得了设备信息才能实现对设备的访问,这些信息通过下面2个函数得到:
void WD_PciScanCards函数用于检测安装于PCIE总线上的设备。Void WD_PciGetCardInfo函数获取PCI设备的资源信息,例如内存资源,I/O资源,中断资源等。对设备信息的登记是通过结构WD_CARD_REGISTER来实现,它包含了硬件的各项信息。这些信息可以通过第一步中的2个函数获得。在确定WD_CARD_REGISTER结构后调用函数WDCardRegister向Windriver Kernel登记设备。在得到了设备信息并且向WinDriver注册了此设备后就可以在设备和计算机之间传输数据。
5 结 语
采用PCI express总线实现数据采集设备可以有效地提高数据的传输带宽,解决总线带宽不足瓶颈带来的种种问题。文中的总线设计为1个通道的PCI express,双向的读写速度为250 MB/s。后面的设计中会不断提高Pcie总线的通道数,以满足更高的总线设计需求。
,基于PCI Express总线的数据采集设备实现