TI中文支持网
TI专业的中文技术问题搜集分享网站

【Descriptor】 如何回收自动 link 的多个描述符

软件平台:CCS5.5

硬件平台:TMS320C6670 EVM

背景:调试 BCP 协处理器使用了一对多的特性,即在 PKTDMA 的 TX 端配置了一个描述符,RX 端则配置了多个描述符,根据项目需求,需要将描述符的 buffer 地址配置到外部存储,即DDR3上面,这些配置都已经做好后,测试数据OK。

现象:描述符回收不成功。

问题:如何正确回收配置的这些描述符,以便下次使用?

分配描述符的实现代码如下(简略版本):

hFDQ = Qmss_queueOpen (Qmss_QueueType_GENERAL_PURPOSE_QUEUE, FDQId, &isAllocated);

ReturnQ = Qmss_getQueueNumber (hGlblFDQ);

Qmss_queueOpen (Qmss_QueueType_GENERAL_PURPOSE_QUEUE, hGlblFDQ, &isAllocated);

for (i = 0; i < numDesc; ++ i)
{
if ((pCppiDesc = Qmss_queuePop (hGlblFDQ)) == NULL)
{
      break;
}

pCppiDesc = (Void*) (QMSS_DESC_PTR (pCppiDesc));

pDataBuffer = (uint8_t *) (dataBufferPool + buffSize*i);   //外部 DDR3 地址

Cppi_setData (Cppi_DescType_HOST, pCppiDesc, pDataBuffer, buffSize);

Cppi_setOriginalBufInfo (Cppi_DescType_HOST, pCppiDesc, pDataBuffer, buffSize);

Cppi_setReturnQueue (Cppi_DescType_HOST, pCppiDesc, ReturnQ);

Cppi_setPacketLen (Cppi_DescType_HOST, pCppiDesc, buffSize);

Cppi_linkNextBD (Cppi_DescType_HOST, pCppiDesc, NULL);

Qmss_queuePushDescSize (hFDQ, pCppiDesc, 256);

}

那么相应的回收描述符的操作,是要把上述分配的每个描述符的 data buffer指向 NULL 就可以了吗?

请 TI 工程师不吝赐教,感谢。

Bear Melon:

buffer地址不是随机分配的情况下,如何回收描述符?求助。

赞(0)
未经允许不得转载:TI中文支持网 » 【Descriptor】 如何回收自动 link 的多个描述符
分享到: 更多 (0)