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.

LP-AM243: About Data Movement System

Part Number: LP-AM243

Hi,

I have been working on the DMSS structure on AM64x and Am243x SoCs for about 1.5 months. I am using mcu_plus_sdk_am243x_08_06_00_43 SDK and programming R5F0.0 processor with nortos.

Despite reading all the resources I could find and examining the sample codes, I could not find definitive answers to the questions below.

1-) I liken the PKTDMA unit to the Cycle Stealing Mode mentioned in the literature and the BCDMA mode to the Burst mode. Do you think this is true? I'm having a hard time understanding the difference between them. Could you briefly tell me the main difference between them and which applications I should use which one?

2-) Can I move data between two memory regions that I created using the PKTDMA unit within the DMSS architecture? All of the examples related to memory-to-memory data transfer in the SDK are made using BCDMA. If possible, can you share an example of moving data from memory to memory for PKTDMA as well?

3-) Can I use BCDMA unit with UART peripheral? If I can use; For example, is the data I receive with UART Rx stored in RINGACC until it reaches the size I specified? If so, is it possible to programmatically access the data in RINGACC without creating an interrupt when RINGACC is full? Can you share an example where I can access RINGACC with SDK functions?

4-) Do I absolutely have to use PDMA when I want to transfer data with any peripheral? Can I transfer data between two peripherals without CPU control using PDMA?

I would be glad if you can help.

Thank you,

Berlam KARLI

  • Hi Karli,

    1) I'm currently checking with Design team to get more info on Cycle Stealing mode for PKTDMA and Burst mode for BCDMA. Will get back with details by next week.

    2) I'm following up with Design team to check if this is possible and get back with details by next week. Can you please let me know the reason for choosing PKTDMA instead of BCDMA?

    3) Is there a specific reason for choosing BCDMA instead of PKTDMA for UART transfers? We haven't tried this and not sure if it's possible. Let me run this by Design team and confirm. RINGACC is used to hold the TR's for a UDMA channel and doesn't contain the actual data being transferred. The UART data being transferred doesn't go to the RINGACC.

    4) Sorry, I couldn't understand the question properly. Can you please rephrase?

    Regards,

    Ashwin

  • Hi Raj,

    2) I'm following up with Design team to check if this is possible and get back with details by next week. Can you please let me know the reason for choosing PKTDMA instead of BCDMA?

    I have no such requirement. I just tried to transfer data between two memory regions with PKTDMA to better understand the usage areas of the two structures and to compare the performance.

    3) Is there a specific reason for choosing BCDMA instead of PKTDMA for UART transfers? We haven't tried this and not sure if it's possible. Let me run this by Design team and confirm. RINGACC is used to hold the TR's for a UDMA channel and doesn't contain the actual data being transferred. The UART data being transferred doesn't go to the RINGACC.

    I guess I chose BCDMA because I don't fully understand the distinction between BCDMA and PKTDMA. Because what I want to do is read the data from UART with the help of DMA, buffer it in the structures in DMSS until it reaches 128 bytes, and then transfer it to the memory region I want with DMA. As I understand it, PKTDMA is used for transferring packets while BCDMA is used for transferring high-end data. So I thought I should use BCDMA. So if the data is not stored in RINGACC, for example, when I set PKTDMA or BCDMA to transmit when 64 bytes are received over UART, in which structure is the data stored in DMSS before the transfer takes place?

    4) Sorry, I couldn't understand the question properly. Can you please rephrase?

    For example, when I want to transfer DMA with peripherals such as UART, SPI, CAN, should I definitely use PKTDMA, can BCDMA structure be used for this purpose? 

    Thanks for be interested. I'm looking forward to your responses.

    B. Karli

  • And I want to ask: Is PDMA automatically used when I want to transfer DMA with BCDMA or PKTDMA between a peripheral and a memory unit?

    Thanks,

    B. Karli

  • Hi Karli,

    Apologies for the delay. Was OOO last week.

    2 &3) BCDMA is designed for Memory-to-Memory transfers and PKTDMA is designed for peripheral transfers. Please go ahead and use BCDMA for transfer between the memory regions and PKTDMA for UART Transfers. 

    3) Can you please let me know the reason for storing 128 bytes before writing it to buffer? For this use case, the UART FIFO should be configured appropriately to store the required bytes and generate DMA trigger once these bytes are received. DMA would just copy the data from UART to buffer once a trigger is received from UART.

    Regards,

    Ashwin