This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

C6657核间数据传输准确性问题



TI工程师:

你们好!我想在C6657的两核之间传输一张图片,由Core0发送,Core1处理该图片。现在我在单核中执行处理程序得到了想要的结果,但是加上两核之后结果发生了错误,而且对同样一张图片做相同的处理,每次得到的结果都有不同,所以我怀疑在核间通信的时候数据发生了错误。

我的核间通信是用的messageQ实现的,由于一张图片数据较大,无法将每一像素打印出来比较,所以有办法能确保核间数据传输不会出错吗?我参考一些例程,发现在messageQ_put之前有一些Cache_wb的操作,请问这是必须的吗?有什么用?

  • 问题更新:

    之前有误差的情况,当core1在进行处理时,core0在进行网络传输。之后我更改了程序,将网络传输等到core1处理完在进行,这样得到的结果就基本上准确了。请问两个核同时工作的情况会互相影响吗?如果会,可以消除这种影响吗?

  • 要保证数据开始处理前,数据已经传输完成,如果对同一块数据同时进行传输及处理,传输还未完成就处理,这肯定是有问题的。可以在数据传输完成后给对端一个通知,对端再开始处理。还有对同一块的数据处理,如果数据位于共享memory,则收发端都需要手动维护cache一致性,如在发送端,在发送数据前需要执行cache writeback,在接收端则需要执行cache invalid。