下载 FreeRTOS
 

出色的 RTOS & 嵌入式软件

内核
最新资讯
简化任何设备的身份验证云连接。
利用 CoAP 设计节能型云连接 IoT 解决方案。
11.0.0 版 FreeRTOS 内核简介:
FreeRTOS 路线图和代码贡献流程。
使用 FreeRTOS 实现 OPC-UA over TSN。

RTOS 流缓冲区 & 消息缓冲区
[任务间通信和同步]


简介

流缓冲区是 RTOS 任务到 RTOS任务,以及中断到任务的 通信原语。 与其他大多数 FreeRTOS 通信原理不同,它们 针对单个读取者单个写入者场景进行了优化,例如 将数据从中断服务程序传递到任务,或在双核 CPU 上从一个微控制器内核 传递到另一个内核。 数据通过复制传递,数据由发送方复制到缓冲区中, 并通过读取从缓冲区中复制出来。

流缓冲区传递连续的字节流。 消息缓冲区传递 大小可变但离散的消息。 消息 缓冲区使用流缓冲区进行数据传输。

重要提示 : 在 FreeRTOS 对象中独一无二的是, 流缓冲区 实现(消息缓冲区实现也是如此,因为消息缓冲区 构建在流缓冲区之上)假定只有一个任务或 中断会写入缓冲区(写入者), 并且只有一个任务或中断将从缓冲区读取(读取者)。 写入者和读取者可以是不同的任务或中断,这样是安全的, 但不同于 其他 FreeRTOS 对象,具有多个写入者或读取者 并不安全。 如果有多个不同的写入者, 则应用程序编写者必须将每个 写入 API 函数的调用(如 xStreamBufferSend())放在一个临界区中, 并以 “0” 为发送阻塞时间。 同样, 如果存在多个不同的读取者,那么应用程序编写者必须将 每个读取 API 函数的调用(如 xStreamBufferReceive()) 放在临界区中,并使用接收阻塞时间为 0。


延伸阅读

以下页面更详细地描述了流缓冲区和消息缓冲区, 并分别提供了使用它们来实现中断到任务和处理器内核 到处理器内核通信的示例。

有关流缓冲区的更多信息......
有关消息缓冲区的更多信息......
使用消息缓冲区进行内核到内核通信的博客......









Copyright (C) Amazon Web Services, Inc. or its affiliates. All rights reserved.