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.

6678多核导航器



您好!

       我最近在6678evm上使用多核导航器完成这样一个功能:

       比如主核要给1核发数据,但数据很大,远远超过了1核L2的存储能力。这时主核将要发送的数据

       分成一个一个的包(用描述符代表),每包数据刚好能在1核L2存储,然后将描述符一次性压入事先

       指定好的发送队列,而不是1核每处理完一包数据再压下一个描述符。

       我现在想要做的就是希望,1核每次只收一包数据,将该包数据处理完后,然后继续接受下一包数据,

       直到所有的 数据都处理完。

       我现在遇到的问题就是:接收方描述符的缓冲区都必须在1核L2相同的地方,这样在接收数据时会导致

       后 一包数据覆盖了前一包数据,导致前一包数据的丢失。我想请教的是怎样避免这种覆盖,让1核完

       整的接收到所有的数据?或者说多核多核导航器可以做到接收方来控制数据的接收吗(我的控制是指接

      收方愿意的情况下才接收数据)?如果可以的话该怎么做?

  • 可以在接收侧RxFDQ中只准备一个Rx descriptor,同时使能Rx flow中RX_ERROR_HANDLING,这样在每次接收完一个包后,RxFDQ为空时会堵塞下一个包的接收,直到接收侧完成一个包的处理然后将描述符回收到RxFDQ中,此时才会继续接收下一个包,注意此时还需配置Navigator中的performance control register的timeout指定QMSS每次试图获取接收描述符的间隔。具体请参考navigator user guide。