RTOS实现双核MCU消息通信

将数据发送到流缓冲区的代码:

从流缓冲区读取数据的代码:

如图箭头所示,其中发送和接收任务位于不同的MCU内核上:


(资料图)

接收任务尝试从空的消息缓冲区中读取数据,并进入阻止状态以等待数据到达。

发送任务将数据写入消息缓冲区。

sbSEND_COMPLETED()在正在执行接收任务的内核中触发一个中断。

但是,要考虑有两个或更多消息缓冲区的情况,ISR必须首先确定哪个消息缓冲区包含数据。

如果消息缓冲区的数量很少,则有几种方法可以实现:

如果硬件允许,则每个消息缓冲区可以使用不同的中断线,从而使中断服务程序和消息缓冲区之间保持一对一的映射。

中断服务例程可以简单地查询每个消息缓冲区以查看其是否包含数据。

使用sbSEND_COMPLETED()的实现:

中断服务例程从控制消息缓冲区中读取包含数据的消息缓冲区的句柄,然后将该句柄传递给xMessageBufferSendCompletedFromISR()API函数以取消阻止接收任务,该任务现在可以从缓冲区读取,因为缓冲区不再存在空的。

标签:

又一轮山火烟雾正抵达美国 加拿大多地下星期或迎来异常高温 焦点热议
<< 上一篇
最后一页
下一篇 >>
  • 精心推荐