免费论文查重: 大雅 万方 维普 turnitin paperpass

浅析串口基于VxWorks多串口卡驱动设计

最后更新时间:2024-02-22 作者:用户投稿原创标记本站原创 点赞:9066 浏览:34793
论文导读:数据结构,ttyDrv对一个或多个串行设备进行管理,它将系统的I/O请求作相应的处理后,再传递给对应的设备驱动程序,由设备驱动程序操作物理设备3。如(图1)所示。VxWorks的虚拟设备ttyDrv由tyLib库支持,它实现了与设备无关的部分,这样处理的好处之一就是,驱动程序的开发人员要做的仅仅是根据系统给出的接口实现驱动程序并将其
摘要:详细分析和讨论了VxWorks下的驱动开发的特点,以及板级支持包BSP的设备支持结构和原理,并就MPC8245为处理器的开发板EnCorePP1下MOXA多串口卡CP-132的驱动设计和开发为实例,进行了具体剖析。
关键词:VxWorks 嵌入式开发板 多串口卡CP-132
1007-9416(2013)06-0157-02
1 引言
VxWorks操作系统是美国的Wind River公司设计开发的一种嵌入式实时操作系统[RTOS]。在近入我国的短短几年中,以其良好的可靠性和卓越的实时性能逐步占领通信、自动化控制、国防等各个高精尖技术的应用领域。由于VxWorks是根据应用环境开发设计嵌入式系统,但嵌入式系统的多样性导致所采用的硬件具有很大的差异,因此,在基于VxWorks的嵌入实时系统设计与开发中,外部设备的管理及其驱动的开发显得尤为重要。本文讨论了VxWorks中设备管理的一些特点,以工业中常用的多串口卡这一硬件为例进行分析,并给出了关于串行设备驱动程序开发的整体方案。
2 VxWorks驱动程序的实现

2.1 VxWorks的I/O系统

实时操作系统VxWorks是模块化设计,在I/O软件设计上有明显的分层次、模块化的特点,它模块功能明确,规范接口,在编写使用设备上文件的程序时,不用为每一种设备类型而修改程序,保证了程序的可移植性。VxWorks的I/O系统由基本I/O、带缓存的I/O和格式I/O组成,并提供标准的API接口。基本I/O接口与Unix兼容,而带缓存的I/O接口和格式I/O接口则与ANSI C兼容2。在本文重点涉及基本I/O。

2.2 VxWorks的设备管理和驱动

串行设备被VxWorks视为一种特殊的字符设备,不能直接挂在I/O系统中,它的特殊还在于它的层次化设计,为了统一管理硬件驱动所以加入了“中间模块”。由VxWorks的虚拟设备ttyDrv来统一管理串行硬件设备,再挂在I/O系统上。虚拟设备ttyDrv视为一个字符设备。所以,它与其它字符设备一样,将自己的7个标准函数入口写入I/O系统的设备驱动程序表上,把它的设备描述符加入到设备列表中。在另一边,虚拟设备ttyDrv与实际的设备驱动程序打交道。通过设备驱动程序提供的回调函数及相关的数据结构,ttyDrv对一个或多个串行设备进行管理,它将系统的I/O请求作相应的处理后,再传递给对应的设备驱动程序,由设备驱动程序操作物理设备3。如(图1)所示。
VxWorks的虚拟设备ttyDrv由tyLib库支持,它实现了与设备无关的部分,这样处理的好处之一就是,驱动程序的开发人员要做的仅仅是根据系统给出的接口实现驱动程序并将其挂在虚拟设备ttyDrv上3。这样统一规范,相对的缩短了软件开发时间。
3 多串口卡驱动CP-132的设计和开发
该串口卡是以PLX9052为芯片的串口转接设备,可以插在PCI插槽上,为开发板扩展2个RS422/RS485的串口。现有的该设备只支持Windows系列和linux、FreeBSD操作系统,并不提供支持VxWorks的驱动,但提供linux下的驱动源码,参照此源码,结合VxWorks下PCI设备的开发框架和流程,自行设计和开发了该串口卡的驱动,该驱动挂接在VxWorks操作系统下,已经成功地驱动EnCorePP1开发板上安装的MOXA CP-132串口通讯卡。由于篇幅原因这里只给出主要数据结构和函数列表。

3.2 函数列表

3.3 多串口卡的发送与接受

串口驱动的发送与接受实现方法通常包含两种:基于查询的方法和基于中断的方法。
基于查询的方法中,有一个很明显的弊病,那就是在发送一个字符串的过程中,CPU不能去做其它的事情,必须等待全部字符发送完成后返回。这样就有大量的指令周期被浪费,而且在发送较长的字符串时会严重影响系统的实时性。所以在实际的系统中一般更多的采用中断的方法一般论文格式范文www.7ctime.com
,发送一个字节之后,转去做其它的处理,发送完后自动进入发送中断,再发送下一个字节。
为了方便中断服务程序和上层程序进行交互,本驱动设计了一个双缓冲队列缓冲区进行数据的收发。一个是发送缓冲区TxBuf,一个是接收缓冲区RxBu论文导读:作系统.北京:机械工业出版社,1999.11.143-144.陈智育,温彦军,陈琪著.VxWorks程序开发实践.北京:人民邮电出版社,2004.5.155-174.周启平,张杨著.VxWorks下设备驱动程序及BSP开发指南.北京:中国电力出版社,2004.9.86-103、160-169.罗国庆等编著.VxWorks与嵌入式软件开发.北京:机械工业出版社,200

3.9.上一页12

f,并为每个缓冲区分别设置两个指针,一个记录中断服务程序将处理的字节,另一个记录使用串口服务的上层程序将处理的字节。在缓冲区够大的情况下,上层程序可以一次将要发送的数据全部放入发送缓冲区中,而不是一次发送一个字节。
4 结语
本文较全面介绍了基于vxworks的高速多串口卡的通讯软件的设计。驱动程序中发送与接受的缓冲区的大小需要根据实际应用的情况决定,本串口驱动软件应用在地形跟随半物理仿真系统中,系统工作稳定,可以满足系统实时发送与接收数据的要求。
参考文献
Andrew S. Tanenbaum 著,陈向群等译.现代操作系统[M].北京:机械工业出版社,1999.1

1.143-144.

陈智育,温彦军,陈琪著.VxWorks程序开发实践[M].北京:人民邮电出版社,2004.

5.155-174.

[3]周启平,张杨著.VxWorks下设备驱动程序及BSP开发指南[M].北京:中国电力出版社,2004.9.86-10

3、160-169.

[4]罗国庆等编著.VxWorks与嵌入式软件开发[M].北京:机械工业出版社,2003.9.