网站大量收购独家精品文档,联系QQ:2885784924

VxWorks下数据采集卡驱动程序开发.docVIP

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
VxWorks下数据采集卡驱动程序开发.doc

VxWorks下数据采集卡驱动程序开发 作者:杨 扬,杨智慧,李 序,李正熙?? 时间:2008-06-16??来源:现代电子技术 1 引 言   随着嵌入式技术的发展,数据采集广泛应用于现场设备中。本文根据实际项目需求,开发了数据采集卡在VxWorks操作系统下的驱动程序,以方便应用程序开发。   本文采用的数据采集卡为盛博协同公司基于PC/104总线的ADT700采集卡,他通过总线与PC/104嵌入式系统构成一个高性能的数据采集与控制系统。ADT700具有如下特点:   模拟输入 16单端/8差分输入;12位分辨率;100 kHz最大A/D采样率;0~+10 V,-5~+5 V,-10~+10 V双极性或单极性输入量程;1,2,4,8倍可编程增益;DMA实现数据的高速传输。   模拟输出 4通道输出;-5~+5 V,-10~+10 V,0~5 V,0~10 V量程可选;通道单独置数或4通道同时置数。   数字量I/O 可编程外围接口,24通道TTL/CMOS兼容;I/O接口上拉或下拉限流电阻。   定时/计数器 6个16位、10 MHz(最大)定时/计   2 VxWorks及其字符设备驱动   VxWorks是一个基于抢占式的实时操作系统,他以其高度的可靠性、优秀的实时性、灵活的可裁性广泛应用到许多行业中。在VxWorks中,I/O系统提供了与设备无关的用户接口,应用程序可以通过标准的接口函数如:create(),remove(),open(),close(),read(),write(),ioctl()等来访问设备驱动程序,而不用关心驱动程序是如何实现的。ADT700属于字符型设备,他的驱动程序需要支持以上接口函数。   下面以字符设备中open()操作为例,说明字符设备驱动程序结构。   如图1所示,当应用程序调用fd=open(/xx0,ORDONLY,0)时,I/O系统根据文件名/xx0在设备列表中查找设备(设备是以文件形式存在的,文件名即设备名)(如所示);查找到相应设备后根据驱动号定位到驱动表中(如所示);I/O系统在文件描述表中预留一个表项fd=3(如所示);然后I/O系统调用驱动程序中的xxoOpen()函数,返回需要保留的值,即设备描述指针(如所示);I/O系统将驱动号和驱动返回值填到文件描述符表中(如所示);最后,I/O系统返回新opeh()的文件在文件描述符表中的索引,应用程序得到文件描述符fd=3(如所示)。用户可以通过操作文件来访问I/O设备。   3驱动实现   3.1 功能分类   ADT700具有A/D,D/A转换,数字I/O,定时/计数等功能,对其进行分析,可分为3类:   (1)A/D转换为只读,而D/A转换为只写;   (2)数字I/O既可读又可写;   (3)定时/计数器基本无需读写,只设置即可。   根据以上功能,得出需要实现3个驱动,分别为:   (1)adtDrv驱动,用于读入A/D转换后的数据,写出D/A转换的数据,设备描述符为/adt;   (2)ppiDrv驱动,用于读入或写出数字I/O的数字,设备描述符为/ppi;   (3)pitDrv驱动,用于设置定时/计数器,设备描述符为/pit。   3.2基本流程   (1)安装驱动   I/O系统的功能是将用户的I/O请求转换成对相应驱动程序具体操作函数的调用,他通过维护一个包括所有驱动程序操作函数的地址表来实现的。通过调用ios-DrvInstall()可以动态安装驱动程序,该函数的参数就是7种基本I/O操作函数指针。iosDrvInstall()函数将这些地址写入驱动表中的一块空闲存储区中,并返回这块存储区的编号,编号即驱动程序号,可被与驱动程序相关联的设备使用。iosDrvInstall()的原型是:   int iosDrvtnstall(FUNCPTR pCreate,FUNCPTRpDelete, FUNCPTR pOpen, FUNCPTR pClose,FUNCPTR pRead,FUNCPTR pWrite,FUNCPTR pI-octl);   当调用iosDrvInstall()注册I/O函数成功后,在shell下用iosDrvShow命令可以观察驱动表中ADT700的驱动入口。   (2)创建设备   创建设备过程即是调用设备创建函数iosDevAdd()将此设备加入到I/O系统的设备列表中。iosDevAdd()的原型为:   STATUS iosDevAdd(DEV_HDR*pDevHdr,char*name,int drvnum);   其中:DEV_HDR是一个指向该设备的描述符指针;而DEV_HDR结构中的第一项则指向下一个设备的描述符指针。   设备创建成功后,在shell下用dev

文档评论(0)

feiyang66 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档