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.

Is that possible to send ACNT*BCNT in A-Synchronized transfer when using EDMA?

Hello everyone

I am trying to send 65536 bytes data from continuous address in DDR to L2 SRAM. At the beginning, I plan to use EDMA 0 in A-Synchronized transfer. Because of ACNT is a 16-bit unsigned value with valid values between 0 and 65535. So I divided that data stream into 64*1024 bytes. That is ACNT=1024. BCNT=64, CCNT=1. However, the transmission is not successful (I cannot get IPB bit set). According to the below thread, it said that :"in the case of A-sync, only ACNT bytes of data is transferred". I don't understand that why in the A-Synchronized transfer mode only ACNT can be transferred.

 

Just like the above thread said, I can send ACNT=65525, BCNT=1 successfully. And I can make transfer successfully too, if I program EDMA in AB-Synchronized mode with ACNT=1024, BCNT=64, CCNT=1. 

The following figures shows the configuration of A-Synchronized mode and AB-Synchronized mode in PaRAM, in which I want to transfer 64*1024 Bytes data. From my point of view, there is no difference in configuration in PaRAM of A or AB synchronized mode if I just want to transfer one frame wiht multiply arrays data, link ACCNT=x, BCCNT=y, CCNT=1.

Thanks Xining

  • Xining Yu said:
    "in the case of A-sync, only ACNT bytes of data is transferred". I don't understand that why in the A-Synchronized transfer mode only ACNT can be transferred.

    The difference between A-sync and AB-sync is the amount of data that gets transferred in response to the corresponding event.  For A-sync, ACNT bytes are transferred.  For AB-sync, ACNT*BCNT bytes are transferred.  This is how the hardware was defined to behave.  So why can only ACNT bytes be transfered for an A-sync transfer?  Because that's how we designed it to work!  And that's the very definition of "A-sync".

  • Thanks for your replying, Brad.

    The following figure is a screen shoot of EDMA user manual. But why it shows that an A-synchronized transfer of 3 (CCNT) frames of 4 (BCNT) arrays of n (ACNT) bytes.

  • I have marked up that diagram here:

    The arrows that I highlighted are the key here...  Each arrow represents an event from the hardware.  In response to each event a transfer of ACNT bytes occurs because this is an A-sync transfer.  Also important here is the method in which the CIDX is measured.  Because each transfer results in a transfer of only ACNT bytes, the src address will be pointing to Array 3 as we finish transfering our frame (i.e. BCNT arrays).  Hence the index is measured relative to the start of that last array.  That's not important in your case since CCNT=1 and hence CIDX is a "don't care", but I thought I would mention it for your overall understanding.

    In the corresponding diagram for AB-sync you'll see that for each event we transfer the entire frame.  So there are far fewer events in that scenario to transfer all the data.

  • Hi Brad.
    I finally got it. Thanks for your clarification.

    Xining