Hi,
My customer is struggling to use EDMA3 for memory to memory transfer.
Here is his scenario and configurations:
SRC address: 0x0280:0000
DST address: 0x82FB:F990
Data size(bytes): 0x0004:0668
- PaRAM Ch56 is used to transfer 0x2(ACNT) * 0x200(BCNT) * 0x101(CNT) = 0x40400 bytes.
- PaRAM Ch76 is used to transfer 0x1(ACNT) * 0x268(BCNT) * 0x1(CNT) = 0x268bytes.
- PaRAM Ch56 is chained to itself, so it repeats AB-synchronized transfer CNT times with one manual trigger.
- PaRAM Ch56 and Ch76 are linked, so additional 0x268bytes are transferred later on.
PaRAM configurations just before manual-trigger(ESRH |= (1 << 24))
Ch56 configuration (0x01C0 4700)
+ 0 : 0x01C3 8804 // OPT
+ 4 : 0x0280 0000 // SRC
+ 8 : 0x0200 0002 // BCNT | ACNT
+ C : 0x82FB F990 // DST
+10 : 0x002 0002 // DSTBIDX | SRCBIDX
+14 : 0x0000 4980 // BCNTRLD | LINK
+18 : 0x0400 0400 // DSTCIDX | SRCCIDX
+1C : 0x0000 0101 // RSV | CCNT
Ch76 configuration(0x01C0 4980)
+ 0 : 0x0104 C004 // OPT
+ 4 : 0x0284 0400 // SRC
+ 8 : 0x0268 0001 // BCNT | ACNT
+ C : 0x82FF FD90 // DST
+10 : 0x000 0000 // DSTBIDX | SRCBIDX
+14 : 0x0000 FFFF // BCNTRLD | LINK
+18 : 0x0000 0000 // DSTCIDX | SRCCIDX
+1C : 0x0000 0001 // RSV | CCNT
But the results were not expected.
Only 0x40400 bytes were sent, but additional 0x268 Bytes were not.
It seems PaRAM Ch56 was properly updated with Ch76 configuration, but it was not triggered.
Customer also tried with ITCCHEN=TCCHEN=1 in Ch56 configuration.
In this case, Ch56 PaRAM are all 0x0 except LINK=0xFFFF.
This looks uploaded Ch56 was done, but 0x268 Bytes were not transferred.
(BTW, EMR(EMRH), CCERR, CCSTAT and SER(SERH) are all 0x0000 0000.)
Q1) Is this possible to transfer data as customer expected?
(Additional manual trigger is needed to transfer the last 0x268bytes?)
Q2) Is there any mistake in customer’s configuration above?
Q3) How to transfer these data as customer wants?
Any example?
Thanks and regards,
Koichiro Tashiro