DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 112|回复: 0
打印 上一主题 下一主题

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

[复制链接]
跳转到指定楼层
楼主
发表于 2012-1-16 16:54:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

                      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驱动数据采集卡是一个良好的设计方案。
            
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2025-7-23 23:13 , 耗时 0.085892 秒, 19 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

快速回复 返回顶部 返回列表