积分规则 网站地图 帮助中心    
嵌入式软件 单 片 机 DSP 存储器 传感控制 光电显示
嵌入式硬件 CPLD/FPGA SOPC AD/DA 接口电路 模拟设计
I C设计 通信产品 汽车电子 电源产品 消费电子 数控系统
工业控制 军工/航天 安防产品 医疗电子 计算机外设 测试测量
供应 I C
求购 公司库

  IC 求购 销售 公司 论文 DATASHEET 参考设计 论坛
当前位置: 电子技术 >> 嵌入式软件 >> VXWORKS
  相关分类: LINUX | WINCE | UC/OS | Bootloader | 下载 | VXWORKS | 网络协议 | JAVA | 汇编 | 驱动设计 | Symbian | XP Embedded | Nucleus | 新产品 | 相关文章 | 综合技术 |
VxWorks下数据采集卡驱动程序开发
 
作者:杨 扬,杨智慧,李 序,李正熙   来源:现代电子技术    点击数:287   更新时间:2008-6-17
您可以添加到网摘 让更多人关注此文章:

    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下用devs命令可以观察设备列表中ADT700的设备描述符。


  以ADT700中adtDrv驱动为例,以上两步的完成过程如图2所示。



  (3)实现I/O函数


  安装驱动和创建设备完成后,就需要实现I/O函数,即填充驱动表中的函数了。对于字符型设备而言,打开设备操作与创建设备操作通常使用相同的函数,底层驱动中都用xxOpen()完成;而设备驱动一旦安装,就无需删除,remove()无效,因此在底层驱动中xxRemove()为空。下面给出了ppiDrv驱动中ppiRead()的实现模板。
 
       
       


  完成以上3步,就基本实现了驱动程序,此时,在应用程序中可以用标准接口函数进行操作了。以打开ADT700中定时/计数器(驱动为pitDrv)为例。
       
  此时,在shell用iosFdShow命令可以观察到新创建的文件描述符"/pit/timer"。


  4 结 语


  本文以数据采集卡驱动程序为例,详细介绍了Vx-Works操作系统下字符设备驱动程序的开发过程。本驱动程序封装了ADT700几乎所有功能,支持标准的I/O系统接口函数。用户可将ADT700当作文件,只需定义文件名建立文件描述符,而无需关心底层实现,即可完成对他的操作,从而缩短了应用程序开发时间,提高了效率。

[1]



相关文章
· VxWorks基于AT91RM9200处理器的中断处理[7]
· VxWorks下消息、信号量的使用和任务创建[8]
· 基于AT89S52的数据采集系统[50]
· S3C4480X平台上μC/OS-Ⅱ的中断系统设计[40]
· S3C4480X平台上μC/OS-Ⅱ的中断系统设计[57]
热门评论排行
·VHDL设计中电路简化问题的
·江苏嵌入式Linux教育培训
·锐极LINUX驱动培训班定于
·基于实时操作系统μC/OS-
·ARM处理器应用开发4步骤

文章评论
    没有任何评论
*只显示最新10条评论。评论内容只代表网友观点,与本站立场无关。更多评论
发表评论
  * 请先[登陆]再进行评论,谢谢。
评分: 1分 2分 3分 4分 5分
内容: *
发帖须知:
一.所发文章必须遵守《互联网电子公告服务管理规定》;
二.严禁发布供求代理信息,公司介绍,产品信息等广告宣传信息;
三.严禁恶意重复发帖;
四.严禁对个人,实体,民族,国家等进行漫骂,污蔑,诽谤。
 
热点新闻 [更多]
 
安富利助中国中小型制造企业摆脱购买假
富士通微电子与北京航空航天大学共建M
西安市民发明用牙齿听声音的传导器
日本制成超微结构 有望大幅
中国嵌入式系统产业联盟嵌入式技术论坛
ARM联手IBM等三家公司开发32n
Hitachi Elect
中国芯片供需缺口达七成
西班牙研发出视觉鼠标 眨眼
首条OLED生产线昆山投产 
 
热门下载 [更多]
 
[ PCB设计] Protel99教程下载
[ ] 手把手学单片机20个例
[ ] 单片机做的智能台灯
[ ] 单片机入门书
[ ] linux系统移植开发文档
[ ] IC卡的读写程序
[ ] 8051单片机C语言彻底应用
[ 常用软件] 555定时器电路设计软件V1.2
[ 常用软件] 51定时器计算软件
[ ] ARM处理器应用开发4步骤
 
论坛新帖 [更多]
 
[原创]2008-10-18,...
[原创]2008-10-18,...
[原创]AKA 2008 Li...
[原创]AKA 2008 Li...
[原创]亚嵌“全民总动员”资源...
[原创]亚嵌“全民总动员”资源...
CREE代理商0755-883...
大家认为这个扫描方案可行性如何...
99SE请教个问题...
EDA工具集合(2)...

 
赞助商 [更多]
 

ICP许可证号:[粤 05056597]
联系电话:010-82517432 82517615 传真: 010-82517615

版权所有 Copyright © 2006 嵌入式技术网