|
|
|
|||||
|
|
作者 Ray RTEMS版权所有,转载请注明来源www.rtems.net,作者Ray 14.1: 介绍消息管理器提供任务间通信和使用 RTEMS 消息队列同步的能力。由消息管理器提供的函数是: rtems_message_queue_create- 创建一个消息队列 rtems_message_queue_ident- 获取消息队列的 ID标识 rtems_message_queue_delete- 删除一个消息队列 rtems_message_queue_send- 将消息放入消息队列的尾部 rtems_message_queue_urgent- 将消息放入消息队列的前面 rtems_message_queue_broadcast- 对一个队列广播多个个消息 rtems_message_queue_receive- 接受来自消息队列的消息 rtems_message_queue_get_number_pending- 获取队列上的消息个数 rtems_message_queue_flush- 清空消息队列上的所有消息 14.2: 背景知识14.2.1 : 消息消息是一个可变长度缓冲区,用于存储任务间通信的信息。 消息的长度和信息是用户定义的,可以是是真实的数据,指针, 或为空。 14.2.2 : 消息队列消息队列允许在任务或者ISR之间传递信息。消息队列能包含零个或者多个消息。通常,任务使用 rtems_message_queue_send 函数按照的 FIFO次序收发消息。此外,rtems_message_queue_urgent 函数可以将消息放在队首。 任务间可以通过消息队列实现任务间的同步。任务等待消息的方式有轮询和死等两种。 消息的最大长度在消息队列中定义。 14.2.3 : 消息队列属性集合和RTEMS其他对象相同,消息队列属性也是用属性分量构造的: RTEMS_FIFO- 任务按照 FIFO 等候 (默认) RTEMS_PRIORITY- 任务按照优先级等候 RTEMS_LOCAL- 本地消息队列 (默认) RTEMS_GLOBAL- 全局消息队列 属性 RTEMS_DEFAULT_ATTRIBUTES 用于代表系统默认属性。 下面是构造attribute_set参数的例子: 如果需要创建一个本地消息队列,获取消息的任务按照优先级排序。 那么rtems_message_queue_create函数的attribute_set参数可以是 RTEMS_PRIORITY 或者 RTEMS_LOCAL|RTEMS_PRIORITY 。如果构建全局的按照优先级排序的消息队列,那么attribute_set参数就是 RTEMS_GLOBAL|RTEMS_PRIORITY 。 14.2.4 : MESSAGE_QUEUE_RECEIVE选项rtems_message_queue_receive函数的接受选项可以是: RTEMS_WAIT- 任务将会等候一个消息 (默认) RTEMS_NO_WAIT- 任务不等候,直接返回 可以使用RTEMS_DEFAULT_OPTIONS表示缺省的选项。 14.3 消息队列操作
|
|||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
嵌入式软硬件设计咨询 8位
16位 32位 64位 RISC DSP |
||||||||||||||||
| 2004 RTEMS.NET 版权所有 |
||||||||||||||||