400-878-1895px51870017
葩星1752902151 淘宝旺旺passiontechinc
sales@51LM.cn 13296027252
  加载中,请稍候...
浏览历史

 


VxWorks的多任务通信机制

关键词: VxWorks,多任务通信机制


简介:/* Generator: eWebEditor */p.MsoNormal, li.MsoNormal, div.MsoNormal {margin:0cm;margin-bottom:.0001pt;text-align:justify;text-justify:inter-ideograph;font-size:10.5pt;font-family:"Times New Roman";}div.Section1 {page:Section1;}/* Generator: eWebEditor */p.MsoNormal, li.MsoNormal, div.MsoNormal {margin:0cm;margin-bottom:.0001pt;text-align:justify;text-justify:inter-ideograph;font-size:10.5pt;font-f...
品 牌 葩星 葩星
产 地 中国
型 号 PXF0261
折 扣 其他电询
咨询专家:

夏工-工业总线-工业自动化-实时仿真

夏工-工业总线-工业自动化-实时仿真 ID:2937

机电电子工程专业硕士,机械设计制造及其自动化/计算机双学士,高级工程师

具有丰富的从业、管理经验,曾在机电工程公司,资深设计代理公司工作。历任组织、经理等岗位,同时具有深厚的理论基础和项目项目研发经历。...

[MORE]

赵工-总线系统-嵌入式系统-工业自动化

赵工-总线系统-嵌入式系统-工业自动化 ID:2940

机械电子工程,嵌入式系统专家,高级工程师

嵌入式项目开发,ARM,Freescale,Infilion等系列单片机系统开发,DSP嵌入式系统开发,FPGA系统开发,项目经验丰富。


...

[MORE]

产品说明:

 

 

VxWorks的多任务通信机制

 

一、 VxWorks操作系统介绍

  VxWorks实时操作系统式由美国WindRiver公司推出的一个运行在目标机上的高性能、可裁减的嵌入式实时操作系统,VxWorks的核心是高性能的微内核wind,其具有快速任务切换、中断支持、抢占式和时间片轮转调度机制等特点,保证对外部事件的快速反应。除了微内核,VxWorks还包括了I/O系统、文件系统、TCP/IP网络系统、图形系统、虚拟内存管理、板极支持包BSP (Board Support Package)等模块,而BSP层的存在使VxWorks可以方便地移植到各种硬件平台。在目前的嵌入式操作系统市场,VxWorks占据着80%以上的市场份额,广泛地应用于通信、消费电子、交通运输、工业控制、航天航空等领域。

二、 VxWorks的多任务通信机制

  通常,在一个实时系统中,存在着多个并发的任务来协同实现系统的功能,操作系统必须为这些任务提供快速且功能强大的通信机制。在VxWorks系统中,有信号量(semaphore)、消息队列(message queue)、管道(pipe)、事件(event)等通信机制,对一个系统开发人员来说,如何合理地使用这些通信机制,是系统能够长期高效、可靠、安全运行的关键。

1 信号量(semaphore

  在VxWorks种,信号量是提供任务间同步和互斥的最快速、开销最小的机制,VxWorks有三种不同类型的信号量:

 (1 二进制信号量:可用于2个任务之间的同步工作。如任务A必须在任务B完成特定的动作以后才能进行,在这种情况下,任务A可以获取信号量而处于阻塞(pend)状态,任务B在完成特定的动作后释放该信号量。一般来说二进制信号量适用于一对一的任务之间的同步。

 (2 互斥信号量:主要用于任务之间共享数据区的互斥保护,具有优先级反转、安全删除、递归等特性。在有2个或2个以上的任务共享一个数据区的时候,必须使用互斥机制进行保护。

 (3 计数器信号量:类似于二进制信号量,但是对信号量的释放、获取有计数功能,而二进制信号量则只有01两种状态。

  VxWorks提供了一组管理信号量的函数接口供开发者使用,包括创建、删除、获取、释放等。
虽然信号量具有快速、开销小的优点,但也有它的局限性,首先它无法提供额外的信息,其次对于一个任务必须与多个任务进行同步的情况,信号量也无能为力。因此在许多场合,信号量必须与其它通信机制配合使用来完成任务之间的通信。

2 消息队列(message queue

  消息队列是VxWorks提供的单个CPU中的任务之间通信的主要机制之一。消息队列允许基于FIFO或基于任务优先级方式排队消息,一个消息队列的消息数目和消息长度可以由开发者在创建消息队列时指定。在理论上,VxWorks允许多个任务向同一个消息队列发送消息,或者从同一个消息队列接收消息;而在实际应用中,一般来说只有一个任务从消息队列接收消息,有一个或多个任务发送消息,即这个消息队列有多个生产者,而只有一个消费者。消息队列时单向的,对于需要进行双向通信的两个任务,必须使用两个消息队列。消息队列非常适合于Client-Server结构的任务之间的通信,如图一,任务Client1Client2都需要任务Server的服务,它们通过消息队列“Request Queue”向任务Server发送请求和参数,任务Server处理请求后分别通过“Reqpy Queue 1”“Reqpy Queue 2”向这两个任务返回结果。

2004113859836163.gif

图一 Client-Server 任务之间使用消息队列进行通信

  在VxWorks中,消息队列是一种代价比较高的一种通信机制,因此在使用时应该使消息的长度尽量短,而且应避免在需要十分频繁通信的场合使用消息队列。另外消息队列中的消息是排队的,即使是完全相同的消息,后面的消息也不会覆盖前面的消息。

3、管道(pipe

  在VxWorks中,管道是一种通过虚拟的I/O设备来实现的消息队列通信机制。使用函数pipeDevCreate()pipeDevDelete()来生成和删除管道,管道一经生成后,任务之间就可以使用标准I/O操作主要是read()write()进行通信。管道的优点在于它是一个I/O设备,与标准的VxWorks I/O一样,可以使用select机制,而有了select机制,一个任务很方便地使用多个异步I/O设备,如任务要处理同时从串口、管道、socket接收到的数据,就可以使用select

4、事件(event

  在5.5版本之前,VxWorks并没有事件这一通信机制。事件(event) 最早出现在pSOS实时操作系统中,在风河公司收购了pSOS之后,从VxWorks 5.5之后,加入了事件机制,并在pSOS事件的基础上做了增强和改进。事件可用于任务和中断服务程序ISR之间、任务和任务之间、任务和VxWorks资源之间进行通信。任务用函数eventReceive()来接收它关心的事件,用eventSend()来向另一个任务发送事件。

  VxWorks资源主要是指信号量和消息队列,一个任务要想从VxWorks资源接收到事件,必须先进行注册(register),那么当资源处于FREE状态时,会向注册过的任务发送一个事件。对于每一个VxWorks资源,最多只允许有一个任务注册。如对于消息队列,任务可以使用函数msgQEvStart()来进行注册,那么当有消息到达这个消息队列而又没有任务等待这个消息队列时,会向这个任务发送一个事件,表明消息队列可用。而对于信号量,可以用函数semEvStart()来进行注册。但必须注意的是,一个任务接收到资源发送的事件后,并不能保证这个任务能获取该资源,如获取信号量、从消息队列接收到消息。

  在VxWorks中,每一个任务都有一个32位事件寄存器,其中高8位由VxWorks系统保留,开发者可以使用低24位,其每一位表示一种事件,而事件的意义则完全有任务来定义,因此对于不同的任务,相同的位可能有不同的意义。而VxWorks并不对事件进行计数,而只表示该事件发生过,这与消息队列不同,因此接收事件的任务并不能知道接受到的事件发生的次数。

事件非常适合于一个任务必须与多个任务进行通信的场合,如任务A必须同时与任务B、任务C、任务D进行通信,其中任务B通过消息队列向任务A发送数据,其发送频率较低,它要求任务A必须及时进行处理;而任务C则只是向任务A指示一种状态,但频率很高;而任务D用来通知任务A释放动态申请的资源,并停止运行。在这种场合,事件机制能很好地解决问题。

三、 总结

  在VxWorks中,任务之间高效、经济地通信对整个系统的性能有很大的影响。一般来说并不能使用一种单一的通信机制就能解决问题,而是需要同时使用多种通信机制。另外,对任务的合理划分,又能简化任务之间的通信。总之,开发者必须通过足够的实践,才能充分利用VxWorks的各种通信机制,设计出高效、可靠的实时系统。

 

免责声明/版权申明 Passiontech

所有文章为网上搜集或私下交流学习之用,任何涉及商业盈利目的均不得使用,否则产生的一切后果由您自己承担!

本站仅仅提供一个观摩学习的环境,将不对任何资源负法律责任。所有资源请在下载后24小时内删除。

若无意中侵犯到您的版权利益,请来信联系我们,我们会在收到信息三天内给予处理!

 

 

 


参数资料:
VxWorks的多任务通信机制VxWorks,多任务通信机制
该文章系原厂商文章翻译,不通之处请参考原文
价格列表: VxWorks的多任务通信机制VxWorks,多任务通信机制
葩星订货号 订货号 产品名称 报价 品牌  
相关产品: VxWorks的多任务通信机制VxWorks,多任务通信机制
  咨询历史: