Other Parts Discussed in Thread: SYSCONFIG
Tool/software:
Hi,
My customer wants to use BCDMA for SPI transfer. He uses "udma_memcpy_interrupt.c" example in mcu_plus_sdk_am62x_11_00_00_16 as a starting point.
BTW, there is "mcspi_loopback_dma" example in SDK, which uses PKTDMA.
He wants to use BCDMA as he already uses it in another process and reuse the code.
He added necessary changes in sysconfig/codes and now data transfer to/from SPI seems working.
But no interrupt is generated after data transfer.
[Debug situation]
He checked "cqEventPrms" parameters in Udma_eventRegister() function and found
vintrNum is 2Ch (44). It means 44th Interrupt Aggregator Virtual Interrupt is assigned to the event.
He also checked intrStatusReg at 0x4802C020 for 44th interrupt and confirmed the value changed to 0x00000001 after DMA transfer completion.
But "cqEventPrms", coreIntrNum is 0h which supposed to be mapped for core interrupt.
He also checked "rmInitPrms" parameter in gUdmaDrvObj after Udma_init.
startBlkCopyUhcCh = 0x00000000 (0) numBlkCopyUhcCh = 0x00000000 (0) startBlkCopyHcCh = 0x00000000 (0) numBlkCopyHcCh = 0x00000000 (0) startBlkCopyCh = 0x00000012 (18) numBlkCopyCh = 0x00000006 (6) startTxUhcCh = 0x00000000 (0) numTxUhcCh = 0x00000000 (0) startTxHcCh = 0x00000000 (0) numTxHcCh = 0x00000000 (0) startTxCh = 0x0000000C (12) numTxCh = 0x00000006 (6) startRxUhcCh = 0x00000000 (0) numRxUhcCh = 0x00000000 (0) startRxHcCh = 0x00000000 (0) numRxHcCh = 0x00000000 (0) startRxCh = 0x00000012 (18) numRxCh = 0x00000006 (6) startMappedTxCh = {0x00000000,0x00000000,0x00000000,0x00000000} numMappedTxCh = {0x00000000,0x00000000,0x00000000,0x00000000} startMappedRxCh = {0x00000000,0x00000000,0x00000000,0x00000000} numMappedRxCh = {0x00000000,0x00000000,0x00000000,0x00000000} startMappedRing = {0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000} numMappedRing = {0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000} startFreeFlow = 0x00000000 (0) numFreeFlow = 0x00000000 (0) startFreeRing = 0x00000000 (0) numFreeRing = 0x00000000 (0) startGlobalEvent = 0x0000020D (525) numGlobalEvent = 0x00000080 (128) startVintr = 0x0000002C (44) numVintr = 0x00000012 (18) startIrIntr = 0x00000000 (0) numIrIntr = 0x00000012 (18) startC7xCoreIntr = 0x00000000 (0)
He thinks startVintr (44) is related to vintrNum. And startIrIntr (0) is related to coreIntrNum.
Questions:
Q1) First of all, is it possible to use BCMDA for SPI data transfer?
Q2) If an answer to Q1 is yes, what is the potential reason why DMA completion interrupt is not generated? Any debug suggestion?
Thanks and regards,
Koichiro Tashiro