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 over GPMC in Fifo Mode

Other Parts Discussed in Thread: AM3359

Hi,

For the moment I'm using EDMA to transfer data frames from a FPGA FIFO (16 bit) to the AM3359. This is working very nicely with the following code:

    acnt = 2;
    bcnt = frameSize / 2;
    bcntrld = bcnt;
    ccnt = numberOfFrames;
    bidx = 2;
    cidx = frameSize;
    dstAddr = destAddress;

    edma_set_src( slot, FPGA_FIFO_ADDR, INCR, W16BIT );
    edma_set_dest( slot, dstAddr, INCR, W16BIT );
    edma_set_src_index(slot, 0, 0 );
    edma_set_dest_index(slot, bidx, cidx );


    edma_set_transfer_params(slot, acnt, bcnt, ccnt, bcntrld, ABSYNC );  

Unfortunately due to the FIFO, I loose one dimension as all my data is 32 bit wide.

Therefore I tried using the DMA FIFO mode as follows:

bidx = 32;

edma_set_src( slot, FPGA_FIFO_ADDR, FIFO, W16BIT );

edma_set_src_index(slot, bidx, cidx );

But this outputs only loads of 0's. I checked the manual, and there it mentions that not all peripherals support constant addressing mode.

1. Am I doing anything wrong?

2. Or is GPMC not supporting this option? I didn't find anything in favor or agains it.

3. How is this constant addressing mode affecting the GPMC communication. Does it change into burst mode or does it stay in single read/write mode?

Another question about DMA bugging me already for a while:

I transfer frames, each one with a 8-byte header and 64 byte payload. I would like to separate the headers from the payload and save it in a different memory location. Is this possible at all? Here a picture of the situation:

Kind regards

Isak Lichtenstein