RTAI环境下数据采集的Comedi驱动

时间:2009-11-04

  0引言

  现代工业生产和科学研究对数据采集的要求日益提高.数据采集的实时性能已成为一个重要的指标,基于实时系统下的数据采集方案成为主流。实时系统的是实时操作系统,目前主流实时操作系统都比较昂贵,随着开源系统Linux的普及,基于Linux的实时操作系统也陆续出现,如RTLinux,RTAI等。然而,实时系统中驱动各种硬件通常要面对一些不同于非实时系统中的问题,比如内存调用,中断处理,端口读取处理等。一般来说,硬件驱动大多是由特定厂家提供

  的,接口定义不一致,这使得开发移植性很差,而几乎所有的厂商以及Linux本身并没有提供良好的实时情况下的硬件驱动。而Comedi作为Linux环境下数据采集硬件驱动程序的规范,可以提供良好的实时环境下的驱动开发移植性。本文结合实时操作系统RTAI,对Comedi规范驱动在实时环境中的实现过程做了分析。

  1  RTAI系统

  RTAI (the Real Time Application Interface forLinux)是由意大利米兰理工学院航天工程系开发的一种开源实时Linux操作系统,准确的说,RTAI是Linux的一个实时扩展模块。其特别之处在于,RTAI是对已有的Linux操作系统的内核进行重新编译,并加入一系列实时运行模块,然后通过调用实时模块来实现实时功能。这个特点使RTAI可以在不同版本的Linux系统之间方便的移植,同时可以对Linux的内核源码的改动程度降到。截止2008年9月,RTAI的版本是3.6.1.可以良好地支持2.6.24版本的Linux内核。

  2 Comedi规范

  Comedi (Linux Control and Measurement Device Interface)可以提供一个Linux下数据采集卡硬件驱动程序的接口规范。这是一个的自由软件,它由三个部分组成,其中一个是与设备无关的API库,是名为comedi.o的主模块;另一个数据采集卡是低级驱动模块的集合,可允许不同板卡执行API库;还有一个是Linux用户空间库comedilib,可提供给开发者一个可编程接口,以允许用户自行配置和使用采集卡。另外对于实时系统,该规范还额外提供了一个内核模块kcomedilib.o,以支持实时任务,其功能与comedlib相同。Comedi中自带了大多数厂家的数据采集卡的驱动程序,这些程序都可以良好的在实时系统下工作。截止到2008年9月,comedi的版本号为0.7.76,comedilib的版本号为0.8.1,它们均可以支持2.6版本的Linux内核。

  3  驱动过程

  现以一块NI PCI-6251型号的数据采集卡为例,来分析其在RTAI中用Comedi规范进行驱动的实现过程。NI PCI-625l(NI的M系列DAQ产品)数据采集卡的主要参数定义如下:

  ◇模拟输入:通道数为16 SE/8 DI,采样率为1.25MS/s,分辨率为16 bit;

  ◇模拟输出:通道数为2,更新率为2.86MS/s,分辨率为16 bit;

  ◇数字I/O:通道数为24DIO,时钟速率为lO MHz,输出输入范围为0.5 V。

  Comedi驱动的实现步骤如下:

  (1)加载实时模块

  在Linux重新编译内核并扩展好的RTAI操作系统中,如果不加载实时模块,那是无法实现实时性能的。首先要加载rtai_hal.ko模块,这是RTAI的模块,可实现RTAI接管系统硬件的功能,加载后,Linux与硬件之间的联系才会被RTAI捕捉过滤,中断才能被RTAI接管。然后,还要加载rtai_sched.ko模块来实现对任务的调度,该模块可把CUP的时间分配给所有的任务,包括Linux内核,以提供基于固定优先级的全抢占式强实时调度。加载rtal_fifos.ko模块可用于实现实

  时任务和普通Linux进程之间的信息交换和通信。,加载rtai_shm.ko模块,可允许实时任务和Linux普通任务相互共享内存空间。另外,若需用于支持程序编辑,则可以加载rtai_sem.ko模块。

  (2)加载Comedi基础模块

  加载好实时模块后,应再加载comedi.ko模块.它是Comedi主模块,在Comedi.ko的基础上才能支持其他驱动的实行。加载kcomedi.ko模块可以增加实时扩展。之后,还应加载mite.ko模块作为补充。

  (3)加栽采集卡驱动并配置板卡

  完成上述加载后还应加载comedi_fc.ko模块,该模块可作为加载板卡驱动的基础模块。加载8255.ko模块的作用主要是用来支持含有24通道的数字I/O的8255标准芯片的驱动。而加载ni_tio.ko模块则是为NI通用板卡计算器的硬件驱动提供基础支持。加载的nLpcimio.ko模块的作用是为NI的PCI-MI()-E和M系列数据采集卡提供通用驱动。以上是所有必要的模块,全部加载好以后,可用命令配置板卡,命令为:comedi_config/dev/comedi/m_pcimio。这样,数据采集卡的驱动就安装好了,此后可以使用comedilib目录下demo中的boad.info命令来查看板卡基本信息和驱动支持的功能,此外,这个文件夹中还有一些附带的数

  据采集程序可以调用。

  4结束语

  本文介绍了实时Linux操作系统RTAI以及Comedi的基本特点和结构,分析了在RTAI中由Comedi驱动数据采集卡的实现过程。可以说,基于开源系统和软件的快速发展,在实时领域应用Comedi驱动数据采集卡是一个良好的设计方案。



  
上一篇:全数字DC-DC变换器研究
下一篇:VxWorks下的同类USB设备管理方法

免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

相关技术资料