I have some memory to memory EDMA code which uses the EDMA3_LLD, v02.11.04.01 which works perfectly on my OMAP L138, but doesn't seem to work properly on the C6747 core of a DM8148.
The symptom is as follows: I reserve my channel, I set up the PaRAM to transfer from DDR to a buffer in L2, I start the transfer, and the PaRAM decrements down to 0, but the memory transfer just doesn't happen, i.e., the destination memory just doesn't change even though the PaRAM indicates that we have incremented through the transfers.
The transfer is very simple: a block of contiguous memory using ACNT=0xA00, BCNT=1, and CCNT=1. I set up my PaRAM like so and copy it into the right place using the LLD structures and routines,
paramSet struct EDMA3_DRV_PaRAMRegs {...} (Hex) 0x1081E110
opt unsigned int 0x0010E000 (Hex)0x1081E110
srcAddr unsigned int 0xB3D42380 (Hex)0x1081E114
aCnt unsigned short 0x0A00 (Hex) 0x1081E118
bCnt unsigned short 0x0001 (Hex) 0x1081E11A
destAddr unsigned int 0x1081E1A8 (Hex)0x1081E11C
srcBIdx short 0x0000 (Hex) 0x1081E120
destBIdx short 0x0000 (Hex) 0x1081E122
linkAddr unsigned short 0xFFFF (Hex) 0x1081E124
bCntReload unsigned short 0x0000 (Hex) 0x1081E126
srcCIdx short 0x0000 (Hex) 0x1081E128
destCIdx short 0x0000 (Hex) 0x1081E12A
cCnt unsigned short 0x0001 (Hex) 0x1081E12C
reserved short 0x0000 (Hex) 0x1081E12E
After I copy it to the PaRAM, the appropriate PaRAM memory looks like,
8010E000
B3D42380
00010A00
1081E1A8
00000000
0000FFFF
00000000
00000001
and after I start the transfer, that PaRAM slot goes to
00000000
00000000
00000000
00000000
00000000
0000FFFF
00000000
00000000
which is what I associate with a "finished" transfer, but the destination memory in L2 (at 0x1081E114) is unchanged!
Is there anything obvious I have done wrong? Is there some other step I can take to debug this?
Thanks,
Jay