基于RTX平台高速实时数据采集与处理平台设计*

2010-08-11 05:27周徐昌
舰船电子工程 2010年7期
关键词:采集卡驱动程序实时性

雷 毅 周徐昌

(海军工程大学兵器工程系 武汉 430033)

1 引言

随着计算机科学技术的迅猛发展,当代仿真技术得到了极大地提高。传统的嵌入式操作系统虽然实时性高,但需要独有的开发定制工具,开发复杂,定制内核涉及BSP相关知识;而且其它通用功能例如图形显示功能并不强大,需要购买第三方图形开发包,开发周期长。RTX则能比较好地完成图形化和实时两方面要求,因而在半实物仿真系统中得到了广泛地使用。但目前设备厂商对于一些采用实时操作系统的仿真计算机,未提供相应的设备驱动程序,由于对实时性的要求,也必须自己开发相应的设备驱动程序。在某型武器半实物仿真系统中,选用研华公司的工控机和PCI1714数据采集卡、三轴转台等设备组成硬件平台,RTX+Windows作为软件平台,在系统的开发过程中编写了PCI卡的设备驱动程序。本文以PCI1714为例详细讨论了在RTX+Windows下开发PCI设备驱动程序的方法。

2 RTX操作系统简介

RTX是Windows XP/2000/NT系统的硬实时扩展,为 Windows系统提供了高速确定性的硬实时能力,满足了对设备I/O进程的确定性响应的要求。其内核采用基于开放式的x86系列PC架构,可定制裁减,并支持多种CPU架构[1]。其独立的基于抢占式的RT X线程调度机制允许RTSS线程优先于所有的Windows线程和中断,并拥有足够多的优先级,每个进程可以从0~127这128个优先级中选择,而且提供了 Windows和RTSS进程之间的IPC进程间通信机制。

RTX对x86提供了很好的支持。而且RTX提供了针对端口I/O和总线I/O所有操作的功能函数,几乎可以用于所有的驱动开发。并向开发者提供了独立于操作系统和应用程序的对于系统资源的直接访问控制和所有权,使得开发PCI驱动程序更方便。

3 RTX下保证系统实时性的可行性分析

某型武器半实物仿真系统仿真原理框图如图1所示,系统按照仿真时序的要求,采集其运动参数及舵角,送至数字仿真计算机,通过求解其动力学与运动学方程,发送命令给三轴转台和水压仿真器,三轴转台通过角运动,水压仿真器通过油压动态变化,仿真其姿态变化和深度变化,给控制系统提供信息,从而模拟其下一时刻的运动状态。

图1 某型武器半实物仿真系统仿真原理框图

仿真系统主要参数有各计算机帧时、转台和水压仿真器分系统帧时、接口通信速率等。在Windows环境下能够实现实时数据采集的资源有2个:多媒体定时器和常规定时器。常规定时器是建立在PC机硬件和ROM BIOS中系统定时器的简单扩充基础之上。由于ROM BIOS将PC中的一个8253定时芯片设为54.915ms产生一个硬件中断,因此通过这种方式获得的定时器只能精确到55ms,对于 55ms以下的时间精度便无能为力了[2]。多媒体定时器使用自己单独的线程来调用一个自己的回调函数,并且该线程优先级高,每隔一定时间就发送一个消息而不管其他消息是否已执行完,因此采用多媒体定时器可以达到1ms的最小时间精度。对于一般的实时数据采集来说,采用多媒体定时器可以满足要求,实时性要求更高的情况就无法满足了。但是对于本系统来说,为保证系统的仿真精度和可信度,要求数学模型实时解算,需要更高精度的定时器。

RTX其持续中断响应频率可达30kHz以上,最大IST处理延迟不超过16μ s。能提供高速准确的实时时间响应,定时器最小周期为100μ s,时钟最小分辨率为100ns。故从理论上看可满足系统实时性的要求。

4 PCI1714数据采集卡驱动程序设计

PCI-1714配备4组模拟输入端,具备同步采集功能。当4组模拟输入同时使用时,采样频率最高可达 30MS/s。PCI-1714板卡采用 PLX-9056 PCI总线控制器,同时,每路 ADC独占板载的32kb,可保证数据在高速数据采集时的临时存储与数据的批量传输,实现数据的高速采集。

4.1 驱动程序实现方法

在完成对设备地址映射之后,驱动程序就可以根据分配的基地址访问设备了。在RTX操作系统下,其驱动程序不含虚拟机,无需内核中转请求,不含缓冲及校验机制,可以直接操作寄存器。故可在内核之外与应用程序一起编译运行,不必把驱动程序编译到内核中去。而且RTX驱动程序架构灵活,无需WDM驱动规范,可以以各种形式存在包括.rtss,.rtdll,rtss dll,.lib。在PCI1714数据采集卡的驱动程序中,把驱动程序当作应用程序的一部分,一起编译生成目标文件,没有使用标准的驱动规范,这样更方便操作采集卡。

4.2 驱动程序设计

一般来说,PCI的驱动程序可分为三个部分:初始化部分、对硬件资源的访问函数库、具体调用部分。调用RTX操作系统提供的I/O函数就可以控制采集卡上的数字IO输出以及D/A输出[3]。

4.2.1 获得PCI设备信息,进行设备初始化

在执行初始化之前,需要对板卡的基地址进行赋值。不同于ISA设备可以预先了解设备的中断号和基地址,PCI设备的中断号和基地址是在开机时由系统自动分配的。所以在操作设备之前,必须首先确认设备的中断号和基地址,以便进行下一步的操作。首先通过for循环程序找到与所编写程序的PCI卡相对应的PCI设备,然后读取设备中基地址寄存器中的地址和中断号[4]。程序代码如下所示:

BytesWritten=RtGetBusDataByOffset(

PCIConfiguration,//type of bus data to be retrieved bus

pSlotNumber->u.AsULONG,//logical slot number

PciData,//pointer to a buffer for configuration information 0,//byte offset into buffer PCI_COMMON_HDR_LENGTH//length of buffer)

初始化操作包括:配置中断、停止位、奇偶校验位、字长FIFO等。PCI设备对板卡的操作与ISA设备无异,核心就是对寄存器的配置与读写操作。通过直接操作相应寄存器即可达到相应要求,示例代码如下:

RtWritePortUchar(ucb->baseAddress+UA RT_LCR,LCR_DIVISOR_LATCH);

tempRegister=ucb->stopBits|ucb->parity|ucb->wordSize;

tempRegister=RtReadPortUchar(ucb->baseAddress+UART_FCR);

4.2.2 调用I/O函数,访问硬件资源

硬件中断处理是实时系统设计的关键环节,外部事件通过中断通知系统,系统通过中断服务函数处理中断请求。在中断模式中,操作相应的读写寄存器传入传出数据即可,示例代码如下:

中断方式,清空FIFO:

VOID EmptyFIFO(UCB*ucb)

中断方式,写入FIFO:

VOID SendNextFIFO(UCB*ucb)

4.3 仿真结果分析

半实物仿真数据结果对比的标准有两个:一是数字仿真结果;二是实航结果。图2为半实物仿真的深度曲线与海上实航结果对比情况。说明了该驱动程序达到了系统的设计要求。

5 结语

本文结合PCI1714数据采集卡分析了在RTX+Windows下开发PCI设备驱动程序的方法。经实际运行,所编写的驱动程序在仿真系统中运行稳定可靠,系统的实时性达到了设计要求。

[1]Ardence公司.RTX技术白皮书[Z].北京航天捷越(美斯比)科技有限公司,译,2004

[2]吴丽娜,高敬阳.Windows2000/XP下通用实时采集的设计与实现[J].计算机应用,2005,25(2):442~444

[3]王宇磊,周东.VxWorks下PCI总线驱动程序设计与实现[J].计算机应用

[4]董春桥,李凯.Linux系统PCI设备驱动程序开发[J].计算机测量与控制,2005,13

[5]WindRiver Systems Inc.VxWorks Programmer's Guide[Z].1998

[6]杨飞,安锦文,李中健.嵌入式实时操作系统VxWorks下CPCI设备驱动程序开发[J].计算机,2007,15(5)

[7]马明建,周长城.数据采集与处理技术[M].西安:西安交通大学出版社,1998,1:59~70

[8]肖忠祥.数据采集原理[M].西安:西安工业大学出版社,2003:15~20

猜你喜欢
采集卡驱动程序实时性
高精度AD采集卡性能测试及评价方法研究
血液采集卡存储装置的设计与应用
阻止Windows Update更新驱动程序
智能变电站电子式电流互感器故障分析
计算机硬件设备驱动程序分析
航空电子AFDX与AVB传输实时性抗干扰对比
计算机控制系统实时性的提高策略
可编程控制器的实时处理器的研究
脉冲采集卡的开发
妙用鼠标驱动