Part Number: AM62D-Q1
Other Parts Discussed in Thread: 66AK2G12
Hi experts,
We are currently verifying DMA transfers between L2 and DDR on a C7x application.
The application used for this verification is a bare-metal application based on FreeRTOS SDK version 12.00.00, specifically the dmautils_autoinc_1d2d3d and swasrc_multichannel_playback examples.
We have confirmed that the DRU works correctly when it is operated by itself. However, when McASP is running and we perform a DMA transfer using the DRU inside the McASP receive interrupt handler, the EFR can only be read as 0 even after executing __get_indexed(__EFR, 0). As a result, the application cannot trap the DRU transfer completion event registered in the CLEC.
We have the following questions:
-
Although the TRM and C7X_SW include an overview of the DRU, is there any documentation that explains the DRU in more detail, including the differences from BCDMA/PKTDMA?
-
Are there any known errata related to DRU operation, such as DRU execution not being guaranteed within an interrupt context?
We checked both the device errata and the SDK errata, but could not find any applicable item. -
When using BCDMA for DMA transfers inside an interrupt routine, we could not achieve performance comparable to QDMA on the C66 core of the 66AK2G12. Therefore, we are considering using the DRU instead.
Our understanding is that the DRU is a C7x-dedicated engine and is therefore capable of faster data transfers. Is this understanding correct, or is there any misunderstanding?
Best regards,
O.H