在看multicore navigator有关文档和代码时,关于收发队列是如何关联起来的不清楚。descriper是如何从发队列到收队列的?在配置descriper和发对列时没有看到地址或者类似的东西指向特定的收队列,如果有多个收发队列,之间是怎么区分的,descriptor怎么知道该到哪里去?用的例子是c6678 驱动中pa_emac_example。
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.
在看multicore navigator有关文档和代码时,关于收发队列是如何关联起来的不清楚。descriper是如何从发队列到收队列的?在配置descriper和发对列时没有看到地址或者类似的东西指向特定的收队列,如果有多个收发队列,之间是怎么区分的,descriptor怎么知道该到哪里去?用的例子是c6678 驱动中pa_emac_example。
这个rxflow是在收端制定的还是在descriptor上定义的?在Host packet descriptor上没有看到定义rxflow的域啊?
您好!
1. 程序初始化时候配置好RxFlow,
For loopback PKTDMA modes (i.e. infrastructure cases), the Rx flow is specified in the
Tx descriptor, in the SOURCE_TAG_LO field. The PKTDMA will pass this value to the
streaming I/F as flow index.
In non-loopback cases, the Rx flow is specified in the packet
info structure of the Streaming I/F.
In the event no Rx flow is specified, the Rx DMA will use Rx flow N for Rx channel N.
2.你只需在RxFlow中配置好RxQ, Rx DMA 会将decriptor 放到指定的queue中;无须手动编辑
1,确实在文档中看到了这一段,但是还是有些不解。首先SOURCE_TAG_LO field和the packet
info structure of the Streaming I/F在TX descriptor中似乎是一段;其次,我用的例子是PA_EMAC EXAMPLE,其中SOURCE_TAG_LO field这个域并没有配置,而是在PA内部有申明。是不是RXFLOW的配置还和具体的外设有关?另外,Streaming I/F具体怎么解释?
2,在Rxflow的配置中找到了有关RXQ的配置,但我所用的例子PA_EMAC EXAMPLE仍有手动将完成操作的descriptor手动PUSH回RXFQ的语句
/* Reset the buffer lenght and put the descriptor back on the free queue */
pHostDesc->buffLen = pHostDesc->origBufferLen;
Qmss_queuePush (gRxFreeQHnd, (Ptr)pHostDesc, pHostDesc->buffLen, SIZE_HOST_DESC, Qmss_Location_TAIL);
这是为什么?
谢谢~~~
在PA的例子里面,收到的RX报文是需要软件处理的,在软件处理结束以后,再由软件推送到FreeQ。如果自动回收,软件在什么时候通过什么方式能够处理收到的数据呢?:)
这里列举了三种情况,loopback、no loopback和no flow,这三种情况有什么区别么,loopback是在做回环么?