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.

SK-AM62A-LP: UDMA BCDMA AM62A74

Part Number: SK-AM62A-LP
Other Parts Discussed in Thread: AM62A74, AM6442, AM62A7

Tool/software:

Hello TI dev,

I am trying to develop a project to enable data transfer from ADC to DSP(AM62A74) via GPMC.

First, I tried to develop a simple code to transfer data from source buffer to destination buffer using BCDMA. The below project was taken from UDMA example in MCU-SDK v10. The default setting of data transfer is given in 4D data block transfer. With a default setting (CSL_UDMAP_TR_FLAGS_TYPE_4D_BLOCK_MOVE_REPACKING_INDIRECTION), it worked properly. However, the given data I am working on is a 3D data. I changed from CSL_UDMAP_TR_FLAGS_TYPE_4D_BLOCK_MOVE_REPACKING_INDIRECTION to CSL_UDMAP_TR_FLAGS_TYPE_3D_DATA_MOVE to enabling the 3D data transfer. However, with the modification, the program did not execute. I commented out all related to 4D data block and still could not display data transfer. Could you please let me know what I should do? Please enlighten me on this issue. Thank you.

 empty_am62ax-sk_c75ss0-0_freertos_ti-c7000.zip

Regards,

Key

  • Hello Key,

    I am looking at your queries and you may expect reply in one or two days .

    Regards,

    Anil.

  • Hello Key,

    The MCU+SDK example can support all dimension transfers .

    My suggestion is that if you want to make the 3D transfer, then you can only configure the icnt0,icnt1 and icnt2 parameters and similarly configure dim counts. If you want a 1D transfer, then configure only the icnt0 and dim0 conts and keep the other count values as 1.

    You can check the chapter below for more details about the dimension transfer.

    Regards,

    Anil.

  • Hello Anil,

    Thank you for this useful information. I have another question regarding number of bytes to be transferred. I am planning to transfer data size of 2 bytes with a N-size of length. Should I adjust icnt0 and icnt1 only and leave icnt2 and icnt3 to 1? I suppose there is another parameter called fmtflag  (0x00000000) which indicates 1 byte per element in one transfer. Should I also modify that value as well?

    Regards,
    Key

  • Hello Key,

    If you want to transfer data of 2 bytes with N size length, then you can configure icnt0 and icnt1 only and keep icnt2 and icnt3 to 1.

    Don't need to change fmtflag settings.

    And please look at the above chapter in the TRM and you will get all the clarifications and one more thing you can configure here icnt values to till 64KB, then N = 64KB only.

    Regards,

    Anil.

  • Hello Anil,

    Thank you for this information. Recently, I found a thread regarding triggering UDMA using GPIO interrupt on am6442 on r5 core. https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1378150/faq-how-to-trigger-dma-with-the-help-of-gpio-on-am64x-am243-and-am62x-devices

    1. Is it similar if we want to apply the similar way on am62a7 c75x core? Should we use interrupt aggregator to convert a local gpio interrupt event to a global in order to be readable by UDMA and start data transfer from peripheral device address? My goal is to enable gpio interrupt to trigger UDMA data transfer which I set gpio trigger at fall edge. 

    2. In current example of GPIO interrupt provided in MCU_SDK v10, the src_id and dst_id are the same (TISCI_DEV_MAIN_GPIOMUX_INTROUTER0), src_index is CSLR_MAIN_GPIOMUX_INTROUTER0_IN_GPIO0_GPIO_BANK_1 and dst_host_irq is GPIOMUX_INTROUTER_OUTP (15). Should I change dst_id  to TISCI_DEV_DMASS0_BCDMA_0 or TISCI_DEV_DMASS0_INTAGGR_0 to enable the efficient data transfer after gpio interrupt?

    Regards,

    Key.

  • Hello Key ,

    Please raise new threads for new queries. This would be helpful for other customers as well.

    1. Is it similar if we want to apply the similar way on am62a7 c75x core? Should we use interrupt aggregator to convert a local gpio interrupt event to a global in order to be readable by UDMA and start data transfer from peripheral device address? My goal is to enable gpio interrupt to trigger UDMA data transfer which I set gpio trigger at fall edge. 

    The steps are there in the FAQ need to be followed as the same for AM62A as well.

    Can you please share details about the source address and destination address ? You wanted to transfer data from which peripheral memory to which memory ? which GPIO pin  you want to use in the application ?

    In current example of GPIO interrupt provided in MCU_SDK v10, the src_id and dst_id are the same (TISCI_DEV_MAIN_GPIOMUX_INTROUTER0), src_index is CSLR_MAIN_GPIOMUX_INTROUTER0_IN_GPIO0_GPIO_BANK_1 and dst_host_irq is GPIOMUX_INTROUTER_OUTP (15). Should I change dst_id  to TISCI_DEV_DMASS0_BCDMA_0 or TISCI_DEV_DMASS0_INTAGGR_0 to enable the efficient data transfer after gpio interrupt?

    In your use case, you need to transfer data based on the different gpio pins and then configure the src ID and src I'd index and dst id and keep everything is same .

    Regards,

    Anil.

  • Hello Anil,

    The source address and destination is the same configuration from the above link (src: GPMC and dst: buffer). Currently, we used GPIO0_31 for the GPIO interrupt pin.

  • Hello Key,

    In that case, the above example can work for your use case and make sure that before writing the code you see the gPMC interrupts and MAIN GPIO routers interrupts are routed to the c75x core or not. If these interrupts are not routed to the C75X core, then you can't make the application work.

    You can check all the details in the interrupt chapter and connectivity table chapters  in the TRM.

    Regards,

    Anil.

  • Hello Anil,

    I will open a new thread. Thank you.