RTOS流和消息缓冲器
[ 任务间通信和同步 ]
介绍
流缓冲区是 RTOS任务 的RTOS任务,并且是任务通信原语的中断。与大多数其他FreeRTOS通信原语不同的是,它们针对单读卡器单写入器方案进行了优化,例如将数据从中断服务例程传递到任务,或从双核CPU上的一个微控制器核心传递到另一个微控制器核心。数据通过复制传递 - 数据由发送方复制到缓冲区中,并通过读取方式从缓冲区中传出。流缓冲区传递连续的字节流。消息缓冲区传递可变大小但离散的消息。消息缓冲区使用流缓冲区进行数据传输。
重要提示:在FreeRTOS对象中,流缓冲区实现(消息缓冲区实现,因为消息缓冲区建立在流缓冲区之上)是唯一的,假定只有一个任务或中断将写入缓冲区(作者),并且只有一个任务或中断将从缓冲区(读取器)读取。作者和读者是不同的任务或中断是安全的,但与其他FreeRTOS对象不同,具有多个不同的作者或多个不同的读者是不安全的。如果要存在多个不同的作者,那么应用程序编写者必须将每个调用放到写API函数(如 xStreamBufferSend()),并使用0的发送块时间。同样,如果要存在多个不同的阅读器,则应用程序编写者必须将每个调用放置在关键部分内的读取API函数(如xStreamBufferReceive()),并使用接收块时间为0。