欢迎来到天天文库
浏览记录
ID:33927275
大小:172.46 KB
页数:3页
时间:2019-03-01
《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
此文档下载收益归作者所有