导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→[转帖]任务之间传输数据的最佳方法是什么?[liufengzhong]

 *第56153篇: [转帖]任务之间传输数据的最佳方法是什么?

  
楼 主:liufengzhong 2014年9月14日22:17
 [转帖]任务之间传输数据的最佳方法是什么?
你好,

我有一个小的问题。
可能是我认为难懂的,或者在XC还没有足够理解。

我需要一个系统witch从一个界面(10 mhz 8位并行)获得数据。
这些数据总是在256字节的块。 
这个数据块进入一个fifo和2。 任务要过滤一些数据块。 
然后进入过滤数据块2。 先进先出。 
3nd任务获取数据并通过SPI发送这些数据。 

我如何能够在XC下做的最好?

FIFO系统是最好的吗?

回答:

你好,

10 mb每秒(80 mb)XMOS不是那么快,所以这些数据率很容易处理。

如果你接收从一个任务和发送256字节缓冲区,这可能没有意义通过渠道发送的数据块,这将意味着你的处方的任务块同时传输缓冲区。 只有2 kb的数据和渠道运行在100年代mbps,但你可能会阻止几微秒。 10 mhz,假设常规数据,数以万计的错过了转移。

一个这样做的方法是发送消息和指向缓冲区的指针。 因此,rx任务regulalrly接待完成后数据和手,在一个完整的缓冲区。 有两个缓冲区将意味着您可以填满一个同时下游任务清空。

我编程指南的第13节显示了一个双缓冲的例子使用移动指针(这是一个安全的方式通过共享内存的指针在XMOS系统)。

(文档)(B). pdf

我推荐你开始. .


回答2:
你好,

对不起,当我听到你谈论接收的数据块,我自然以为你想要一个完整的缓冲区指针。

是的一个FIFO的工作,当然这也是很容易做到的。 在XMOS,您通常分配任务上的核心。 例如,您的I / O接收机任务运行在一个核心,和你的消费者任务运行在另一个地方。 他们通常是通过渠道或连接(新XC)接口。 如果他们通过缓冲区,然后他们也会共享内存。

因为这两个任务运行在不同的逻辑核心,他们需要并行运行,连接它们之间delcared(即。 频道/接口)。 所以FIFO可能看起来有点不同于手臂,因为你有人性讲堂沟通。 

我们这里有一个FIFO的例子使用接口

还有另外一个例子,两个核之间的FIFO(曾经是调用线程):

希望有帮助。

回复:

一个正常的FIFO不工作吗?

在一个ARM在C中,这将是我的正常方式。

这个例子可以输入和过滤器之间的工作任务。 但我的SPI的任务是一个奴隶,我不能交换缓冲区,因为我不能说当主人要求的数据。 那就是为什么我需要一个FIFO。

过滤器的任务是收集只有2 - 5%的SPI的输入数据的任务。

任务之间的一个简单例子是先进先出?

我找不到一个,对不起。


>>>>>>对该主题发表你的看法

本主题贴数1,分页: [第1页]


[上一篇主题]:[转帖]无法枚举HSETT程序吗

[下一篇主题]:[转帖]使用xTIMEcomposer自动化构建