基于Vxworks实时操作系统的并口通讯程序设计与实现摘要:结合嵌入式实时操作系统VxWorks实现风洞测控系统的实际应用,以其中的并口通讯为例,讨论了在VxWorks下实现并口通讯的关键技术,给出了基本原理、环境配置和程序示例。关键词:VxWorks;实时操作系统;嵌入式操作系统;串行通讯[Abstract]Combiningwindtunnelmeasurecontrolsystemembeddedreal-timeoperatingsystemVxWorksserialcommunicationkeytechniquesaboutrealizationserialcommunicationdiscussed.Communicationmechanism,environmentconfigurecorrespondingprogramexamplesprovided.[Keywords]VxWorks;RTOS;embeddedoperatingsystem;SerialCommunication序言目前市场上比较知名的实时操作系统有:VxWorks、PSOS、Nucleus、QNX、VRTX、WindowsCE、Palm0S、Lynx0S其中,VxWorks是一个具有微内核、可裁切的高性能强实时操作系统,在实时操作系统市场上处于领先地位。
它以其良好的可靠性和卓越的实时性被广泛地应用在通讯、军事、航空、航天等高精尖技术及实时性要求极高的领域中,如卫星通信、弹道制导、飞机导航等。在美F-16战斗机、B-2隐型轰炸机和爱国者潜艇上,甚至火星侦测器上都使用了VxWorks实时操作系统。在嵌入式实时操作系统中使用并口通讯,除了可扩充嵌入式设备通讯能力,并且可扩大其应用范围。VxWorks简介VxWorks是由wRS(windRiverSystems,Inc.)公司开发的一套具有微内核、高性能、可伸缩的实时操作系统,支持广泛的网路通讯合同,并就能按照用户的需求进行组合,其开放式的结构和对工业标准的支持使开发者只需做最少的工作即可设计出有效的适宜于不同用户要求的系统。不仅性能出色的操作系统之外vxworks实时操作系统,wRS公司还提供了优秀的实时操作系统开发工具Tornado。Tornado个高度集成的部份组成:Tornado工具,一整套强有力的交叉开发工具;VxWorks运行系统,是运行在目标机上的高性能、可裁切的实时操作系统;联接目标机和宿主机的通讯选项,加以太网、串行线路、在线仿真等。Tornado才能支持Windows、Unix等流行的工作平台和PowerPC、X86、ARM等几乎所有的目标处理器,所提供的工具可用于所有目标机,并具有两种调试模式(系统模式和任务模式)。
不仅基本的功能和开发工具外,Tornado还具有先进的系列网路产品,极大地扩充了Tornado的网路特点,并提高了嵌人式微处理器的网路特点。并口通讯基本原理并口在嵌入式系统当中是一类重要的数据通讯插口,其本质功能是作为CPU和串行设备间的编码转换器。当数据从CPU经过串行端口发送出去时,字节数据转换为串行的位;在接收数据时,串行的位被转换为字节数据。应用程序要使用并口进行通讯,必须在使用之前向操作系统提出资源申请要求(打开并口),通讯完成后必须释放资源(关掉并口)。并口通讯的优点是开发简单,在传输数据量不大、要求速率不高而传输距离较大的通讯场合得到广泛应用。在VxWorks系统设计成为任何类型的设备提供一个简单、统一、独立于设备的插口,任何对于并口的操作都可以视为对一个文件的操作,而毋须了解并口设备或程序驱动实现的细节。在并口通讯软件的设计中,当并口初始化完成后,在使用之前借助open()打开相应并口,之后进行配置。VxWorks提供终端和伪终端设备驱动。Tty驱动针对实终端;pty针对仿真终端的程序。Tty设备有两种操作模式:raw模式和line模式。在raw模式下,每位刚从设备输入的字符对读者都是有效的;在line模式下所有输入字符被储存,直至NEWLINE字符输入。
设备选项字使用带FIOSETOPTIONS功能的ioctl()程序来设置。配置完成后,根据并口打开时的读写标志,调用函数write()、read()对并口进行只读操作、只写操作或同时进行读写操作。为增强数据接收的实时性linux下载工具,可采用中断形式,借助VxWorks提供的select函数的风波触发机制,将读并口的任务阻塞使其仍然等待数据,当有数据来到的时侯该任务会立即手动响应,提升系统的实时性。环境配置在本实时应用系统中采用486机作为目标机,并口通讯时目标机VxWorks系统启动盘的制做步骤:更改通用配置文件\Tornadotargetconfigpc486config.h。在config.h文件中加入以下宏定义:#defineINCLUDE_WDB#defineINCLUDE_WDB_TTY_TEST#undefWDB_COMM_TYPE#defineWDB_COMM_TYPEWDB_COMM_SERIAL/*定义通讯形式为并口连结*/#defineWDB_TTY_CHANNEL/*通道号*/#defineWDB_TTY_BAUD9600/*并口速度,可设置至38400*/#defineWDB_TTY_DEV_NAME"tyCo/1"#defineCONSOLE_TTY#defineDEFAULT_BOOT_LINE"fd=0,0(0,0)hostname:/fd0/vxWorksh=主机ipe=目标机ipu=主机上的登陆用户名"在Tornado集成环境中执行菜单命令ProjectMakePC486CommonTargetsclean删掉以前生成的文件,执行菜单命令ProjectMakePC486BootRomTargetsbootrom_uncmp编译链接生成bootrom_uncmp;再选择VxWorksTarget,编译生成vxworks;拷贝\Tornadotargetconfigpc486bootrom_uncmp至\Tornadohostbin重命名文件bootrom_uncmp为bootrom;在目录\Tornadohostbin下执行命令mkbootbootrom;(7)拷贝\Tornadotargetconfigpc486VxWorks至软驱;将系统制做盘插入目标机光驱,加电启动目标机即载入VxWorkst系统。
[3]程序示例5.1在程序中加入下述头文件#includevxWorks.h#include"strLib.h"#includestring.h#includesioLib.h#includeioLib.h#includestdio.h#includeioctl.h#includeselectLib.h#include"types/vxTypesOld.h"5.2打开并口intopen_com1(void)//打开并口1函数intsfd;//并口设备文件描述符sfd=open(”/tyCo/0”,0_RDWR,0);//打开并口并返回并口设备文件描述符if(sfd==ERROR)//假如不能打开并口1则复印出错信息printf("Youcan’topenportcom15.3配置并口intconfig_com1(void)//并口1配置函数ioctl(sfd,FIOSETOPTIONS,OPT_LINE);//设置并口工作模式为行模式:LINE_MODEioctl(sfd,FIOBAUDRATE,9600);//设置并口码率为9600bpsioctl(sfd,FIOFLUSH,0);//清空输入输出缓冲ioctl(sfd,SIO_HW_OPTS_SET,CS8|STOPB|PARENB|PARODD);//设置位数据位,2位停止位,带校准位,奇校准5.4并口接收数据intaccept_com1(void)//从并口1接收数据函数accept_buf;FD_ZERO(&fds_data);//位码置零FD_SET(sfd,&fds_data);//初始化位码width=sfd+1;//任务阻塞等待读并口打算完毕;if(select(width,&fds_data,NULLvxworks实时操作系统,NULL,NULL)==ERROR)return(ERROR);read(sfd,accept_buf,sizeof(accept_buf));//从并口读字符printf("acceptmessageaccept_buf);//输出接收到的信息5.5并口发送数据intsend_com1(void)//向并口1发送数据函数char*send_bufDatahadaccept!";//待发送数据//任务阻塞等待写并口打算完毕if(select(width,NULL,&data_fdslinux,NULL,NULL==ERROR)return(ERROR)if(FD_ISSET(sfd,&fds_data))//检测并口打算好就向并口写数据write(sfd,send_buf,sizeof(send_buf))5.6关掉并口close(sfd);结束语RS-232并口通讯虽速度不高,但RS-422标准串行口通讯则采用了双线传输,大大降低了抗串扰干扰的能力,最大数据传输速率可以达到10Mb/s,这对于远程数据交换具有极大的优势。
本文描述了在实时操作系统VxWorks中借助并口实现数据通讯的方式,并给出了示例程序,目前早已在我们开发的风洞测控系统中获得了应用。该方式可将其并口通讯可适用于工业控制等多方面,具有广泛的适应性。在嵌入式实时操作系统中使用并口通讯,除了可扩充嵌入式设备通讯能力,并且可扩大其的应用范孔祥营,柏当归.嵌入式实时操作系统vxworks及其开发环境Tornodo[M].上海:中国电力出版社,2002.01陈智育,温彦军,陈琪编绘VxWorks程序开发实践.上海:人民邮电出版社,2004.05李方敏编绘VxWorks中级程序设计.上海:北大学院出版社,2004.05NdB4DyVoroj8stx3bqCUtLCUtL00DpGDpGDpG88gg9595zsw393393XX6464UTF3RdLrmZlVineH2cyEwpoemorCpjuWVmh0eIZaUOM6OZH4Hm7QZrQZr77ffaGdmffaGdm922eFzv5edk3OkXTiGCXmu3bUwefef22LL3131wnLMJR9ZLyd9NNB7ZBxK45zEzQAILG3IZi7aOB9G6cBoHuE6lX5qOixqo6NsHrD5vKZeGaiO2gDRuBx5B3WoACurlGmHnGyFO6swKaqAphohVVvc9IhDLPujQiszoQalhy2oJ0kbDLzTNCLGL98UZluzBzB99VcirMOVcirMO6262zWTWT77JJ88YY5050zQQLEMcefHEMcefH55CwCw3232c9V8sLyaNKCpmEqzwTkuZknGF6ChCh6060qq22TQUTQUTQU99dQDeQDe00pp301301XpQpI9iC8TsMEsm9HTMU9LMjgMWG6tjhmFiHmsor7qKwcnOXQVjMgWrBSg8wcS6EjAZz9VMPfVMJ0P7tyypaAN0GNWo6jsEfk6CRDONv8JhB9YA3YFydcV3M9JbdgGfnGhYuCggZatSrgp6pLlXUtb2F2qHtmkFrduuS0GqrYP2j3CgKCmHvjBtfeIsMOmmqeaDmveo5vfvUYJCpAxg0TJ8S0FnhNTTmcC4SytOYyB03FOFO66LL6262CR5mMKSllgq7iRC9sMEkrGY72IJ5Dc8SbLG1gqqk0D7iiqTYq5Wj6MBvsxk30MY9XOVMAAT1WUjd8qPBolF75PLF9K9i6mjdfyAKL6NfcUDbcXncXn11YZEFYZEFYZEF77QQ38382GDq1lvjl5y9f5piOaVbBkccX8AXXUWEv2H4tXerZTqWYdLSjWqXvSwHdaItaNCHZkEdnlprve11itit63umhoumho00dzIS5zQIElGBGZxnOiexh