嵌入式系统在气浮转台无线测控实验中的应用研究.docx
《嵌入式系统在气浮转台无线测控实验中的应用研究.docx》由会员分享,可在线阅读,更多相关《嵌入式系统在气浮转台无线测控实验中的应用研究.docx(25页珍藏版)》请在冰豆网上搜索。
嵌入式系统在气浮转台无线测控实验中的应用研究
嵌入式系统在气浮转台无线测控实验中的应用研究
-基于实时嵌入式系统的气浮转台无线测控通信子系统的软件和硬件设计
摘要
摘要:
从气浮转台的概念入手,以卫星气浮转台实验为背景,介绍了基于实时嵌入式系统的气浮转台无线测控通信子系统的设计。
使用VxWorks操作系统并对其进行简单的介绍和分析。
对VxWorks中任务间通信与同步机制分析。
利用VxWorks操作系统实时性强、多任务调度的特点,对转台上的串口数据采集、转台上下的无线网络通信进行了任务化编程。
在线测试表明,嵌入式实时操作系统VxWorks可以合理而快速地对各任务进行实时而可靠的管理和调度,嵌入式系统可以出色地完成转台无线测控通信任务。
关键词:
气浮转台无线测控VxWorks嵌入式系统
Applicationofembeddedsystem
inwirelessTT&Cexperimentwithair-bearingturntable
Abstract:
Atthebackgroundoftheexperimentofsatelliteair-bearingturntable,thedesignofwirelessTT&Csub-systembasedonrealtimeembeddedsystemisintroducedinthispaper.UsestheVxWorksoperatingsystemandcarriesonthesimpleintroductionandtheanalysisforit.ToVxWorksindutycorrespondenceandsynchronizedmechanismanalysis.Usingthecharactersofreal-timeandmulti-taskofVxWorksOS,tasksofserialdatacollectionandwirelessLANcommunicationbetweenturntableandmain-controlcomputeronthegroundaremodularized.TheOn-linetestindictsthatVxWorksOScanmanageandcontroleveryrealtimetaskquicklyandcredibly,andembeddedsystembehaveswellinwirelessTT&Ctask.
Keywords:
air-bearingturntable;wirelessLAN;VxWorks;embeddedsystem
目录
1.嵌入式系统VxWorks的介绍·················································································3
1.1.嵌入式操作系统VxWorks的介绍········································································3
1.2.嵌入式操作系统VxWorks中任务间通信与同步机制分析·····································8
1.3.系统编程方法···································································································11
2.基于VxWork的转台测控通信端软件开发·····························································15
2.1.实时嵌入式操作系统VxWorks·············································································15
2.2.测控系统软件设计·····························································································15
2.2.1.串口通信··································································································15
2.2.2.网络通信··································································································17
3.硬件实验环境·········································································································21
3.1.台上实验环境·····································································································21
3.2.台下实验环境·····································································································21
3.3.转台上下的通信链路··························································································21
4.多任务调度测试·····································································································22
5.卫星气浮转台实验总结·························································································23
参考文献······················································································································24
1.嵌入式系统VxWorks的介绍
1.1.嵌入式操作系统VxWorks的介绍
VxWorks操作系统是美国WindRiver公司于1983年设计开发的一种嵌入式实时操作系统(RTOS),是嵌入式开发环境的关键组成部分。
良好的持续能力、高性能的内核以及友好的用户开发环境,在嵌入式实时操作系统领域占据一席之地。
它以其良好的可靠性和卓越的实时性被广泛地应用在通信、军事、航空、航天等高精尖技术及实时性要求极高的领域中,如卫星通讯、军事演习、弹道制导、飞机导航等。
在美国的F-16、FA-18战斗机、B-2隐形轰炸机和爱国者导弹上,甚至连1997年在火星表面登陆的火星探测器上也使用到了VxWorks。
WRS(WindRiverSystem)公司是国际著名的嵌入式实时操作系统的供应商。
其产品VxWroks早期运行在VRTX、pSOS及自身运行较慢的WIND内核等实时内核之上,从5.0发行起,不再支持别的内核,只运行自己的WIND内核(重写的WIND内核)。
这个系统的基本设计思想是要充分利用VxWORKS和Unix/Windows的优点,使之与嵌入式软件相互补充达到最优。
Unix和Windows虽然用户界面友好、开发工具丰富,但是由于嵌入式实时系统的时间、空间的局限性,他们不适用于实时应用开发。
传统的实时操作系统提供的用于开发的环境资源(非实时组件)又非常贫乏。
VxWORKS使嵌入式系统开发人员能在嵌入开发环境下更好的使用Unix/Windows。
VxWORKS能够一方面处理紧急的实时事务,另一方面,让主机用于程序开发和非实时的事务。
开发者可以根据应用需要恰当地裁减VxWORKS。
开发时可以包含附加的网络功能加速开发过程,在产品最终版本中,再去掉附加功能,节省系统资源。
WRS公司还提供最新一代的IDE----主机上的集成开发环境Tornado,开发者通过Tornado来编辑、编译、连接和存储实时代码,但是实时代码的运行和调试都在VxWORKS上进行。
最终生成的目标映像可以脱离主机系统和网络,单独运行在ROM、磁盘(软/硬)或FLASH上。
主机系统和VxWORKS可以在一个混合应用中共同工作:
通过网络联接,主机使用VxWORKS系统作为实时服务器。
1995年开发出的Tornado,赢得电子设计新闻该年度的“嵌入式开发软件创新奖“(ElectronicDesignNews'“EmbeddedDevelopmentSoftwareInnovationoftheYear”award)[9]。
2特点
支持多种硬件环境VxWORKS操作系统支持的CPU包括:
PowerPC、68K、CPU32、Space、i960、x86、Mips等等;同时支持RISC、DSP技术。
微内核结构,任务间切换时间短,中断延迟小,网络流量大。
较好的可剪裁能力,可裁减组件超过80个,用户通过交叉开发环境方便地进行配置。
支持应用程序的动态连接和动态下载,使开发者省去了每次调试都将应用程序与操作系统内核进行连接和下载的步骤,缩短了编辑/调试的周期。
• 较好的兼容性:
兼容POSIX1003.1b标准(PortableOperatingSystemInterfaceforcomputerEnvironments,=PortableOperatingSystemUNIX,IEEE1003.1)。
• 高可靠性、高可用性、高安全性。
3组成
VxWORKS包括进程管理、存储管理、设备管理、文件系统管理、网络协议及系统应用等部分,占用很小的存储空间,支持高度裁减,保证系统能以较高的效率运行。
VxWORKS体系结构如图1.5所示[9][10][59]。
VxWORKS包括以下部分:
Wind内核
Wind内核包括基于优先级的抢占式多任务调度机制、任务间的同步和进程间的通讯机制以及中断处理、看门狗和内存管理机制。
不仅提供多种信号量支持任务间同步和互斥的机制,而且提供消息队列、管道、套接字和信号等机制支持进程间通信。
I/O系统
VxWORKS提供了快速灵活的与ANSIC兼容的I/O系统,包括UNIX标准的缓冲I/O和POSIX标准的异步I/O。
还包括多个驱动程序(包括网络驱动、管道驱动、RAM盘驱动、SCSI驱动、磁盘驱动、显示驱动、键盘驱动、并口驱动等)。
文件系统
VxWORKS提供了快速文件系统适合于实时系统应用。
它拥有多种支持使用块设备的本地文件系统。
这些设备都使用一个标准接口,从而使得文件系统能够灵活地在设备驱动程序上移植。
板级支持包BSP(BoardSupportPackage)
板级支持包对各种板的硬件功能提供了统一的软件接口,它包括硬件初始化、中断的产生和处理、硬件时钟和计时器管理、局域和总线内存地址映射、内存分配等等。
每个板级支持包括一个ROM启动(RootROM)或其他启动机制。
网络设施与产品
虚拟内存与共享内存
VxWORKS的VxWMI为带有MMU(MemoryMappingUnit)的目标板提供了虚拟内存机制。
VxMP提供了共享信号量、消息队列和不同处理器之间的共享内存区域。
目标代理(TargetAgent)
目标代码遵循WDB(WindDebug)协议,允许目标机与主机上的Tornado开发工具相连。
如图1.6所示,目标代理是以VxWORKS的一个任务的形式运行。
Tornado目标服务器向目标代理发送调试请求。
调试请求通常决定目标代理对系统中其他任务的控制和处理。
默认状态下,目标服务器与目标代理通过网络进行通信,用户也可以改变通信方式。
VxWORKS操作系统自1996年进入中国,广泛应用于通信、国防、工业控制、医疗设备等嵌入式实时应用领域。
它是研究嵌入式实时操作系统的一个极好对象。
实时操作系统和分时操作系统的区别
从操作系统能否满足实时性要求来区分,可把操作系统分成分时操作系统和实时操作系统。
分时操作系统按照相等的时间片调度进程*流运行,分时操作系统由调度程序自动计算进程的优先级,而不是由用户控制进程的优先级。
这样的系统无法实时响应外部异步事件。
实时操作系统能够在限定的时间内执行完所规定的功能,并能在限定的时间内对外部的异步事件作出响应。
分时系统主要应用于科学计算和一般实时性要求不高的场合。
实时性系统主要应用于过程控制、数据采集、通信、多媒体信息处理等对时间敏感的场合。
VxWorks的特点
可靠性
操作系统的用户希望在一个工作稳定,可以信赖的环境中工作,所以操作系统的可靠性是用户首先要考虑的问题。
而稳定、可靠一直是VxWorks的一个突出优点。
自从对中国的销售解禁以来,VxWorks以其良好的可靠性在中国赢得了越来越多的用户。
实时性
实时性是指能够在限定时间内执行完规定的功能并对外部的异步事件作出响应的能力。
实时性的强弱是以完成规定功能和作出响应时间的长短来衡量的。
VxWorks的实时性做得非常好,其系统本身的开销很小,进程调度、进程间通信、中断处理等系统公用程序精练而有效,它们造成的延迟很短。
VxWorks提供的多任务机制中对任务的控制采用了优先级抢占(PreemptivePriorityScheduling)和*转调度(Round-RobinScheduling)机制,也充分保证了可靠的实时性,使同样的硬件配置能满足更强的实时性要求,为应用的开发留下更大的余地。
可裁减性
用户在使用操作系统时,并不是操作系统中的每一个部件都要用到。
例如图形显示、文件系统以及一些设备驱动在某些嵌入系统中往往并不使用。
VxWorks由一个体积很小的内核及一些可以根据需要进行定制的系统模块组成。
VxWorks内核最小为8kB,即便加上其它必要模块,所占用的空间也很小,且不失其实时、多任务的系统特征。
由于它的高度灵活性,用户可以很容易地对这一操作系统进行定制或作适当开发,来满足自己的实际应用需要。
对一个实时内核的要求
一个实时操作系统内核需满足许多特定的实时环境所提出的基本要求,这些包括:
多任务:
由于真实世界的事件的异步性,能够运行许多并发进程或任务是很重要的。
多任务提供了一个较好的对真实世界的匹配,因为它允许对应于许多外部事件的多线程执行。
系统内核分配CPU给这些任务来获得并发性。
抢占调度:
真实世界的事件具有继承的优先级,在分配CPU的时候要注意到这些优先级。
基于优先级的抢占调度,任务都被指定了优先级,在能够执行的任务(没有被挂起或正在等待资源)中,优先级最高的任务被分配CPU资源。
换句话说,当一个高优先级的任务变为可执行态,它会立即抢占当前正在运行的较低优先级的任务。
任务间的通讯与同步:
在一个实时系统中,可能有许多任务作为一个应用的一部分执行。
系统必须提供这些任务间的快速且功能强大的通信机制。
内核也要提供为了有效地共享不可抢占的资源或临界区所需的同步机制。
任务与中断之间的通信:
尽管真实世界的事件通常作为中断方式到来,但为了提供有效的排队、优先化和减少中断延时,我们通常希望在任务级处理相应的工作。
所以需要杂任务级和中断级之间存在通信。
1.2.嵌入式操作系统VxWorks中任务间通信与同步机制分析
多任务内核、任务调度机制、任务间通信和中断处理机制,这些都是VxWorks运行环境的核心。
多任务处理和任务间通信是实时操作系统的基石。
一个多任务环境允许将一个实时应用构造成一套独立任务的集合,每一个都有自己独立的执行路线和自己的系统资源,完成不同的功能。
任务间通信的机制则允许任务间的同步和通信,以调整系统的行为。
VxWorks中,任务间通信的机制包括从快速信号量到消息队列、管道、网络传输套接口。
在一个实时系统中,可能有许多任务作为一个应用的一部分执行。
系统必须为这些任务提供快速且功能强大的通信机制。
内核也要提供能有效地共享不可抢占的资源或临界区所需的同步机制。
本文描述了VxWorks任务间通信与同步机制的几种方法,重点讨论了信号量在任务间的同步与互斥中的应用。
任务间通信
为了提供完整的多任务系统的功能,VxWorks内核提供了一套丰富的任务间通信与同步的机制。
这些通信功能使一个应用中各个独立的任务协调它们的活动。
任务间通信与同步的机制包括:
共享内存,数据简单的共享;信号量,基本的互斥和同步;消息队列和管道,同一CPU内多任务间消息传递;Sockets和远程调用,任务间透明的网络通信;Sinals,用于异常处理。
共享数据结构
任务间通信最直接有效的方法是访问共享数据结构。
由于所有VxWorks任务共存于单一的线性地址空间,多任务间共享数据结构是非常方便的,如图1所示。
不幸的是,共享地址空间具有上述优点的同时,带来了未被保护内存的重入访问的危险。
互斥
当用一个共享地址空间作为数据交换时,通过互斥访问避免资源竞争就变为必要。
用来获得一个资源的互斥访问的许多机制仅在这些互斥所作用的范围上存在差别。
实现互斥的方法包括禁止中断、禁止任务抢占和通过信号量进行资源锁定。
(1)中断禁止
最强的互斥方法是屏蔽中断。
这样的锁定保证了对CPU的互斥访问。
这种方法当然能够解决互斥的问题,但它对于实时是不恰当的,因为它在锁定期间阻止系统响应外部事件。
长的中断延时对于要求有确定响应时间的应用来说是不可接受的。
因此不适合作为一种通用的互斥方法,但在涉及到ISR需要互斥时,中断禁止又是必要的。
但在任何情况下,应该使中断上锁时间尽量短。
(2)抢占禁止
禁止抢占提供了强制性较弱的互斥方式。
当前任务运行的过程中不允许其他任务抢占,而中断服务程序可以执行。
这也可能引起较差的实时响应,就象被禁止中断一样,被阻塞的任务会有相当长时间的抢占延时,就绪态的高优先级的任务可能会在能够执行前被强制等待一段不可接受的时间。
为避免这种情况,在可能的情况下尽量使用信号量实现互斥。
信号量
VxWorks信号量是提供任务间通信、同步和互斥的最优选择,提供任务间最快速的通信。
也是提供任务间同步和互斥的主要手段。
VxWorks提供3种信号量来解决不同的问题。
二进制 最快的最常用的信号量,可用于同步或互斥。
互斥 为了解决内在的互斥问题、优先级继承、删除安全和递归等情况而最优化的特殊的二进制信号量。
计数器 类似于二进制信号量,但是随信号量释放的次数改变而改变。
二进制信号量
二进制信号量能够满足任务间的互斥和同步,需要的系统开销最小。
二进制信号量可以看成一个标志,对应资源是可用还是不可用。
当一个任务调用semTake()请求一个信号量时,如果此时信号量可用,信号量会被清零,并且任务立即继续执行;如果信号量不可用,任务会被阻塞来等待信号量。
当一个任务调用semGive()释放一个二进制信号量时。
如果信号量已经可用,释放信号量不会产生任何影响;如果信号量不可用并且没有任务等待使用该信号量,信号量只是被简单地置为可用;如果信号量不可用并且有一个或多个任务等待该信号量,最高优先级的任务被解阻塞,信号量仍为不可用。
互斥
当两个以上的任务共享使用同一块内存缓冲区或同一个I/O设备之类的资源时,可能会发生竞争状态。
二进制信号量可以通过对共享资源上锁,实现高效的互斥访问,不象禁止中断或禁止抢占,二进制信号量将互斥仅仅限于对与之联系的资源的访问,并且比禁止中断和禁止抢占提供更精确的互斥粒度。
使用时创建用于保护资源的二进制信号量,初始时信号量可用。
当任务需要访问这个资源时,首先取得这个信号量,所有其它想要访问这个资源的任务将被阻塞。
当任务完成了对该资源的访问时,释放该信号量,允许其他任务使用该资源。
因此所有对一个需要互斥访问资源的操作由semTake()和semGive()对一起来实现。
semTake(semMutex,WAITFOREVER)
临界区,某一时刻仅被一个任务访问
semGive(semMutex)
同步
信号量另一种通常的用法是用于任务间的同步机制。
在这种情况下,信号量代表一个任务所等待的条件或事件。
最初,信号量是不可用的。
一个任务或中断处理程序释放该信号量来通知这个事件的发生。
等待该信号量的任务将被阻塞直到事件发生、该信号量可用。
一旦被解阻塞,任务就执行恰当的事件处理程序。
信号量在任务同步中的应用对于将中断服务程序从冗长的事件处理中解放出来以缩短中断响应时间是很有用的。
互斥信号量
互斥信号量是一种特殊的二进制信号量,用于解决具有内在的互斥问题:
优先级继承、删除安全和对资源的递归访问等情况。
互斥信号量与二进制不同点在于:
①它仅用于互斥;②仅能由取(semTake())它的任务释放;③不能在ISR中释放(semGive())。
(1)优先级继承
优先级倒置发生在一个高优先级的任务被迫等待一段不确定时间,等待一个低优先级任务完成。
VxWorks允许使用优先级继承算法,在互斥信号量中使用选项SEM-INVERSION-SAFE,将使能优先级继承算法,优先级继承协议确保拥有资源的任务以阻塞在该资源上的所有任务中优先级最高的任务的优先级执行,直到它释放所拥有的所有信号量,然后该任务返回到正常状态。
因此这个“继承的高优先级”任务受到不会被任何中间优先级任务抢占的保护。
(2)删除安全
另一个互斥问题涉及到任务删除。
在一个受信号量保护的