SPRUGR9H November 2010 – April 2015 66AK2E05 , 66AK2H06 , 66AK2H12 , 66AK2H14 , 66AK2L06 , AM5K2E02 , AM5K2E04 , SM320C6678-HIREL , TMS320C6652 , TMS320C6654 , TMS320C6655 , TMS320C6657 , TMS320C6670 , TMS320C6671 , TMS320C6672 , TMS320C6674 , TMS320C6678
The following example code shows how to program Multicore Navigator’s various components for initialization and basic operation, at the register level. The functions and types referred to below are presented in full in the appendices. Also, functioning source code is available for this test.
This infrastructure example will use the queues shown in Table 6-1:
Queue Purpose | Host Descriptor | Mono Descriptor |
---|---|---|
TX Queue | 800 | 801 |
TX Free Descriptor Queue (FDQ) | 5000 | 5001 |
RX Queue | 712 | 32 |
RX Free Descriptor Queue (FDQ) | 7000 | 7001 |
Queues 5000, 5001, 7000, and 7001 will be pre-loaded at initialization with empty descriptors. During operation, descriptors are popped from 5000 and 5001, filled and pushed onto 800 and 801 by the host. This causes the QM to trigger the TX DMA to transfer the data to the RX DMA (via its loopback wiring). Once transmitted, the TX DMA will recycle the TX descriptors back to queues 5000 and 5001.
The RX flow registers will be programmed to cause the RX DMA to pop descriptors from queues 7000 and 7001 and push the incoming data to queues 712 and 32 respectively. Queue 712 is a high priority accumulation queue and 32 is a low priority accumulation queue, and the corresponding accumulator channels will be programmed to poll them. According to the accumulator programming, they will interrupt the host when descriptors arrive and have been popped from the RX queues and placed into the host’s memory area. The host then consumes the data and pushes the descriptors back onto queues 7000 and 7001.