SPRUGR9H November 2010 – April 2015 66AK2E05 , 66AK2H06 , 66AK2H12 , 66AK2H14 , 66AK2L06 , AM5K2E02 , AM5K2E04 , SM320C6678-HIREL , TMS320C6652 , TMS320C6654 , TMS320C6655 , TMS320C6657 , TMS320C6670 , TMS320C6671 , TMS320C6672 , TMS320C6674 , TMS320C6678
In this mode, the PKTDMA is bypassed because there is no data to transmit (or the data has been placed in a shared memory buffer available to both the source and destination cores). Descriptors will be popped off the RX FDQs, and pushed directly onto the RX queues, causing the accumulators to act on them.
Using the same QM Initialization as shown in Section 6.2.1, and no required PKTDMA initialization, it is possible to pop directly from the RX FDQ, and push to the accumulation queues and achieve the same results. The descriptors can be uninitialized if desired (because the QM does not look at them), but they can be used to pass information from source to destination.
for (idx = 0; idx < 8; idx ++)
{
Uint32 tmp = pop_queue(7000);
host_pkt = (MNAV_HostPacketDescriptor *)(tmp);
host_pkt->type_id = MNAV_DESC_ID_HOST;
host_pkt->buffer_ptr = (Uint32)buffers; //this can point to a shared buffer
host_pkt->next_desc_ptr = NULL;
push_queue(712, 1, 0, tmp);
tmp = pop_queue(7001);
mono_pkt = (MNAV_MonolithicPacketDescriptor *)(tmp);
mono_pkt->type_id = MNAV_DESC_ID_MONO;
push_queue(32, 1, 0, tmp);
}
/* Burn some time for the accumulators to run. */
testpass = 0;
for (idx = 0; idx < 20000; idx ++)
{
testpass = idx;
}