vxworks嵌入式实时操作系统中串口驱动程序的研究

vxworks嵌入式实时操作系统中串口驱动程序的研究

ID:33927275

大小:172.46 KB

页数:3页

时间:2019-03-01

vxworks嵌入式实时操作系统中串口驱动程序的研究_第1页
vxworks嵌入式实时操作系统中串口驱动程序的研究_第2页
vxworks嵌入式实时操作系统中串口驱动程序的研究_第3页
资源描述:

《vxworks嵌入式实时操作系统中串口驱动程序的研究》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、万方数据2009正第45卷增刊铁道通信信号RAILWAYSIGNALLING&COMMUNICA,110N2009VoL45SupplementVxWorks嵌入式实时操作系统中串口驱动程序的研究房海云‘摘要:讨论了在嵌入式实时操作系统VxWorks下实现串行设备驱动的层次关系.以mpc860嵌入式处理器板为例,给出了在VxWorks的BSP(板级支持包)中串口SMC驱动程序的实现,以及加载原理。关键词:操作系统;串口驱动程序;嵌入式Abstract:neobjectofthisarticleistoillustr

2、atethestructureoftheserialportdriverinembeddedreal—timeVxWorksoperatingsystem.TherealizationoftheserialportdriverintheVxWorksBSP(boardsupportpackage)isanalyzedbyusingMPC860processorboard.Andhowtoloadtheserialportdriverisdiscussed.Keywords:Operatingsystem;Seria

3、lPortDriver;Embedded1嵌入式操作系统VxWorksVxWorks操作系统是美国WindRiver公司开发的一套具有微内核、高性能、可伸缩的实时操作系统,支持广泛的通信协议,并能够根据用户的需求进行组合。开放式的结构和对工业标准的支持,使开发者只需做最少的工作,即可设计出有效的适合于不同用户要求的系统。多任务、可裁减、可靠性好、实时性高的特点,使其成为业界公认的、性能出色的一种实时操作系统,被广泛地应用在通信、军事、航空、航天等高精尖技术,及实时性要求极高的领域中。2串行设备驱动程序原理在VxWo

4、rks中,I/O系统提供了与设备无关的用户接口。这样,对于串行设备的任何操作都可以视为对1个文件的操作,应用程序可以通过标准的接口open、read、write、ioctl、close等访问串行设备,而不必了解驱动程序实现的细节。2.1I/0系统与串口驱动层次结构VxWorks串行设备的驱动采用了3层抽象的软件结构:标准I/O库(ioLib),tty库(ttyDrv/tyLib)和底层SMC驱动(xxDrv),如图l所示。从图1可以看出串口的驱动并不是直接和I/O系统交互,中间存在一个ttyDrv(包括tyLib)

5、。实际}北京铁路信号工厂高级工程师,102613北京收稿日期:2009-06-26上,内核启动时,在驱动程序表中安装的不是串行设备驱动程序的函数,而是ttyDrv/tyLib提供的函数。胞用程序●t/0系统(ioI.ib)IlttV。rV卜.-It,¨nlI串行设备驱动稃序l底层串口驱动图1∥0系统与串口设备驱动层次图串行设备tty驱动(ttyDrv/tyLib),使I/0系统独立于具体串口驱动,保证了代码可复用性和接口一致性。串口驱动和底层硬件有关,因此,在编写串口驱动时,需要了解串口tty驱动的原理,以及串口输

6、入、输出过程。2.2tty驱动原理创建tty设备包括驱动程序初始化和创建设备2步,其驱动原理如图2所示。1.驱动程序初始化。ttyDrv()函数是一个虚拟的驱动,既管理着和I/O的交互。又管理着和底层硬件驱动的交互。它调用iosDrvlnstall(),将ttyDrv和tyLib中的函数安装到系统的驱动程序一37—万方数据铁道通信信号2009年第45卷增刊心JI{j程序usrRootOpen()ioctl0read()write0I/0系统+ttyDr”-·-ttyDevCreate(j圆m∞00ttyIoc,l(

7、)lt,-。ct·c,——tylRelLd0tyWrte()tyLibtyDevInit0tylRd0tyITx()串行设备驱动稃序图2ttyDrv驱动原理表中。ttyDrv负责ttyOpen、ttyIoctl的接人,而tyHb负责tyRead、tyWrite的接入。2.创建设备。创建设备函数ttyDevCreate()主要分配并初始化设备描述结构,调用tyDevInit()进行tyLib库初始化,初始化selectLib(),创建输入、输出环形缓冲,创建信号量,调用iosDe—vAdd()加设备到设备列表,以中断

8、方式启动串口通道。它还进行的另一个重要操作是安装了tyLib设备提供的输入、输出回调函数tyITx()和tylRd(),以便给底层串行设备驱动调用。3.tty的输入、输出。当tty设备创建后,用open()打开相应的串口,依据串口打开时的读、写标志,可以对串口进行读、写操作及串口配置。用户程序的基本I/O读写请求由tyI.ib的tyWrite()和tyRea

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。