[转帖]任务之间传输数据的最佳方法是什么?
你好,
我有一个小的问题。
可能是我认为难懂的,或者在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的输入数据的任务。
任务之间的一个简单例子是先进先出?
我找不到一个,对不起。
发表时间:2014年9月14日22:17:58