This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

EDMA on DM8148



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

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