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
