2022年VxWorks下数据采集卡驱动程序开发 .pdf
-
资源ID:27879955
资源大小:402.48KB
全文页数:5页
- 资源格式: PDF
下载积分:4.3金币
快捷下载
![游客一键下载](/images/hot.gif)
会员登录下载
微信登录下载
三方登录下载:
微信扫一扫登录
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
|
2022年VxWorks下数据采集卡驱动程序开发 .pdf
VxWorks下数据采集卡驱动程序开发作者:杨扬,杨智慧,李序,李正熙时间: 2008-06-16 来源 :现代电子技术1 引 言随着嵌入式技术的发展,数据采集广泛应用于现场设备中。本文根据实际项目需求,开发了数据采集卡在VxWorks操作系统下的驱动程序,以方便应用程序开发。本文采用的数据采集卡为盛博协同公司基于PC104 总线的 ADT700采集卡,他通过总线与PC104嵌入式系统构成一个高性能的数据采集与控制系统。 ADT700具有如下特点:模拟输入 16 单端 8 差分输入; 12 位分辨率; 100 kHz最大 AD 采样率;0+10 V,-5 +5 V ,-10 +10 V双极性或单极性输入量程;1 ,2 ,4 ,8 倍可编程增益; DMA 实现数据的高速传输。模拟输出 4 通道输出; -5 +5 V ,-10 +10 V,05 V ,010 V 量程可选;通道单独置数或4 通道同时置数。数字量 IO 可编程外围接口, 24 通道 TTLCMOS 兼容;IO 接口上拉或下拉限流电阻。定时计数器 6 个 16 位、10 MHz(最大)定时计2 VxWorks及其字符设备驱动VxWorks是一个基于抢占式的实时操作系统,他以其高度的可靠性、 优秀的实时性、灵活的可裁性广泛应用到许多行业中。在VxWorks中,IO 系统提供了与设备无关的用户接口,应用程序可以通过标准的接口函数如:create(),remove(),open(),close(),read() ,write(),ioctl()等来访问设备驱动程序,而不用关心驱动程序是如何实现的。 ADT700属于字符型设备,他的驱动程序需要支持以上接口函数。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 5 页 - - - - - - - - - 下面以字符设备中open()操作为例,说明字符设备驱动程序结构。如图 1 所示,当应用程序调用fd=open(xx0 ,ORDONLY ,0) 时, IO 系统根据文件名 xx0 在设备列表中查找设备( 设备是以文件形式存在的,文件名即设备名)( 如所示 ) ;查找到相应设备后根据驱动号定位到驱动表中(如所示 );IO 系统在文件描述表中预留一个表项fd=3(如所示 );然后 IO 系统调用驱动程序中的xxoOpen()函数,返回需要保留的值,即设备描述指针(如所示 ) ;IO 系统将驱动号和驱动返回值填到文件描述符表中(如所示 ) ;最后, IO 系统返回新 opeh()的文件在文件描述符表中的索引,应用程序得到文件描述符fd=3(如所示 )。用户可以通过操作文件来访问IO 设备。3 驱动实现3.1 功能分类ADT700具有 AD,DA 转换,数字 IO,定时计数等功能,对其进行分析,可分为 3 类:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 5 页 - - - - - - - - - (1)A D 转换为只读,而DA 转换为只写;(2) 数字 IO 既可读又可写;(3) 定时计数器基本无需读写,只设置即可。根据以上功能,得出需要实现3 个驱动,分别为:(1)adtDrv驱动, 用于读入 AD 转换后的数据, 写出 DA 转换的数据, 设备描述符为 adt ;(2)ppiDrv驱动,用于读入或写出数字IO 的数字,设备描述符为ppi ;(3)pitDrv驱动,用于设置定时计数器,设备描述符为pit 。3.2 基本流程(1) 安装驱动IO 系统的功能是将用户的IO 请求转换成对相应驱动程序具体操作函数的调用,他通过维护一个包括所有驱动程序操作函数的地址表来实现的。通过调用ios-DrvInstall()可以动态安装驱动程序,该函数的参数就是7 种基本 IO 操作函数指针。iosDrvInstall()函数将这些地址写入驱动表中的一块空闲存储区中,并返回这块存储区的编号, 编号即驱动程序号, 可被与驱动程序相关联的设备使用。iosDrvInstall()的原型是:int iosDrvtnstall(FUNCPTR pCreate,FUNCPTRpDelete, FUNCPTR pOpen , FUNCPTR pClose,FUNCPTR pRead,FUNCPTR pWrite,FUNCPTR pI-octl);当调用 iosDrvInstall()注册 IO 函数成功后,在shell 下用 iosDrvShow命令可以观察驱动表中ADT700的驱动入口。(2) 创建设备名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 5 页 - - - - - - - - - 创建设备过程即是调用设备创建函数iosDevAdd()将此设备加入到IO 系统的设备列表中。 iosDevAdd()的原型为:STATUS iosDevAdd(DEV_HDR*pDevHdr,char*name,int drvnum);其中: DEV_HDR是一个指向该设备的描述符指针;而DEV_HDR结构中的第一项则指向下一个设备的描述符指针。设备创建成功后, 在 shell 下用 devs 命令可以观察设备列表中ADT700的设备描述符。以 ADT700中 adtDrv驱动为例,以上两步的完成过程如图2 所示。(3) 实现 I O 函数安装驱动和创建设备完成后,就需要实现IO 函数,即填充驱动表中的函数了。对于字符型设备而言,打开设备操作与创建设备操作通常使用相同的函数,底层驱动中都用 xxOpen()完成;而设备驱动一旦安装,就无需删除,remove()无效,因此在底层驱动中 xxRemove()为空。下面给出了ppiDrv驱动中 ppiRead()的实现模板。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 5 页 - - - - - - - - - 完成以上 3 步,就基本实现了驱动程序,此时, 在应用程序中可以用标准接口函数进行操作了。以打开ADT700中定时计数器 ( 驱动为 pitDrv)为例。此时,在 shell 用 iosFdShow命令可以观察到新创建的文件描述符 pit timer。4 结 语本文以数据采集卡驱动程序为例,详细介绍了Vx-Works操作系统下字符设备驱动程序的开发过程。 本驱动程序封装了ADT700几乎所有功能, 支持标准的IO 系统接口函数。用户可将ADT700当作文件,只需定义文件名建立文件描述符,而无需关心底层实现,即可完成对他的操作,从而缩短了应用程序开发时间,提高了效率。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 5 页 - - - - - - - - -